ci: ignore third urls for e2e test

This commit is contained in:
YunYouJun 2025-07-15 01:48:51 +08:00
parent cf161b6d27
commit 4c0e5f9a6b
11 changed files with 50 additions and 26 deletions

8
e2e/config.ts Normal file
View File

@ -0,0 +1,8 @@
/**
* ignore when test
*/
export const abortUrls = [
'hitokoto.cn',
'utteranc.es',
'busuanzi.ibruce.info',
]

View File

@ -14,7 +14,7 @@ test.describe('Categories Page', () => {
searchParams.set('category', curCategory)
const url = `/categories?${searchParams.toString()}`
await page.goto(url)
await page.goto(url, { waitUntil: 'domcontentloaded' })
// .post-item
await expect(page.locator('.post-item')).toHaveCount(1)
// first post

View File

@ -7,7 +7,7 @@ test.use({
test.describe('Encrypted Post', () => {
test('encrypted post', async ({ page }) => {
await page.goto('/posts/encrypted-post')
await page.goto('/posts/encrypted-post', { waitUntil: 'domcontentloaded' })
await page.waitForSelector('.markdown-body')
await expect(page.locator('.decrypt-password-container')).toHaveCount(1)

View File

@ -1,15 +1,14 @@
import { expect, test } from '@playwright/test'
import { env } from '../env'
import { commonBeforeEach } from '../utils'
test.use({
baseURL: env['theme-yun'],
})
test.beforeEach(async ({ page }) => {
await page.goto('/')
})
test.describe('Frontmatter', () => {
commonBeforeEach()
test('posted & edited time', async ({ page }) => {
await page.goto('/posts/hello-valaxy')
await page.waitForSelector('.post-meta')

View File

@ -1,16 +1,16 @@
import { expect, test } from '@playwright/test'
import { env } from '../env'
import { commonBeforeEach } from '../utils'
test.use({
baseURL: env['theme-yun'],
})
test.beforeEach(async ({ page }) => {
await page.goto('/')
})
commonBeforeEach()
test.describe('Theme Yun', () => {
test('banner', async ({ page }) => {
await page.goto('/')
// refresh to trigger animation
await page.reload()
await page.waitForSelector('#yun-banner')
@ -24,10 +24,12 @@ test.describe('Theme Yun', () => {
// })
test('post list', async ({ page }) => {
await page.goto('/')
await expect(page.locator('.post-title-link').nth(0)).toHaveText('Hello, Valaxy!')
})
test('enter post', async ({ page }) => {
await page.goto('/')
await page.click('.post-title-link')
await page.waitForURL('/posts/hello-valaxy')
await expect(page.locator('h1')).toHaveText('Hello, Valaxy!')
@ -39,20 +41,10 @@ test.describe('Theme Yun', () => {
})
test('search', async ({ page }) => {
await page.goto('/')
await page.click('.yun-search-btn')
await expect(page.locator('.yun-search-input')).toHaveCount(1)
await page.click('.yun-search-btn')
await expect(page.locator('.yun-search-input')).toHaveCount(0)
})
})
test.describe('Theme Yun - Post', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/posts/hello-valaxy')
})
// new version deprecated
// test('sidebar', async ({ page }) => {
// await expect(page.locator('.sidebar')).toBeVisible()
// })
})

View File

@ -1,10 +1,13 @@
import { expect, test } from '@playwright/test'
import { env } from '../../env'
import { commonBeforeEach } from '../../utils'
test.use({
baseURL: env['theme-yun'],
})
commonBeforeEach()
test.describe('markdown footnote tooltip', () => {
test('visibility', async ({ page }) => {
await page.goto('/posts/hello-valaxy')

View File

@ -1,10 +1,13 @@
import { expect, test } from '@playwright/test'
import { env } from '../../env'
import { commonBeforeEach } from '../../utils'
test.use({
baseURL: env['theme-yun'],
})
commonBeforeEach()
test.describe('Markdown File Inclusion by @include', () => {
test('test/markdown-file-inclusion', async ({ page }) => {
await page.goto('/test/markdown-file-inclusion')

View File

@ -1,10 +1,13 @@
import { expect, test } from '@playwright/test'
import { env } from '../env'
import { commonBeforeEach } from '../utils'
test.use({
baseURL: env['theme-yun'],
})
commonBeforeEach()
test.describe('outline', () => {
test('long toc scroll', async ({ page }) => {
await page.goto('/posts/long-toc')

View File

@ -6,13 +6,12 @@ test.use({
baseURL: env['theme-yun'],
})
test.beforeEach(async ({ page }) => {
process.env.TZ = 'Asia/Shanghai'
await page.goto('/posts/date')
})
test.describe('Frontmatter', () => {
test.beforeEach(async ({ page }) => {
process.env.TZ = 'Asia/Shanghai'
await page.goto('/posts/date', { waitUntil: 'domcontentloaded' })
})
for (let i = 0; i < dateExamples.length; i++) {
const example = dateExamples[i]
test(`timezone format validation(${i}) ${example.date}`, async ({ page }) => {

View File

@ -1,10 +1,13 @@
import { expect, test } from '@playwright/test'
import { env } from '../env'
import { commonBeforeEach } from '../utils'
test.use({
baseURL: env['theme-yun'],
})
commonBeforeEach()
test.describe('TOC', () => {
test('toc generate', async ({ page }) => {
await page.goto('/posts/hello-valaxy')

14
e2e/utils/index.ts Normal file
View File

@ -0,0 +1,14 @@
import { test } from '@playwright/test'
import { abortUrls } from '../config'
export function commonBeforeEach() {
test.beforeEach(async ({ page }) => {
await page.route('**/*', (route) => {
const url = route.request().url()
if (abortUrls.some(abortUrl => url.includes(abortUrl))) {
return route.abort()
}
return route.continue()
})
})
}