13 KiB
全系统真实浏览器多人协作验收 测试报告(审计友好 FINAL)
数据保留声明(审计必读)
测试数据已全部保留在 local dev 业务库中,请勿清库、删项目、删用户。
- Wipe 仅发生在 2026-09-26T03:08–03:10(见 assets
wipe-receipt.md)。 - 之后各 E2E 跑次账号与项目均保留:现
e2e26_*60 用户、E2E 项目 6011–6020。 - 登录密码见私密附件(主报告不贴密码):
.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/audit-login-credentials.md - 项目/文档/suffix 清单:
.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-inventory.md
一、测试背景 (Background)
对 local dev(BASE_URL=http://127.0.0.1:8080,schema 75)做完整 Playwright 多人协作验收。宿主缺 libatk,走 Docker Playwright(mcr.microsoft.com/playwright:v1.63.0-noble --network host)。
上一轮账本:FS-DOC-REV-03/04 FAIL。根因:驳回弹层渲染在 DocGovActionBar(position: sticky; zIndex: 30)内,形成层叠上下文,弹层 zIndex: 110 无法压过聊天浮层,确认点击被上层元素截获,confirmReject 从未触发。本轮产品修复:createPortal(..., document.body) + overlay zIndex: 1000(对齐 DocVisibilityModal)。
二、测试目标 (Test Objectives)
- 实跑
web/e2e/full-system-browser-e2e.spec.ts(21 条 serial)真实 UI + 真实 PI - 验证驳回弹层 portal 修复后 DOC-REV-03→04 主链
- 落盘 assets + 本 FINAL 报告;
agentctl with租约提交(不 push、不合入) - 保留全部测试数据供登录审计回放
三、测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|---|---|
| URL | http://127.0.0.1:8080 |
| 环境 | local dev(MAIN 目录服务) |
| schema | 75(/health → schema_ready=true) |
| MAIN tip(服务检出) | 09cc76eb8d3df6353da86be1e0a7b54e6c147f19 |
| worktree tip | feature/full-system-browser-e2e-2026-09-26(审计文档提交前 7ab7d572…) |
| 通道 | headless Docker Playwright |
| 镜像 | mcr.microsoft.com/playwright:v1.63.0-noble |
| DISPLAY | empty(run-meta.json → "display":"", "headedHint":false) |
| 入口 | web/scripts/run-full-system-browser-e2e.sh |
| FINAL 跑次 | 2026-09-26T07:40:03Z → 07:46:47Z(约 6.7m) |
| FINAL 项目 | E2E全量-20260926-mui2xpg2(id 6020) |
| 前端制品 | WT npm run build + rsync → MAIN web/dist(index-CrRH72Vb.js) |
| 本轮修复 | DocGovActionBar 驳回弹层 createPortal + zIndex: 1000;data-testid=docgov-reject-confirm |
| 层级 | 产品 UI 真实浏览器验收(含真实 PI);禁止 stub 冒充 PASS |
| 账本 SSOT | ui-results.json(不以 Playwright soft-continue 的 21 passed 冒充产品 PASS) |
| 清库确认 | /health ok;users 自 wipe 后 4 → ≥64;未再 wipe |
E2E_START=2026-09-26T07:40:03Z
EXIT:0
E2E_END≈2026-09-26T07:46:47Z
证据: assets/.../e2e-rerun-20260926T074002Z.stdout + playwright.log
四、预期结果 (Expected Results)
- 21 条按 serial 执行;编队允许长等待真实 PI
ui-results.json记录 PASS/FAIL/SKIP;P0 产品缺陷记 FAIL,不得伪装 PASS- 驳回确认点击应进入
confirmReject,文档回 drafting - 跑次结束后账号与项目保留,可供人工登录审计
五、实际测试结果与判定 (Actual Results & Evaluation)
5.0 历史探针(msg 243 / muhu39da,只读;仍适用)
证据:assets/.../msg243-readonly-probe.json、probe-summary-msg243.md
| 层 | 观察 |
|---|---|
DB messages.id=243 |
task_status=completed,正文已完成 / 质量 100 |
| API task run | status=completed(~4m) |
| UI 早期轮次 | data-server-id=243 曾卡在 pending |
因果三分已在更早轮次修复并验收;本轮 FS-SQUAD-WF-01 继续 PASS。
5.1 单元测试
# draftingEditAffordance(先前产品修复;本轮未重跑)
✔ author can edit drafting when unlocked
✔ active project member can edit drafting when unlocked (deny_only_submit)
✔ non-member viewer cannot edit drafting
✔ lease blocks edit even for author and member
✔ reviewing is not editable via drafting affordance
ℹ tests 5 / pass 5 / fail 0
5.2 账本计数(ui-results.json,本轮 FINAL)
| Verdict | Count | IDs |
|---|---|---|
| PASS | 20 | FS-IAM-01/02, FS-PROJ-01/02, FS-CHAT-01, FS-SQUAD-WF-01, FS-DOC-REV-01/02/03/04/05/06, FS-NONAUTH-01/02, FS-ASSIST-01, FS-SQUAD-FREE-01, FS-UPLOAD-01, FS-KB-01, FS-CTX-01, FS-CONSOLE-01 |
| FAIL | 0 | — |
| SKIP | 1 | FS-DOC-REV-07 |
相对上一账本(18/2/1):FS-DOC-REV-03、FS-DOC-REV-04 已转 PASS(reject portal 修复)。
5.3 Playwright 套件计数(playwright.log / stdout)
✓ 1..21 …
21 passed (6.7m)
EXIT:0
说明:FS-DOC-REV-07 账本为 SKIP(批准后无 reopen 入口),Playwright 仍记 ✓(soft skip)。以账本为准:20 PASS / 0 FAIL / 1 SKIP。
5.4 逐条(账本)
| ID | Verdict | Duration | 实际摘要 |
|---|---|---|---|
| FS-IAM-01 | PASS | 2087ms | 五账号 e2e26_*_mui2xpg2 开通 |
| FS-IAM-02 | PASS | 2126ms | 5/5 首次改密 |
| FS-PROJ-01 | PASS | 825ms | 立项;guestListed;member promoted |
| FS-PROJ-02 | PASS | 641ms | workflow activated |
| FS-CHAT-01 | PASS | 380ms | assistant bubble non-empty |
| FS-SQUAD-WF-01 | PASS | 291074ms | doc_proj6020_bd_intake;squadMs≈273156 |
| FS-DOC-REV-01 | PASS | 1135ms | author 编辑受控文档 |
| FS-NONAUTH-01 | PASS | 1109ms | member edit OK |
| FS-NONAUTH-02 | PASS | 575ms | submitCount=0;waiting=true |
| FS-DOC-REV-02 | PASS | 714ms | author 提交送审 |
| FS-DOC-REV-03 | PASS | 5671ms | reject confirmed(portal 修复验证) |
| FS-DOC-REV-04 | PASS | 1193ms | resubmitted |
| FS-DOC-REV-05 | PASS | 678ms | reviewer pass |
| FS-DOC-REV-06 | PASS | 1941ms | approver approved |
| FS-DOC-REV-07 | SKIP | 620ms | 批准后无 reopen/edit 入口 |
| FS-ASSIST-01 | PASS | 388ms | assistant reply visible |
| FS-SQUAD-FREE-01 | PASS | 90528ms | free-task path observed |
| FS-UPLOAD-01 | PASS | 492ms | uploadedDocId=doc-free-1790408805539159882-60 |
| FS-KB-01 | PASS | 1092ms | KB section visible |
| FS-CTX-01 | PASS | 644ms | conflict=true;chip=false |
| FS-CONSOLE-01 | PASS | 0ms | errorCount=216;见 console-errors-summary.json |
FS-DOC-REV-03 PASS(本轮修复验证)
✓ FS-DOC-REV-03 reviewer rejects with reason (5.7s)
actual: reject confirmed
根因与修复:sticky ActionBar 层叠上下文 → portal 到 document.body + zIndex: 1000。确认点击可到达 confirmReject;文档回 drafting,级联解锁 REV-04。
FS-DOC-REV-04 PASS
✓ FS-DOC-REV-04 author fix and resubmit (1.2s)
actual: resubmitted
截图: screenshots/FS-DOC-REV-04-resubmitted.png
FS-DOC-REV-07 SKIP
actual: no reopen/edit affordance after approve
截图: screenshots/FS-DOC-REV-07-probe.png
产品在批准终态未暴露 cascade reopen 入口;按契约 SKIP,非本轮回归。
FS-CONSOLE-01
errorCount=216; summary=.../console-errors-summary.json
主要为 403/404 资源噪声(chat window / deliverables sync);用例本身 PASS(汇总落盘)。
5.5 严重缺陷表
| 级别 | ID / 主题 | 说明 |
|---|---|---|
| 已修复并验收 PASS | ||
| 已 PASS(draftingEditAffordance) | ||
| 已 PASS(expandRightDocRail) | ||
| 本轮 PASS(reject modal portal) | ||
| 本轮 PASS(级联于 REV-03) | ||
| P2 | FS-DOC-REV-07 | 批准后无 cascade reopen(SKIP) |
| P2 | Console 403/404 | 高频 chat-window/deliverables 噪声(不单独阻断) |
5.6 登录可用性核实(审计前置)
| 抽查 | 结果 |
|---|---|
admin POST /api/v1/auth/login |
HTTP 200 |
e2e26_{author,reviewer,approver,member,guest}_mui2xpg2 |
全角色 HTTP 200(公式密码) |
e2e26_*_muhxbx7y 全角色 |
HTTP 200 |
e2e26_*_mui24fzd 全角色 |
HTTP 200 |
早期 author(muhtqcok/muhtu9gc/muhu09f2) |
HTTP 200 |
密码推导:spec FINAL_PASS = {Auth,Rev,App,Mem,Gst}-<suffix>9A。完整表见 audit-login-credentials.md。
六、自动化测试套件汇总 (Test Suite Execution)
| 套件 | 入口 | 结果 |
|---|---|---|
| draftingEditAffordance unit | tsx --test src/lib/draftingEditAffordance.test.ts |
PASS 5/5(先前轮次) |
| Docker Playwright E2E | run-full-system-browser-e2e.sh |
账本 20 PASS / 0 FAIL / 1 SKIP(整体 PASS 收口) |
| 真实 PI 编队 | FS-SQUAD-WF-01 | PASS |
| 审签主链 | DOC-REV-01…06 | 全部 PASS;07 SKIP |
| 登录抽查 | /api/v1/auth/login |
PASS(见 5.6) |
通过率(21 账本):20/21 ≈ 95.2%(唯一 SKIP 为预期产品缺口)。
七、修复摘要
| 阶段 | 问题 | 修复 | 验收 |
|---|---|---|---|
| pending heal | 气泡 UI 卡 pending,后端已 completed |
消息身份/状态 heal | FS-SQUAD-WF-01 PASS;msg243 探针 |
| FS-NONAUTH-01 | 成员无法就地编辑 drafting | draftingEditAffordance |
PASS |
| FS-UPLOAD-01 | 右侧文档栏未展开导致上传不可见 | expandRightDocRail |
PASS |
| FS-DOC-REV-03/04 | 驳回确认被层叠上下文挡住 | createPortal + zIndex 1000 |
本轮 PASS(20/0/1) |
(历史中另有角色选择器 / promote 等前置修复,已合入本 worktree 产品提交。)
八、审计回放指南
入口:http://127.0.0.1:8080(确认 /health schema 75)。
推荐主路径(FINAL mui2xpg2):
- 用角色账号登录(用户名见下表;密码见
audit-login-credentials.md)。 - 打开项目 E2E全量-20260926-mui2xpg2(id 6020)。
- 文档栏打开 用户初始需求收集表(
doc_proj6020_bd_intake,应为 approved)。 - 对照角色查看:
- author:修订标记
E2E修订-mui2xpg2/E2E再送-mui2xpg2;聊天闲聊与编队「请编制用户初始需求收集表」。 - reviewer:驳回原因痕迹 + 后续「审核通过」。
- approver:终审「批准」后的受控态。
- member:
E2E成员编-mui2xpg2编辑痕迹;无提交送审。 - guest:只读可见性。
- author:修订标记
- 可选:上传文档
doc-free-1790408805539159882-60;助手/自由任务对话。 - 历史对照:
muhxbx7y(6018,intake approved)、mui24fzd(6019,portal 修复前 18/2/1)。
九、保留测试账号用户名表(按跑次)
密码一律见 audit-login-credentials.md(公式 Role-<suffix>9A)。
FINAL — mui2xpg2(项目 6020)
| 角色 | username |
|---|---|
| author | e2e26_author_mui2xpg2 |
| reviewer | e2e26_reviewer_mui2xpg2 |
| approver | e2e26_approver_mui2xpg2 |
| member | e2e26_member_mui2xpg2 |
| guest | e2e26_guest_mui2xpg2 |
其他仍存在跑次(每跑次 5 角色,模式 e2e26_<role>_<suffix>)
| suffix | 项目 id | 账本摘要 |
|---|---|---|
mui24fzd |
6019 | 18/2/1 |
muhxbx7y |
6018 | intake approved;用户可登录 |
muhx1ncl |
6017 | 5/2/0 |
muhwuua6 |
6016 | 9/2/0 |
muhwkdms |
6015 | 5/1/0 |
muhwbtbv |
6014 | 5/1/0 |
muhvyubx |
6013 | 7/1/0 |
muhu39da |
6012 | 5/1/0;msg243 |
muhu09f2 |
6011 | 立项后文档空 |
muhtu9gc |
— | 仅 IAM |
muhtqcok |
— | 仅 IAM |
合计 12 × 5 = 60 个 e2e26_* 账号均保留。完整 inventory:retained-inventory.md。
十、测试结论与后续优化建议 (Conclusion & Next Steps)
- 结论:驳回弹层 portal 修复已验证;审签主链 DOC-REV-01…06 PASS;整套账本 20 PASS / 0 FAIL / 1 SKIP,整体记 PASS。
- 数据:全部测试账号/项目/文档保留;请勿清库。
- 下一步(可选):批准终态 cascade reopen(FS-DOC-REV-07);降低 console 403/404 噪声。
- 部署/合入:静态资源已 rsync 至 MAIN
web/dist;未 push;未 integrate(本次仅 worktreedocs(test)提交)。
附件索引
| 文件 | 用途 |
|---|---|
assets/.../ui-results.json |
FINAL 账本 SSOT |
assets/.../run-meta.json |
跑次元数据 / 用户名 |
assets/.../retained-accounts.json |
本轮用户名(无密码) |
assets/.../audit-login-credentials.md |
私密:用户名+密码+回放路径 |
assets/.../retained-inventory.md |
项目/文档/suffix 清单 |
assets/.../wipe-receipt.md |
唯一 wipe 收据(03:08) |
assets/.../e2e-rerun-20260926T074002Z.stdout |
FINAL stdout |