feat: update tag and timeline share panel copy for clarity and conciseness
Some checks failed
docker-images / resolve-build-targets (push) Successful in 7s
ui-regression / playwright-regression (push) Failing after 13m4s
docker-images / build-and-push (admin) (push) Successful in 1m17s
docker-images / build-and-push (backend) (push) Successful in 28m13s
docker-images / build-and-push (frontend) (push) Successful in 47s
docker-images / submit-indexnow (push) Successful in 13s
Some checks failed
docker-images / resolve-build-targets (push) Successful in 7s
ui-regression / playwright-regression (push) Failing after 13m4s
docker-images / build-and-push (admin) (push) Successful in 1m17s
docker-images / build-and-push (backend) (push) Successful in 28m13s
docker-images / build-and-push (frontend) (push) Successful in 47s
docker-images / submit-indexnow (push) Successful in 13s
style: enhance global CSS for better responsiveness of terminal chips and navigation pills test: remove inline subscription test and add maintenance mode access code test feat: implement media library picker dialog for selecting images from the media library feat: add media URL controls for uploading and managing media assets feat: add migration for music_enabled and maintenance_mode settings in site settings feat: implement maintenance mode functionality with access control feat: create maintenance page with access code input and error handling chore: add TypeScript declaration for QR code module
This commit is contained in:
@@ -109,11 +109,6 @@ test('友链申请与订阅确认/偏好/退订链路可用', async ({ page, req
|
||||
|
||||
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')
|
||||
await page.locator('[data-subscribe-form] button[type="submit"]').click()
|
||||
await expect(page.locator('[data-subscribe-status]')).toContainText('订阅')
|
||||
|
||||
await waitForSubscriptionPopupReady(page)
|
||||
await page.locator('[data-subscription-popup-open]').click()
|
||||
await expect(page.locator('[data-subscription-popup-panel]')).toBeVisible()
|
||||
@@ -123,10 +118,6 @@ test('友链申请与订阅确认/偏好/退订链路可用', async ({ page, req
|
||||
await expect(page.locator('[data-subscription-popup-status]')).toContainText('订阅')
|
||||
|
||||
const subscriptionState = await getDebugState(request)
|
||||
const inlineRecord = subscriptionState.subscriptions.find(
|
||||
(item: { target: string; display_name: string }) => item.target === 'inline-subscriber@example.com',
|
||||
)
|
||||
expect(inlineRecord?.display_name).toBe('首页订阅用户')
|
||||
const latest = subscriptionState.subscriptions.find(
|
||||
(item: { target: string; display_name: string }) => item.target === 'playwright-subscriber@example.com',
|
||||
)
|
||||
@@ -146,7 +137,32 @@ test('友链申请与订阅确认/偏好/退订链路可用', async ({ page, req
|
||||
await expect(page.locator('[data-unsubscribe-status]')).toContainText('成功退订')
|
||||
})
|
||||
|
||||
test('GEO 分享面板、AI 摘要块与 llms 入口可用', async ({ page, request }) => {
|
||||
test('维护模式开启后需要口令才能进入前台', async ({ page, request }) => {
|
||||
await patchAdminSiteSettings(request, {
|
||||
maintenanceModeEnabled: true,
|
||||
maintenanceAccessCode: 'staging-2026',
|
||||
})
|
||||
|
||||
await gotoPage(page, '/articles/astro-terminal-blog')
|
||||
await expect(page).toHaveURL(/\/maintenance\?returnTo=/)
|
||||
await expect(page.getByRole('heading', { name: /正在维护/ })).toBeVisible()
|
||||
|
||||
await page.locator('input[name="code"]').fill('wrong-code')
|
||||
await page.getByRole('button', { name: '进入站点' }).click()
|
||||
await expect(page).toHaveURL(/error=invalid/)
|
||||
await expect(page.getByText('口令不正确,请重新输入。')).toBeVisible()
|
||||
|
||||
await page.locator('input[name="code"]').fill('staging-2026')
|
||||
await page.getByRole('button', { name: '进入站点' }).click()
|
||||
await expect(page).toHaveURL(/\/articles\/astro-terminal-blog$/)
|
||||
await expect(page.getByRole('heading', { name: 'Astro 终端博客信息架构实战' })).toBeVisible()
|
||||
|
||||
await gotoPage(page, '/')
|
||||
await expect(page).toHaveURL(/\/$/)
|
||||
await expect(page.locator('#home-results-count')).toContainText(/条结果/)
|
||||
})
|
||||
|
||||
test('分享面板与 llms 入口可用', async ({ page, request }) => {
|
||||
test.setTimeout(120_000)
|
||||
|
||||
await patchAdminSiteSettings(request, {
|
||||
@@ -158,24 +174,22 @@ test('GEO 分享面板、AI 摘要块与 llms 入口可用', async ({ page, requ
|
||||
await waitForSubscriptionPopupReady(page)
|
||||
await expect(page.locator('head link[rel="alternate"][href$="/llms.txt"]')).toHaveCount(1)
|
||||
await expect(page.locator('head link[rel="alternate"][href$="/llms-full.txt"]')).toHaveCount(1)
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的站点摘要' })).toBeVisible()
|
||||
await expect(page.getByRole('button', { name: '微信扫码' }).first()).toBeVisible()
|
||||
|
||||
await gotoPage(page, '/about')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的身份摘要' })).toBeVisible()
|
||||
await expect(page.getByText('身份主页')).toBeVisible()
|
||||
|
||||
await gotoPage(page, '/articles')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的归档摘要' })).toBeVisible()
|
||||
await expect(page).toHaveURL(/\/articles$/)
|
||||
|
||||
await gotoPage(page, '/reviews')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的评测摘要' })).toBeVisible()
|
||||
await expect(page).toHaveURL(/\/reviews$/)
|
||||
|
||||
await gotoPage(page, '/ask')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的问答页摘要' })).toBeVisible()
|
||||
await expect(page.getByRole('heading', { name: 'AI 站内问答' })).toBeVisible()
|
||||
|
||||
await gotoPage(page, '/friends')
|
||||
await expect(page.getByRole('heading', { name: '给 AI 看的友链网络摘要' })).toBeVisible()
|
||||
await expect(page).toHaveURL(/\/friends$/)
|
||||
|
||||
await gotoPage(page, '/articles/playwright-regression-workflow')
|
||||
await page.getByRole('button', { name: '微信扫码' }).first().click()
|
||||
|
||||
Reference in New Issue
Block a user