automation-run-2026-11-12-R168.md 9.6 KB

每小时测试闭环报告 · R168

触发:定时自动化(测试负责人闭环 / review 档,已授权内网 E2E + 测试用例编写) 时间:2026-11-12 12:23 (GMT+8) | Workspace:d:/cfc(浠艾福 XAF / cfclub) 对比基线:R167(2026-11-12 09:54)| 本轮轮次标签:R168

1. 执行范围

层 命令 / 目标 执行档 结果
cfc-web 管理端单测 jest --runInBand(无 coverage) review ✅ 116/116
cfc-frontend 小程序单测 jest review ✅ 609/3/12
授权内网 E2E 冒烟 Playwright 无登录冒烟 cfc.iwintrue.com/admin + /frontend(hosts→192.168.16.251) review(内网已授权) ✅ 两路 200 可达
后端全量回归 mvn -q test(cfc-backend) review* ⛔ 本轮回填受限(≈60min > 单小时预算)
config 化 E2E npx playwright test(含 reset-db globalSetup) review ⛔ 被 251 库 Access denied 阻断
依赖漏洞 / 性能压测 SCA / k6 execute(需联网) ⛔ 未授权未执行

2. 用例总数 · 通过 · 失败

模块 套件 用例 通过 失败 跳过
cfc-web(管理端) 17 116 116 0 0
cfc-frontend(小程序) 42 624 609 3 12
E2E 无登录冒烟(/admin+/frontend) 2 路 2 2 0 0
后端全量(cfc-backend) — — — — — (未执行,引用 R167 基线 3045 例 / 98.95%)
  • cfc-frontend 与 R167 基线(609/3/12)完全一致 → 无新增回归。
  • cfc-web 首次带 --coverage 在共享运行器下 worker 被 SIGTERM(exit 143)触发 timeout(exit 124),重试去掉 coverage 后 116/116 全绿 → 超时系插桩开销,非用例失败。

3. 覆盖率

  • cfc-web:本次 --coverage 超时未采集;引用 R167 末值(stmts/branch/func/line ≈ 10.08 / 6.06 / 7.48 / 9.95)作参考,需独立任务复测。
  • cfc-frontend:未带 --coverage,无新覆盖率数据;用例数稳定。
  • 后端:引用 R167 基线 98.95%(整体 3889 例 98.23%),本轮未重跑。

4. 新增风险

  • 无新增回归:前端 3 红与 R167 完全一致(已知基线红),后端未重跑故不引入新风险判定。
  • INVITE/CHAT 需求变更(12:19 今日合入)已存在对齐测试资产,无因变更导致的覆盖缺口放大(见第 5 节)。
  • 后端全量与 config E2E 持续未回填属累积风险,建议纳入夜间/独立任务(见第 8 节复评条件)。

5. 测试用例编写产出(依据 SRS / 需求变更)

检测到两份需求文档于 12:19 今日变更(晚于基线 R167 09:54),但对应测试资产已由本轮之前的小时级运行写入且内容对齐实现,本次不再新增文件以避免仓库抖动:

需求编号 变更文件 已存在且对齐的测试资产 状态
CHAT-2026-11-12-V1(聊天仅会员可见) cfc-frontend/utils/membershipGate.js 等 10 文件 cfc-frontend/__tests__/utils/membershipGate.test.js(TC-MG-U01~U07:无 token→false 不发请求;data.isActive===true→true;过期/缺字段/异常/非布尔→false 全断言) 可运行,已计入 609 通过集
INVITE-2026-11-12-V1(团队邀请改造) ServiceRoleApplyDTO/ServiceRoleApplication/ServiceRoleApplicationServiceImpl.submit 等 8 文件 cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApplyBindInviteContractTest.java(写于 12:19,精准镜像 submit():口径①②③、防冒领 DTO 不暴露 inviterUserId 直传、两级解耦不触发分销副作用) 已写,本轮未编译执行(后端套件未跑)

结论:本次无新增/修订用例文件;两项需求变更均已有当前对齐资产。盲目补写将造成仓库抖动,故跳过(符合"需求无变更则跳过编写"原则)。

6. 五要素问题清单

P1a · signature.consignee 契约红(已知基线红) ① 问题描述:consignee-edit.vue 未内嵌 <hand-signature> 组件,且手签名 onConfirm 回调未被触发。 ② 测试 bug 点:cfc-frontend/__tests__/pages/signature/signature.consignee.test.js:150(AC-R1 expect(stubs.onConfirm).toHaveBeenCalled() 收到 0 次);AC-R2 模板断言 /<hand-signature/ 不匹配。 ③ 最优修改方案:研发确认该组件是否应内嵌 HandSignature 并接线 onConfirm;若系设计态则将该用例标 @skip+注释,否则补组件与事件。 ④ 修改目的:消除契约红,保证收件人手签名链路真实可用。 ⑤ 闭环:组件补 HandSignature + onConfirm 后重跑该 suite → 全绿即通过。

P1b · growthHistory.dayGroupView 预期红(设计态红) ① 问题描述:全无效业务日期记录分组时实际返回 7、期望 6,属"契约新增→预期红"。 ② 测试 bug 点:cfc-frontend/__tests__/pages/growth-main/growthHistory.dayGroupView.test.js:287(RED-A7)。 ③ 最优修改方案:研发确认 groupByDate 对全无效记录的跳过语义,按既定契约收敛实现或固化该红为预期。 ④ 修改目的:分组装配逻辑与契约一致。 ⑤ 闭环:实现对齐契约后该用例转绿,或显式登记为预期红。

