# Playwright 全量 E2E — 本地验证报告 **日期**: 2026-06-08 **环境**: `http://127.0.0.1:8600` · admin + `NEXUS_E2E_PASSWORD` · Chromium headless ## 结果(最终) ```bash cd frontend && npx playwright install chromium # 首次 NEXUS_E2E_BASE=http://127.0.0.1:8600 \ NEXUS_E2E_USER=admin \ NEXUS_E2E_PASSWORD=*** \ npm run test:e2e ``` | 指标 | 值 | |------|-----| | 合计 | **35** | | 通过 | **35** | | 失败 | 0 | | 跳过 | 0 | | 耗时 | ~35s | ### 复验(清理后 · 2026-06-08) | 套件 | 结果 | |------|------| | `pytest tests/integration tests/chain` | **27 passed** | | `pytest tests/ -m "not chain and not slow"` | **427 passed** | | `pytest tests/ -m slow` | **1 passed**(IT-INST-001) | | `scripts/local_integration_smoke.sh` | **OK** | | `npm run test:e2e` | **35 passed** (~35s) | 前置:`bash scripts/start-dev.sh`(API :8600 healthy) ## 根因与修复(本轮) | 问题 | 处理 | |------|------| | 并行 UI 登录触发 admin 锁定(429) | `e2e/fixtures.mjs`:每 worker 一次 API 登录 + 轮换后更新 `storageState` | | `page.goto(#/route)` 在 keep-alive SPA 下偶发停在 `#/` | `helpers.nav` 改为侧栏链接点击;设置页点抽屉「设置」 | | 凭据入口改为服务器页对话框 | `credentials` / acceptance #08 点「凭据」按钮,不再依赖 `?credentials=1` | | `getByText('命令日志')` strict 双匹配 | 限定 `main .v-card-title` | | `web/app` 构建滞后(旧 bundle 含「导出CSV」) | `npx vite build` 同步源码与静态资源 | ## Spec 目录(19 文件) - `full-acceptance.spec.mjs`(15 步 serial) - `pages/*.spec.mjs`(18 页域用例 + install/login/auth 无会话) ## 结论 **Wave 1–5 测试矩阵对应的 Playwright 全量 35/35 green**,可与 `tests/integration` + `tests/chain`(27 passed)一并作为 L4 证据。