Pin summary-card assertions to exact labels

Why: hasText('章节') also matches the 空缺章节 card, tripping Playwright strict mode.

Evidence: rerun of scripts/e2e.sh in this task.

Impact: test-only.
This commit is contained in:
2026-10-11 17:53:40 +00:00
parent 566fec9f56
commit fb846bed14
+9 -5
View File
@@ -48,15 +48,19 @@ async function openAudit(page: Page) {
}
test.describe.serial('U4 项目追溯审计工作区', () => {
// 卡片按 label 精确定位(「章节」与「空缺章节」等子串互不干扰)。
const card = (page: Page, label: string) =>
page.locator('.rdm-audit-card').filter({ has: page.locator('.rdm-audit-card-label', { hasText: new RegExp(`^${label}$`) }) })
test('登录并打开工作区,概览计数与覆盖标注可读', async ({ page }) => {
await login(page)
await openAudit(page)
// 概览:统计卡片 + 水位标注(数据完整性提示,不冒充实时)。
await expect(page.locator('.rdm-audit-card')).toHaveCount(9)
await expect(page.getByText(/截至水位 \d+/)).toBeVisible()
// 主项目应有切片与章节(种子 ingest 保证)。
await expect(page.locator('.rdm-audit-card', { hasText: '切片' })).toContainText(/\d+/)
await expect(page.locator('.rdm-audit-card', { hasText: '章节' })).not.toContainText(/^0$/)
// 主项目应有切片与章节(种子 structure 装载 + ingest 保证)。
await expect(card(page, '切片')).toContainText(/[1-9]/)
await expect(card(page, '章节')).toContainText(/[1-9]/)
})
test('三次主要点击内完成取证:章节来源依据与最近修改原因', async ({ page }) => {
@@ -97,7 +101,7 @@ test.describe.serial('U4 项目追溯审计工作区', () => {
// 切到隔离项目:概览计数应为 0 且无残留「加载中…」。
await page.locator('.rdm-audit-project').selectOption({ label: ISOLATED })
await expect(page.getByText('加载中…')).toHaveCount(0, { timeout: 10_000 })
await expect(page.locator('.rdm-audit-card', { hasText: '切片' })).toContainText(/^0$/)
await expect(card(page, '切片')).toContainText(/^0$/)
// 空态:文档树与时间线给出可理解提示。
await page.getByRole('tab', { name: '资料与文档' }).click()
await expect(page.getByText('暂无文档')).toBeVisible()
@@ -107,7 +111,7 @@ test.describe.serial('U4 项目追溯审计工作区', () => {
await page.getByRole('tab', { name: '概览' }).click()
await page.locator('.rdm-audit-project').selectOption({ label: MAIN })
await expect(page.getByText('加载中…')).toHaveCount(0, { timeout: 10_000 })
await expect(page.locator('.rdm-audit-card', { hasText: '切片' })).toContainText(/[1-9]/)
await expect(card(page, '切片')).toContainText(/[1-9]/)
await expect(page.locator('.rdm-audit-project')).toHaveValue(
await page.locator('.rdm-audit-project option', { hasText: MAIN }).getAttribute('value') ?? '',
)