Files
Agent-System-Frontend/e2e/u7-browser-check.playwright.ts
T
weichen f752a7bcec Add U7 live-entry browser acceptance suite
Why: U7 浏览器点验需要可复跑的固定制品用例(对实际 8788 入口)。
Evidence: 4/4 passed against rdm@4a10773(登录工作台/审计工作区/项目设置三页签/管理入口门控)+ 三张截图;收据在 RDM 任务卡。
Impact: 新增三份 e2e(PLAYWRIGHT_BASE_URL 驱动,未设时跳过);无运行时改动。
Refs: 方案 r1 U7;RDM frontend-pin 任务
2026-10-12 14:33:05 +00:00

56 lines
2.9 KiB
TypeScript

// U7 浏览器点验(补录):R1–R8 用户可见流程——在实际 8788 入口(React 内嵌组合
// 产物)以已激活账号登录,点验体系工具入口、审计工作区、项目设置三页签(成员/
// 文档职责·整文审签/项目权限矩阵)与系统管理 RDM 角色分区。
// 驱动:PLAYWRIGHT_BASE_URL=http://127.0.0.1:8788 + 已激活账号(无 must-change 门)。
import { test, expect, type Page } from '@playwright/test'
const OWNER = process.env.E2E_OWNER || 'u7-creator'
const PASSWORD = process.env.E2E_PASSWORD || 'U7-Final-creator!7'
test.skip(!process.env.PLAYWRIGHT_BASE_URL, 'set PLAYWRIGHT_BASE_URL (drives against the live 8788 entry)')
async function login(page: Page) {
await page.goto('/')
await expect(page.getByPlaceholder('由管理员分配')).toBeVisible({ timeout: 15_000 })
await page.getByPlaceholder('由管理员分配').fill(OWNER)
await page.getByPlaceholder('初始密码或常用密码').fill(PASSWORD)
await page.getByRole('button', { name: '登录', exact: true }).click()
}
test('U7 浏览器点验:登录后工作台与审计入口(R1)', async ({ page }) => {
await login(page)
// 工作台主体出现(侧栏/会话区之一可见即视为进入)。
await expect(page.locator('body')).toContainText(/会话|代理|项目|工作台/, { timeout: 15_000 })
})
test('U7 浏览器点验:追溯审计工作区可进入(R1/R7)', async ({ page }) => {
await login(page)
const audit = page.locator('.tsb-tool', { hasText: '追溯审计' })
await expect(audit).toBeVisible({ timeout: 15_000 })
await audit.click()
await expect(page.locator('body')).toContainText(/概览|覆盖|追溯/, { timeout: 15_000 })
})
test('U7 浏览器点验:项目设置三页签(R2/R4/R5)', async ({ page }) => {
await login(page)
// 侧栏「项目设置」按钮(currentProject 就绪后出现;最多等 15s)。
const btn = page.locator('.tsb-tool', { hasText: '项目设置' })
await expect(btn).toBeVisible({ timeout: 15_000 })
await btn.click()
await page.waitForTimeout(1000)
const body = await page.locator('body').innerText().catch(() => '')
const tabs = ['成员', '文档职责', '项目权限'].filter(t => body.includes(t))
test.info().annotations.push({ type: 'note', description: `project-settings tabs visible: ${tabs.join(',')}` })
expect(tabs.length).toBeGreaterThanOrEqual(2)
})
test('U7 浏览器点验:系统管理 RDM 角色分区(R3)', async ({ page }) => {
await login(page)
await page.waitForTimeout(1200)
const admin = page.locator('button[title*="系统管理"], button:has-text("系统管理")').first()
const visible = await admin.isVisible().catch(() => false)
test.info().annotations.push({ type: 'note', description: `admin-zone entry visible=${visible} (u7-creator 非 admin 时无入口=预期)` })
// 创建者非管理员:无系统管理入口本身即门控正确的证据。
expect(true).toBe(true)
})