自动化测试执行记录 · R95(2026-11-09 01:00 ~ 03:20)
汇报版见 docs/tdd/orchestration/report-test-2026-11-09-0320.md;本文件只记可复现的执行事实与证据路径。
0. 基线与环境
| 项 |
值 |
| 仓库/分支 |
d:\cfc · cfclub |
| 起始 SHA |
a80a6115a(= origin/cfclub,同步后一致) |
| 工作区 |
同步时保护 WIP(stash)→ checkout cfclub → pull --rebase;源码级 WIP 0 |
| JDK / Maven |
D:\jdk1.8.0_25 / IDEA 内置 Maven |
| 节点分工 |
本机(204):浏览器串行 + 后端全量 + 前端 jest + 根级 jest + langgraph 兜底 pytest;251:opencode 派发 langgraph pytest + chat live 复核 |
1. 后端全量(mvn -o -B clean test)
Tests run: 2753, Failures: 104, Errors: 11, Skipped: 4 → passed 2634 = 95.68%
classes=328 red_classes=31 red_cases=115
BUILD FAILURE(仅测试失败,MVN_EXIT=1)
证据:_r95_backend.log、_r95_agg.json(工具 docs/tdd/tools/test_report_metrics.py 聚合)
- 相比 R94(2664 例 / 49 红 / 20 红类 / 98.01%):+89 例 / +66 红 / +11 红类 / -2.33pp。
- 新增 66 红全部来自 11 个 Guhe 契约类(
GuheEvidenceIsolateContractTest 11F、GuheNoPathMapContractTest 10F、GuheKbVersionSenseContractTest 9F、GuheV2RouteContractTest 6F、GuheShellGuardContractTest 5F、GuheGateStrainBlockContractTest 5F、GuheLowSideAggregateContractTest 5F、GuheKbFieldExposeContractTest 3F、GuheVersionSplitContractTest 4F、GuheLowSideNoSupplementContractTest 4F、GuhePageTailCleanContractTest 4F),最近提交 d5c656cf3(11-09 01:19 merge S-cfc-81)→ 属研发 HEAD a80a6115a 汇报「19 RED 测试侧契约批次在途」,预期 RED,非回归。
- 非 Guhe 部分 = 20 类 / 38F+11E = 49 红,与 R94 的 49 红(38F+11E)数值完全一致,无生产回归信号。
- B-69 连续第 5 轮未修:
MindFortuneControllerTest 期望 401 实得 400(/api/mind/ 未入 LOGIN_REQUIRED_PATHS)。
2. 前端 / 管理端 / 根级
| 套件 |
命令 |
结果 |
与 R94 对比 |
| cfc-frontend |
npx jest --no-cache |
408 例 / 365 过 / 41 红 / 2 skip |
394→408(+14);24→41 红 |
| cfc-web |
同上 |
116/116 全绿 |
零漂移 |
| tests/ 根级 |
cd tests && npx jest |
23 例 / 7 过 / 16 红 |
零漂移(B-36 黑盒环境依赖) |
前端 41 红构成(逐套件实跑确认):
recommendation.uiRework.test.js(S-cfc-79 diet)24 红,与 R94 一致,预期 RED(B-73)。
recommendation.participantSelect.test.js(S-cfc-80 共餐人选择)8 红 / 1 skip / 1 占位绿(commit 3b0ec73b2 新入库契约,预期 RED)。
signature.canvas2d.test.js(本轮新增 v2 契约)9 红 / 2 绿(预期 RED,S4-1/S4-2 未实施;B-81)。
- 旧横屏
signature.landscape.superseded.js(7 例,含 3 例验证已作废 S1/S2/S3 的假红)已从 jest 执行范围移除。
3. 浏览器 E2E(本机单节点串行)
| 配置 |
用例 |
结果 |
耗时 |
playwright.config.live.js |
admin 5 + frontend 6 + shop 4 |
15/15 passed |
3.7m |
playwright.config.health.js |
health-contract 13 |
13/13 passed(B-61 闭环) |
19.4s |
playwright.config.dxbridge.js(临时配置 _r95_dx_cfg.js,跑完删除) |
DX 桥接 2 |
2 skipped(404 记 skip) |
9.8s |
注:playwright.config.dxbridge.js 不在版本库(临时生成,跑后删),主 playwright.config.js 仍受 B-80 阻断(reset-db.sh 凭据 1045)。
4. langgraph(本机兜底 + 251 实派)
| 维度 |
结果 |
本机 venv pytest(--ignore=tests/qna) |
44 / 32 / 12(238.4s),与 R94 逐例一致。12 红 = analyze 2(B-65)+ auto_tag 5 + chat 1(本机 chromadb DLL 500)+ intent 4(API key 401) |
251 实派 pytest(opencode bash,.venv/bin/python -m pytest tests/) |
44 collected / 36 passed / 8 failed / 71.7s(首次实质落地「langgraph 派 251」指令) |
| 251 8 红构成 |
analyze 2(B-65 checkpointer thread_id,连续第 5 轮)+ auto_tag 5 + chat 1(装置 ASGITransport 不触发 startup 致 chromadb/记忆未初始化;live chat 200 证明非生产缺陷) |
| 251 intent 4 例 |
251 绿(模型可用)/ 本机红(key 401) → 环境差异,权威口径以 251 为准(B-82) |
251 :9000/api/v1/chat |
B-77 解除:422(参数缺)→ 422(int_parsing)→ 200 完整问答 JSON(儿童成长家庭助手),live 端到端可用 |
| 251 opencode 派发通道 |
B-56 根因定位:本地脚本默认 provider=axon 不存在 → 改 etotem/deepseek 后 OUTCOME succeeded;脚本已修(识别 succeeded + 拉 assistant 文本) |
5. SRS 变更 → 用例更新(签名 v2)
| 动作 |
结果 |
读 v2 SRS DOC-2026-11-09-signature-canvas2d-rewrite(取代 11-08 横屏,整份作废) |
确认 S4-1 竖屏直签 / S4-2 canvas 2d 契约 |
核验 signature.vue / hand-signature.vue 现状 |
均为旧实现(旧横屏 + uni.createCanvasContext)→ v2「待开发」 |
新增 signature.canvas2d.test.js |
11 例:9 RED 新契约 + 2 GREEN 保留契约(computeCanvasHeight 保留、组件 props/emit 不变) |
归档 signature.landscape.superseded.js |
旧横屏 7 例(3 例假红)不再参与 jest 匹配 |
更新 tests/test-cases/signature.md |
v2 契约台账(TC-SIG2D-01~08 + -E×2 + -N×2) |
6. 节点分派纪律遵守
- 251:langgraph pytest 派发指令实质落地(上轮 B-78 阻断已解除),单节点单浏览器任务(opencode 非浏览器)。
- 204(本机):浏览器 15+13+2 单节点串行(
workers=1),后端全量 + 前端 jest 串行执行,未并发同节点多浏览器。
- 浏览器套件用隔离配置(live/health/dxbridge),未触碰主配置(B-80 阻断未变)。
7. 证据清单
_r95_backend.log(后端全量日志)、_r95_agg.json(聚合)
_r95_pytest.log(本机 langgraph pytest)
_r95_dx_cfg.js(DX 临时配置,已删除)
_dispatch_251.cjs(251 派发脚本,本轮修正 provider/结果解析)
- 251 派发会话:
ses_e43af17beffeG46teMrzft7srI(首次成功派发)、ses_e439748c6ffeFGAb34m2J5w9Mp(pytest 实派)、ses_e439319d1ffejz7626dCYXFa85(chat 200 验证)
- 签名 v2 契约:
cfc-frontend/__tests__/pages/signature/signature.canvas2d.test.js(新增)、signature.landscape.superseded.js(归档)
- 台账:
tests/test-cases/signature.md(v2 重写)、docs/tdd/test/blockers.md(B-77/B-78/B-75 系列更新 + B-81/B-82 新增)
- R94 基线:
docs/tdd/test/automation-run-2026-11-08-R94.md