Просмотр исходного кода

test(tdd): 补充 E2E 执行结果,标记 R3 已解决,新增 T4/F1

- R3 已解决:测试账号 13800138000 实跑 E2E 登录+鉴权+API 可达(5 通过/2 失败)
- T4:主配置 globalSetup 强制连内网 MySQL 重置,阻断远程只读 E2E(已临时绕过,建议研发加 SKIP_DB_RESET 开关)
- F1:butler 列表返回 data.list 而 activity 列表返回 data.records,envelope 不一致(R2 确切实例)
E2E Test Bot 1 неделя назад
Родитель
Сommit
b4d851b093
1 измененных файлов с 27 добавлено и 4 удалено
  1. 27 4
      docs/tdd/test/test_blockers.md

+ 27 - 4
docs/tdd/test/test_blockers.md

@@ -28,11 +28,34 @@
 |---|---|---|---|---|
 | R1 | 后端 Controller 测试覆盖缺口巨大 | 357 个 Controller / 1933 个 handler 仅覆盖 199(**10.3%**);`admin` 模块 120 个中 103 个完全无测试(见 `discovery.md`) | 核心管理接口无回归保护,测试覆盖目标无法达成 | 按 `runbook.md` §2 缺口 backlog 补 `admin`(P0)→`guide`/`family`(P1)→`mind`/`assessment`(P2) 的单测与接口测试 |
 | R2 | API 契约疑似不一致 | 此前发现 `/api/articles/report-reading-time` 返回 `biz=500` 但 `message="success"`(字段语义矛盾) | 自动化断言无法稳定判定成功/失败,易误报 | 研发在 `cfc.iwintrue.com` 复测确认,明确 `biz` 与 `message` 语义并修复或文档化契约 |
-| R3 | 测试环境无可用测试管理员账号 | `tests/e2e/admin-activity-review.spec.js` 等依赖 `/api/admin-auth/login-by-password` 登录取 `Bearer` token;当前无测试账号/密码 | E2E 在登录步即失败,**无法推进带登录态的端到端测试** | 研发/运维在 `cfc.iwintrue.com` 预置专用测试管理员账号并交付凭证(账号/密码/角色) |
+| R3 | 测试环境无可用测试管理员账号 | `tests/e2e/admin-activity-review.spec.js` 等依赖 `/api/admin-auth/login-by-password` 登录取 `Bearer` token;仓库内已硬编码测试账号 `13800138000` | E2E 在登录步即失败,**无法推进带登录态的端到端测试** | **已解决(2026-11-01):已确认测试账号 `13800138000`,实跑 E2E 登录+鉴权+API 全部可达** |
 | R4 | 无 CI 流水线 / 无测试门禁 | 仓库无 `.github/workflows` 等 CI 配置;测试未纳入合并门禁 | 回归无自动拦截,已写测试随改动腐化 | 建 CI:`mvn test` + `pytest` + `playwright`(接 `cfc.iwintrue.com`)作为合并门禁 |
 
-## 3. 下一步
+## 3. 新增测试侧阻碍(执行中暴露,直接处理)
 
-- **测试侧**:T1 安装完成后,可对 `cfc.iwintrue.com` 跑无登录态 smoke;带登录态 admin E2E 待 R3 凭证到位后执行。
-- **研发侧**:请研发认领 R1–R4(见上表),其中 R3 是解锁端到端测试的关键前置。
+| 编号 | 阻碍 | 证据 | 处理 |
+|---|---|---|---|
+| T4 | 主配置 `globalSetup`(`e2e/helpers/db.js`)**强制**连内网 MySQL `192.168.16.251` 做 DB 重置+灌种子,无跳过开关,失败即 `process.exit(1)` | 远程只读 E2E 不需要重置内网库;本沙箱路由不到该内网地址 → `Access denied` 阻断一切 E2E | 已用**临时无重置配置**(`playwright.config.noreset.js`,不提交)绕过;**建议研发给 `db.js` 加 `SKIP_DB_RESET` 开关**,使针对远程测试环境的只读 E2E 可跳过本地库重置 |
+
+## 4. 已执行 E2E 结果(只读子集,2026-11-01)
+
+- 环境/凭证:针对 `http://cfc.iwintrue.com`,测试账号 `13800138000`,临时无重置配置,仅跑只读用例(登录 + 列表/查询)。
+- 结果:**5 通过 / 2 失败**(7 个只读用例,耗时 27.4s)。
+
+| 用例 | 文件 | 结果 |
+|---|---|---|
+| login and list draft | admin-activity-review | ✅ 通过(登录+活动列表正常) |
+| service records exist | admin-butler-review | ✅ 通过 |
+| settlements endpoint reachable | admin-butler-review | ✅ 通过 |
+| get config | admin-commission-config | ✅ 通过 |
+| records | admin-commission-config | ✅ 通过 |
+| list pending | admin-butler-review | ❌ 失败 |
+| list approved for assignment | admin-butler-review | ❌ 失败 |
+
+**失败根因(F1,契约不一致的确切实例,归属 R2)**:两个管家列表用例断言 `j.data.records`,但接口实际返回 `{"list":[],"page":1,"size":10,"total":0}`——即 **butler 列表返回 `data.list`,而 activity 列表返回 `data.records`**,后端列表接口 envelopes 不统一。需研发确认 butler 列表应返回 `records` 还是测试应改为 `list`。
+
+## 5. 下一步
+
+- **测试侧**:R3 已解决,T1/T2/T3 已执行;T4 已临时绕过(建议研发加跳过开关)。可对 `cfc.iwintrue.com` 跑更多只读/读写入 E2E(写操作如 review/assign/update 待你确认后再跑,以免在测试环境产生副作用)。
+- **研发侧**:请研发认领 R1–R2、R4,并确认 **F1(butler 列表 envelope 不一致)** 的正确形态。
 - **本机执行项**(Java 单测 / Python pytest):按 `runbook.md` §3.1–§3.3 在开发机执行,结果回填 `.tdd/test-progress.json` 后刷新共享台账。