feat: refactor page navigation in frontend tests to use gotoPage function
Some checks failed
ui-regression / playwright-regression (push) Failing after 6m54s
Some checks failed
ui-regression / playwright-regression (push) Failing after 6m54s
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { expect, test } from '@playwright/test'
|
||||
import { expect, test, type Page } from '@playwright/test'
|
||||
|
||||
import {
|
||||
getDebugState,
|
||||
@@ -9,12 +9,16 @@ import {
|
||||
waitForSubscriptionPopupReady,
|
||||
} from './helpers'
|
||||
|
||||
async function gotoPage(page: Page, url: string) {
|
||||
await page.goto(url, { waitUntil: 'domcontentloaded' })
|
||||
}
|
||||
|
||||
test.beforeEach(async ({ request }) => {
|
||||
await resetMockState(request)
|
||||
})
|
||||
|
||||
test('首页过滤、热门区和文章详情链路可用', async ({ page }) => {
|
||||
await page.goto('/')
|
||||
await gotoPage(page, '/')
|
||||
await waitForHomeInteractive(page)
|
||||
|
||||
await expect(page.locator('#home-results-count')).toContainText(/条结果/)
|
||||
@@ -33,31 +37,31 @@ test('首页过滤、热门区和文章详情链路可用', async ({ page }) =>
|
||||
await expect(page.getByRole('heading', { name: 'Playwright 回归工作流设计' })).toBeVisible()
|
||||
await expect(page.locator('.paragraph-comment-marker').first()).toBeVisible()
|
||||
|
||||
await page.goto('/categories/frontend-engineering')
|
||||
await gotoPage(page, '/categories/frontend-engineering')
|
||||
await expect(page.getByRole('heading', { name: '前端工程' })).toBeVisible()
|
||||
await expect(page.getByText('Astro 终端博客信息架构实战')).toBeVisible()
|
||||
|
||||
await page.goto('/tags/playwright')
|
||||
await gotoPage(page, '/tags/playwright')
|
||||
await expect(page.getByRole('heading', { name: 'Playwright', exact: true })).toBeVisible()
|
||||
await expect(page.getByText('Playwright 回归工作流设计')).toBeVisible()
|
||||
|
||||
await page.goto('/reviews')
|
||||
await gotoPage(page, '/reviews')
|
||||
await expect(page.getByText('《宇宙探索编辑部》')).toHaveCount(0)
|
||||
await page.goto('/reviews/4')
|
||||
await gotoPage(page, '/reviews/4')
|
||||
await expect(page.getByRole('heading', { name: '评价不存在' })).toBeVisible()
|
||||
|
||||
await page.goto('/reviews/1')
|
||||
await gotoPage(page, '/reviews/1')
|
||||
await page.getByRole('link', { name: '#年度最佳' }).click()
|
||||
await expect(page).toHaveURL(/\/reviews\?tag=%E5%B9%B4%E5%BA%A6%E6%9C%80%E4%BD%B3$/)
|
||||
await expect(page.getByText('《漫长的季节》')).toBeVisible()
|
||||
|
||||
await page.goto('/reviews/1')
|
||||
await gotoPage(page, '/reviews/1')
|
||||
await page.getByRole('link', { name: '动画' }).click()
|
||||
await expect(page).toHaveURL(/\/reviews\?type=anime$/)
|
||||
await expect(page.locator('#reviews-subtitle')).toContainText('动画')
|
||||
await expect(page.getByText('《漫长的季节》')).toBeVisible()
|
||||
|
||||
await page.goto('/reviews/1')
|
||||
await gotoPage(page, '/reviews/1')
|
||||
await page.getByRole('link', { name: '已完成' }).click()
|
||||
await expect(page).toHaveURL(/\/reviews\?status=completed$/)
|
||||
await expect(page.locator('#reviews-subtitle')).toContainText('已完成')
|
||||
@@ -65,7 +69,7 @@ test('首页过滤、热门区和文章详情链路可用', async ({ page }) =>
|
||||
})
|
||||
|
||||
test('文章评论、搜索和 AI 问答链路可用', async ({ page, request }) => {
|
||||
await page.goto('/articles/astro-terminal-blog')
|
||||
await gotoPage(page, '/articles/astro-terminal-blog')
|
||||
await waitForCommentsReady(page)
|
||||
|
||||
await page.locator('#toggle-comment-form').click()
|
||||
@@ -80,17 +84,17 @@ test('文章评论、搜索和 AI 问答链路可用', async ({ page, request })
|
||||
const commentState = await getDebugState(request)
|
||||
expect(commentState.comments.some((item: { author: string }) => item.author === 'Playwright Visitor')).toBeTruthy()
|
||||
|
||||
await page.goto('/search?q=playwright')
|
||||
await gotoPage(page, '/search?q=playwright')
|
||||
await expect(page.getByText('Playwright 回归工作流设计')).toBeVisible()
|
||||
|
||||
await page.goto('/ask')
|
||||
await gotoPage(page, '/ask')
|
||||
await page.locator('#ai-question').fill('这个博客主要写什么内容?')
|
||||
await page.locator('#ai-submit').click()
|
||||
await expect(page.locator('#ai-answer')).toContainText('Playwright 回归工作流')
|
||||
})
|
||||
|
||||
test('友链申请与订阅确认/偏好/退订链路可用', async ({ page, request }) => {
|
||||
await page.goto('/friends')
|
||||
await gotoPage(page, '/friends')
|
||||
|
||||
await page.locator('input[name="siteName"]').fill('Playwright Friend')
|
||||
await page.locator('input[name="siteUrl"]').fill('https://playwright-friend.example')
|
||||
@@ -103,7 +107,7 @@ test('友链申请与订阅确认/偏好/退订链路可用', async ({ page, req
|
||||
const friendState = await getDebugState(request)
|
||||
expect(friendState.friend_links.some((item: { site_name: string }) => item.site_name === 'Playwright Friend')).toBeTruthy()
|
||||
|
||||
await page.goto('/')
|
||||
await gotoPage(page, '/')
|
||||
await waitForHomeInteractive(page)
|
||||
await page.locator('[data-subscribe-form] input[name="displayName"]').fill('首页订阅用户')
|
||||
await page.locator('[data-subscribe-form] input[name="email"]').fill('inline-subscriber@example.com')
|
||||
@@ -129,25 +133,27 @@ test('友链申请与订阅确认/偏好/退订链路可用', async ({ page, req
|
||||
expect(latest).toBeTruthy()
|
||||
expect(latest.display_name).toBe('弹窗订阅用户')
|
||||
|
||||
await page.goto(`/subscriptions/confirm?token=${encodeURIComponent(latest.confirm_token)}`)
|
||||
await gotoPage(page, `/subscriptions/confirm?token=${encodeURIComponent(latest.confirm_token)}`)
|
||||
await expect(page.getByText('订阅已确认')).toBeVisible()
|
||||
|
||||
await page.goto(`/subscriptions/manage?token=${encodeURIComponent(latest.manage_token)}`)
|
||||
await gotoPage(page, `/subscriptions/manage?token=${encodeURIComponent(latest.manage_token)}`)
|
||||
await page.getByRole('textbox', { name: '称呼' }).fill('回归通知')
|
||||
await page.getByRole('button', { name: '保存偏好' }).click()
|
||||
await expect(page.locator('[data-manage-status]')).toContainText('偏好已保存')
|
||||
|
||||
await page.goto(`/subscriptions/unsubscribe?token=${encodeURIComponent(latest.manage_token)}`)
|
||||
await gotoPage(page, `/subscriptions/unsubscribe?token=${encodeURIComponent(latest.manage_token)}`)
|
||||
await page.getByRole('button', { name: '确认退订' }).click()
|
||||
await expect(page.locator('[data-unsubscribe-status]')).toContainText('成功退订')
|
||||
})
|
||||
|
||||
test('GEO 分享面板、AI 摘要块与 llms 入口可用', async ({ page, request }) => {
|
||||
test.setTimeout(120_000)
|
||||
|
||||
await patchAdminSiteSettings(request, {
|
||||
seoWechatShareQrEnabled: true,
|
||||
})
|
||||
|
||||
await page.goto('/')
|
||||
await gotoPage(page, '/')
|
||||
await waitForHomeInteractive(page)
|
||||
await waitForSubscriptionPopupReady(page)
|
||||
await expect(page.locator('head link[rel="alternate"][href$="/llms.txt"]')).toHaveCount(1)
|
||||
@@ -155,23 +161,23 @@ test('GEO 分享面板、AI 摘要块与 llms 入口可用', async ({ page, requ
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的站点摘要' })).toBeVisible()
|
||||
await expect(page.getByRole('button', { name: '微信扫码' }).first()).toBeVisible()
|
||||
|
||||
await page.goto('/about')
|
||||
await gotoPage(page, '/about')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的身份摘要' })).toBeVisible()
|
||||
await expect(page.getByText('身份主页')).toBeVisible()
|
||||
|
||||
await page.goto('/articles')
|
||||
await gotoPage(page, '/articles')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的归档摘要' })).toBeVisible()
|
||||
|
||||
await page.goto('/reviews')
|
||||
await gotoPage(page, '/reviews')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的评测摘要' })).toBeVisible()
|
||||
|
||||
await page.goto('/ask')
|
||||
await gotoPage(page, '/ask')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的问答页摘要' })).toBeVisible()
|
||||
|
||||
await page.goto('/friends')
|
||||
await gotoPage(page, '/friends')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的友链网络摘要' })).toBeVisible()
|
||||
|
||||
await page.goto('/articles/playwright-regression-workflow')
|
||||
await gotoPage(page, '/articles/playwright-regression-workflow')
|
||||
await page.getByRole('button', { name: '微信扫码' }).first().click()
|
||||
await expect(page.locator('[data-article-wechat-qr-modal]')).toHaveAttribute('aria-hidden', 'false')
|
||||
await expect(page.getByRole('heading', { name: '微信扫码分享' })).toBeVisible()
|
||||
@@ -180,12 +186,12 @@ test('GEO 分享面板、AI 摘要块与 llms 入口可用', async ({ page, requ
|
||||
await page.locator('[data-article-wechat-qr-close]').first().click()
|
||||
await expect(page.locator('[data-article-wechat-qr-modal]')).toHaveAttribute('aria-hidden', 'true')
|
||||
|
||||
await page.goto('/categories/frontend-engineering')
|
||||
await gotoPage(page, '/categories/frontend-engineering')
|
||||
await expect(page.getByRole('button', { name: '复制摘要' })).toBeVisible()
|
||||
|
||||
await page.goto('/tags/playwright')
|
||||
await gotoPage(page, '/tags/playwright')
|
||||
await expect(page.getByRole('button', { name: '分享摘要' })).toBeVisible()
|
||||
|
||||
await page.goto('/reviews/1')
|
||||
await gotoPage(page, '/reviews/1')
|
||||
await expect(page.getByRole('button', { name: '复制摘要' })).toBeVisible()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user