Files
Agent-System/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md
T

13 KiB
Raw Blame History

全系统真实浏览器多人协作验收 测试报告(审计友好 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 / 主题 说明
P0 UI pending 遮盖 completed 已修复并验收 PASS
P1 FS-NONAUTH-01 已 PASS(draftingEditAffordance)
P2 FS-UPLOAD-01 已 PASS(expandRightDocRail)
P1 FS-DOC-REV-03 本轮 PASS(reject modal portal)
P2 FS-DOC-REV-04 本轮 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):

  1. 用角色账号登录(用户名见下表;密码见 audit-login-credentials.md)。
  2. 打开项目 E2E全量-20260926-mui2xpg2(id 6020)。
  3. 文档栏打开 用户初始需求收集表(doc_proj6020_bd_intake,应为 approved)。
  4. 对照角色查看:
    • author:修订标记 E2E修订-mui2xpg2 / E2E再送-mui2xpg2;聊天闲聊与编队「请编制用户初始需求收集表」。
    • reviewer:驳回原因痕迹 + 后续「审核通过」。
    • approver:终审「批准」后的受控态。
    • member:E2E成员编-mui2xpg2 编辑痕迹;无提交送审。
    • guest:只读可见性。
  5. 可选:上传文档 doc-free-1790408805539159882-60;助手/自由任务对话。
  6. 历史对照: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(本次仅 worktree docs(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