文件
hyb-oa/.trellis/tasks/archive/2026-08/08-07-interaction-pattern-browser-regression/implement.md
T

8.0 KiB
原始文件 Blame 文件历史

执行计划

1. 规划与前置检查

  • 用户批准后读取 .trellis/workflow.md、本 task PRD/design、前端 spec 和测试事实源;任务已进入 in_progress。
  • 记录开始前 git status --short;保留父任务 task.json 的既有子任务变更,未覆盖其他工作区修改。
  • 检查 npx、Node/npm、Playwright 版本和 Chromium 可执行性;Playwright Chromium 已可启动。
  • 使用本地 loopback Vite(http://127.0.0.1:5178);未访问公网、未使用真实登录。
  • 截图统一写入 output/playwright/08-07-interaction-pattern-browser-regression/,未覆盖历史任务目录。

2. 激活门禁

  • 用户已明确批准启动 08-07-interaction-pattern-browser-regression。
  • task.json.status 已为 in_progress,当前任务指针指向本 task;未绕过状态门禁。

3. Chromium 浏览器回归

  • Portal 聚焦场景通过:首屏顺序、WelcomeDialog 权限过滤、区域错误重试、登录/Portal Tab 焦点(3/3)。
  • PC 审批详情场景通过:后果说明、二次确认取消、转审 10 字门槛、Tab 顺序(1/1)。
  • R6 七视口移动矩阵通过:使用临时运行副本仅移除过期请假表单断言,七个视口均通过;未改仓库测试或业务代码。
  • R111 企业微信 UA 报销详情通过:原始 spec 的重复文本 strict locator 先分类为测试夹具问题,临时副本仅加 .first() 后 1/1 通过;未改仓库测试或业务代码。
  • Wave3 PC/移动代表场景通过:审批/报销详情、返回链路、断点双栏和截图(2/2)。
  • R1/R6 状态徽章一次性 Chromium harness 通过:未知状态、试用期和 Todo 中文文案均按预期渲染。
  • R14 差旅直接入口通过:列表有两条合成记录,未显式选择时 URL 无 id,详情区保持新建/未选择态。
  • 可选运行 R89 移动关键路径;若与主矩阵重复,只记录不重复计数的补充证据。
  • 已在 openclaw-test-prompt.md 和本文件记录每个场景的状态、命令、退出码、失败分类与证据路径。

4. OpenClaw 提词交付

  • 可直接复制的测试提词已写入 openclaw-test-prompt.md,并补充本地执行结果表。
  • 提词要求 OpenClaw 使用合成数据,逐场景回报 URL/标题/角色/UA/视口/指标/截图和状态。
  • 提词明确浏览器沙箱、缺 Chromium、真机或公网条件不足只能 PAUSED,不得宣称通过;UA 模拟不等于真机。

5. 质量门禁

  • cd client && npm run typecheck && npm run build:退出码 0;typecheck 与 Vite build 均通过(Browserslist 仅有既有数据过期提示)。
  • 聚焦 Playwright 命令已按 PRD Test Plan 执行并保存退出码/通过数;历史断言问题单独分类,未改产品代码。
  • python3 ./.trellis/scripts/task.py validate 08-07-interaction-pattern-browser-regression:退出码 0,implement/check context 均通过。
  • node scripts/qa/check-process-contract.mjs --baseline --json:退出码 0,status PASS,0 errors / 0 warnings。
  • node scripts/qa/audit-docs.mjs --check-registry:退出码 0,0 errors;保留既有 22 个未注册 docs warning。
  • node scripts/qa/check-trellis-governance.mjs --json:退出码 0,status PASS,0 errors / 0 warnings,sensitive scan 1009 files。
  • git diff --check:退出码 0;只读复核确认没有 client/src、server/ 或历史证据目录的业务改动。

6. 结果与收尾

  • 已在本文件“验证记录”填写命令、退出码、通过/失败/暂停数和证据相对路径。
  • Chromium 已启动;代表性企业微信真机与公网/部署仍明确保留为 PAUSED,不宣称可线上测试。
  • 测试计划和最终门禁完成后完成只读复核:任务范围、截图目录、UA/真机边界和工作区漂移均符合 PRD;未改业务实现。
  • 按中文 Trellis task 名称提交;提交前再次检查敏感信息和历史输出目录。

验证记录

环境与证据边界

  • 日期:2026-08-07;浏览器为仓库 Playwright Chromium chromium-1208(Chrome for Testing 145.0.7632.6),headless,未使用真实账号或公网地址。
  • Node v22.22.2、npm 10.9.7、Playwright 1.58.2;本地 Vite loopback:http://127.0.0.1:5178。
  • 开始前工作区只有父任务 08-05-product-interaction-consistency/task.json 的既有子任务登记变更和本 task 目录;本任务未改 client/src、server/ 或依赖。
  • 截图目录:output/playwright/08-07-interaction-pattern-browser-regression/,共 66 张脱敏截图;另保留 r6-stale-leave-readonly-320.png 作为历史断言失败留痕。

浏览器结果

场景 命令/执行方式 结果 证据
R1/R6 状态徽章 一次性 Chromium harness,动态导入实际 StatusBadge.tsx PASS,未知状态=未知状态、probation=试用期、Todo 四态中文,console/pageerror=0,退出码 0 output/playwright/08-07-interaction-pattern-browser-regression/01-status-badge-fallback-1440x960.png
Portal R4/R9/R11 login-portal-ux.spec.ts 聚焦 grep,单 worker PASS,3 passed,退出码 0 既有 Playwright 报告;Portal 场景截图在任务目录
PC 审批 R11 workflow-action-confirm-ui.spec.ts 聚焦 grep,单 worker PASS,1 passed,退出码 0 既有 Playwright 报告;审批详情截图在任务目录
R6 七视口 R10/R11 临时副本仅重定向截图并移除过期请假表单断言;原始 spec 该断言因当前“企微主办、OA 只读”边界失败 PASS(等价 in-scope runner),7 passed,退出码 0 w320/w360/w375/w390/w393/w414/w430 系列截图;r6-stale-leave-readonly-320.png
R111 企业微信 UA R10/R11 原始 spec 的 getByText("付款截图.png") 在当前 DOM 命中两项,strict mode 失败;临时副本仅改为 .first() 后重跑 PASS(等价 in-scope runner),1 passed,退出码 0;原始失败归类为测试夹具断言问题 mobile-wecom-reimbursement-detail.png、w390-ios-wecom-mobile-reimbursement-detail.png
Wave3 R10/R11 pc-detail-mobile-visual-wave3.spec.ts 临时重定向截图目录 PASS,2 passed,退出码 0 01-pc-reimbursement-detail.png、02-pc-workflow-detail.png、03-pc-notifications.png、04-mobile-home.png 等
R14 差旅不自动选中 临时 runner 合成两条记录,直接访问 /travel-requests PASS,1 passed,退出码 0;URL 仅含 tab=requests,无 id,未出现详情加载 18-travel-list-no-auto-select-1440x960.png

失败分类与未覆盖证据

  • FAIL(测试夹具/事实源漂移):未修改的 R6 旧用例仍断言 mobile-leave-form;当前产品页面明确为“企业微信主办、OA 只读”。未改业务页面,保留失败截图并用临时副本验证本任务其余七视口断言。
  • FAIL(测试断言 strict locator):未修改的 R111 用例对同时出现在材料卡和查看按钮中的同名文本使用 strict locator;临时副本只收窄定位器后通过。该问题应在后续测试维护任务修复,不属于本任务产品缺陷。
  • PAUSED:iPhone/Android 企业微信真实 WebView、真机安全区/键盘行为未执行;本地 UA 模拟不等价于真机。
  • PAUSED:公网部署、真实登录和生产数据回归未执行。

门禁状态

  • typecheck/build:退出码 0。
  • task validate:退出码 0。
  • process contract baseline:退出码 0,PASS,0 errors / 0 warnings。
  • docs audit:退出码 0,0 errors,既有 22 个未注册 docs warning。
  • Trellis governance:退出码 0,PASS,0 errors / 0 warnings。
  • git diff --check:退出码 0。

回滚点

  • 本任务不包含运行时代码变更;临时运行副本均位于 /tmp,不会提交;截图仅保留脱敏证据。
  • 发现产品缺陷时不在本 task 修实现;记录最小复现并回到 08-05-interaction-pattern-unification 或新建独立 Trellis task。