# e2e(Playwright) ## 现有用例 | 文件 | 说明 | 默认是否执行 | | --------------------- | ---------------------------------- | ----------------- | | `smoke.spec.ts` | A0 冒烟:登录、模块切换、403 / 404 | 是 | | `a1-identity.spec.ts` | A1-QA-01 账号生命周期(①–⑥) | 否,需 `A1_E2E=1` | ## A1 账号生命周期用例 覆盖 6 类:首登强改 → 重登 → `/users`;刷新页面单飞刷新;登出后 refresh 失效;停用后旧会话与再登录被拒;角色变更下一次请求生效;无 `user:view` 访问 `/users` 显示 403。 ### 前置 1. API:`pnpm --filter @lingxi/api dev`(`http://127.0.0.1:3000/api/v1`,真实 PG + Redis,已 `db:reset` + seed)。 2. Web:`pnpm --filter @lingxi/web dev`(`http://127.0.0.1:5173`,需 `VITE_PUBLIC_DEMO_SESSION=false`,否则登录走演示会话)。 3. 管理员 actor:默认用种子超管 `jiang.lan`(首登会把初始密码 `lingxi2026` 改成 `QaE2eAdmin2026`,之后复用)。 若本地已改密或想换账号,覆盖:`A1_E2E_ACTOR_ACCOUNT` / `A1_E2E_ACTOR_PASSWORD`。 ⚠️ 不要用 `admin`:本地 `admin` 密码可能已被人工修改或触发登录锁定。 ### 运行 ```bash A1_E2E=1 pnpm exec playwright test e2e/a1-identity.spec.ts --reporter=list ``` - 可选覆盖:`A1_E2E_BASE_URL`(缺省 `http://127.0.0.1:5173`)、`A1_E2E_API_BASE_URL`(缺省 `http://127.0.0.1:3000/api/v1`)。 - 截图:`design/a1-ui-v1/shots/impl/e2e/`(`01-*` … `06-*`)。 - 数据自建自清:用管理员 token 通过 API 创建 `qa.first.* / qa.main.* / qa.noperm.* / qa.disable.*` 四个用户,结束后统一停用(不删除,便于审计回看);不改 admin 密码。 ### 说明 - 门控未开启(无 `A1_E2E=1`)时整文件 `test.skip`,`pnpm test:e2e` 与 CI 行为不变。 - 若在 `vite preview`(4173)上执行,需把 API 的 `WEB_ORIGIN` 同时包含 `http://127.0.0.1:4173`,否则跨域请求被拦;本用例默认打 5173 dev,避免改动 API 配置。