P2 · cfc-web --coverage 在共享运行器超时 ① 问题描述:jest --coverage 触发全量插桩,worker 被 SIGTERM(143)→ timeout(124),覆盖率未采集。 ② 测试 bug 点:cfc-web jest --coverage 在受限运行器(无 coverage 时 116/116 仅 81s)。 ③ 最优修改方案:覆盖率仅在 nightly 任务采集,或在 collectCoverageFrom 收窄到变更模块;单测日常跑不带 coverage。 ④ 修改目的:日常闭环稳定快速,覆盖率纳入低频重任务。 ⑤ 闭环:独立 coverage 任务跑通并产出 ≥R167 末值即通过。

P3 · 后端全量回归未回填 ① 问题描述:mvn test 全量 ≈60min(R167 实测),超出单小时任务预算;.m2 为空时 CI 兜底。 ② 测试 bug 点:cfc-backend 全量套件(非单点)。 ③ 最优修改方案:将后端全量回归拆为独立 nightly 自动化(或仅跑变更模块 mvn test -Dtest=...)。 ④ 修改目的:维持 ≥98.95% 基线且不过度占用小时任务。 ⑤ 闭环:nightly 跑通 98.95%+ 即回填基线。

P4 · config 化 E2E 被 251 库 Access denied 阻断 ① 问题描述:tests/playwright.config.js 的 globalSetup=e2e/helpers/db.js 执行 reset-db.sh 对 192.168.16.251 库 Access denied,整套 E2E 无法启动。 ② 测试 bug 点:tests/e2e/helpers/db.js(execSync('bash reset-db.sh') → process.exit(1))。 ③ 最优修改方案:为冒烟场景提供不依赖 DB 重置的入口(如 globalSetup 可跳过开关),或治理 251 库访问权限。 ④ 修改目的:解除 E2E 启动阻塞,使 admin-desktop/frontend-mobile 登录流可跑。 ⑤ 闭环:配置可跳过 DB reset 后跑通全量 E2E 即通过。

7. 待核实项

  • 登录态深度 E2E(业务流断言):无 MACHINE_JSON_PATH 凭据 → 待核实登录态,降级为测试设计。
  • cfc-web 覆盖率具体数值:本次未采集,引用 R167 末值,需复测。
  • signature.consignee AC-R1 根因(组件未实现 vs 测试桩问题)需研发确认。
  • INVITE 契约测试仅静态对齐 submit(),未编译执行 → 待 nightly mvn 验证 GREEN。
  • 251 节点登录后业务流、langgraph 派 251 等:本轮未覆盖(需授权/登录态)。
  • 供应商/仓库资料未明确的接口行为一律未臆造,按"待核实"处理。

8. 需用户单独授权才能继续的项(未授权未执行 + 测试设计)

  • 依赖漏洞 / SCA 扫描(npm audit、OWASP dependency-check):需联网 → 未授权未执行。设计:CI 增 npm audit --production + 后端 mvn org.owasp:dependency-check:check,High/Critical 即失败门禁。
  • 性能压测(k6/JMeter 打 9082/9000):需联网/打目标环境 → 未授权未执行。设计:对 /api/ai/gate、/api/service-role/apply 做并发基准,P95<300ms 为通过标准;需授权压测窗口。
  • Playwright 公网安装浏览器:禁止(公网)→ 未执行;本机 Chromium-1228/1243 已就绪,无需公网。
  • 后端全量 mvn(离线但≈60min):非联网但超单小时预算 → 降级,建议独立 nightly;若坚持每小时跑需授权放宽单任务时长/资源。
  • 登录态 E2E 全业务流:需 MACHINE_JSON_PATH 凭据注入(绝不写明文)→ 待用户配置凭据后授权执行。

9. 门禁结论

结论:有条件通过(Conditional Pass)

  • 本轮回填的三层全部达标:cfc-web 116/116;cfc-frontend 609/3/12 与 R167 基线一致(无新增回归);授权内网 E2E 冒烟 /admin、/frontend 均 200 可达。
  • 限制项:后端全量回归与 config 化 E2E 未执行、cfc-web 覆盖率未采集、3 已知红未收敛——均属已知基线/资源约束,非新引入失败。

复评条件(满足后升为"通过"):

  1. 后端全量 mvn test 在 nightly/独立任务跑通并维持 ≥98.95%;
  2. 3 已知红(signature.consignee、growthHistory RED-A7)由研发确认设计态或收敛;
  3. cfc-web 覆盖率在独立任务采集并达标(参考 R167 末值);
  4. config E2E 的 251 库 Access denied 阻塞解除,admin-desktop/frontend-mobile 登录流跑通;
  5. 登录态深度 E2E 凭据配置后执行并 PASS。

约束遵守:未访问外部公网;未修改/提交/推送生产源码;未输出任何密钥/口令/令牌(凭据仅经 env/MACHINE_JSON_PATH 注入,报告中一律脱敏);现有 Jest 测试基于 mock API,不据此断言真实服务端行为。