|
|
@@ -8,7 +8,7 @@
|
|
|
**部分可推进。** 本 Agent 沙箱已具备 `node v22.22.2` + `@playwright/test` 模块,测试目标环境 `cfc.iwintrue.com` 可达(0.08s 响应);但:
|
|
|
|
|
|
- **纯测试基础设施**(Playwright chromium 浏览器)缺失 → 测试侧可直接修复(见 T1,已执行安装)。
|
|
|
-- **实际 E2E 执行的硬阻碍**是「测试环境管理员凭证缺失」(R3,研发/运维侧)——依赖登录的 admin E2E 在登录步即失败。
|
|
|
+- **实际 E2E 执行的硬阻碍**曾是「测试环境管理员凭证缺失」(R3)——依赖登录的 admin E2E 在登录步即失败;**已于 2026-11-01 解决**(确认测试账号 `13800138000`,实跑 E2E 登录+鉴权+API 可达,见 §4–§5)。
|
|
|
- **Java 单测 / Python pytest** 在本沙箱无执行器(`mvn` / `pytest` 均缺失),按用户说明在**本机**执行,不属阻碍测试工作的研发/设计问题,不计入本分派。
|
|
|
- **研发侧存在结构性缺口**(覆盖缺口 R1、契约不一致 R2、无 CI R4),需提交研发。
|
|
|
|
|
|
@@ -27,7 +27,7 @@
|
|
|
| 编号 | 阻碍 | 证据 | 对测试工作的影响 | 建议研发动作 |
|
|
|
|---|---|---|---|---|
|
|
|
| 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` 语义并修复或文档化契约 |
|
|
|
+| R2 | API 契约疑似不一致 | 此前发现 `/api/articles/report-reading-time` 返回 `biz=500` 但 `message="success"`(字段语义矛盾);执行 E2E 进一步暴露:① butler 列表返回 `data.list` 而 activity 列表返回 `data.records`(F1);② `POST /api/admin/commission/config` 更新配置返回 **400**(F2,真实接口响应) | 自动化断言无法稳定判定成功/失败,易误报;写操作 E2E 大面积受 envelope 不一致牵连 | 研发在 `cfc.iwintrue.com` 复测确认,明确 `biz` 与 `message` 语义并修复或文档化契约;统一列表 envelopes(F1);排查 commission update config 400(F2) |
|
|
|
| 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`)作为合并门禁 |
|
|
|
|
|
|
@@ -54,8 +54,37 @@
|
|
|
|
|
|
**失败根因(F1,契约不一致的确切实例,归属 R2)**:两个管家列表用例断言 `j.data.records`,但接口实际返回 `{"list":[],"page":1,"size":10,"total":0}`——即 **butler 列表返回 `data.list`,而 activity 列表返回 `data.records`**,后端列表接口 envelopes 不统一。需研发确认 butler 列表应返回 `records` 还是测试应改为 `list`。
|
|
|
|
|
|
-## 5. 下一步
|
|
|
+## 5. 写操作 E2E 执行结果(全量,2026-11-01 22:35)
|
|
|
|
|
|
-- **测试侧**:R3 已解决,T1/T2/T3 已执行;T4 已临时绕过(建议研发加跳过开关)。可对 `cfc.iwintrue.com` 跑更多只读/读写入 E2E(写操作如 review/assign/update 待你确认后再跑,以免在测试环境产生副作用)。
|
|
|
-- **研发侧**:请研发认领 R1–R2、R4,并确认 **F1(butler 列表 envelope 不一致)** 的正确形态。
|
|
|
+- 范围:对 `cfc.iwintrue.com` 跑 3 个 admin spec **全部 12 个用例**(含写操作),使用测试账号 `13800138000` + 临时无重置配置(`playwright.config.noreset.js`)。
|
|
|
+- 结果:**7 通过 / 5 失败**(耗时 45.8s)。
|
|
|
+
|
|
|
+| 文件 | 用例 | 结果 | 是否真实写请求 |
|
|
|
+|---|---|---|---|
|
|
|
+| admin-activity-review | login and list draft | ✅ | 只读 |
|
|
|
+| admin-activity-review | review action | ✅ | **写操作成功**(已审批活动,测试环境产生数据变更) |
|
|
|
+| admin-butler-review | service records exist | ✅ | 只读 |
|
|
|
+| admin-butler-review | settlements endpoint reachable | ✅ | 只读 |
|
|
|
+| admin-butler-review | list pending | ❌ | 否(卡在 `data.records` 断言) |
|
|
|
+| admin-butler-review | list approved for assignment | ❌ | 否 |
|
|
|
+| admin-butler-review | review action (approve) | ❌ | 否(写请求未发出) |
|
|
|
+| admin-butler-review | assign member to approved butler | ❌ | 否(写请求未发出) |
|
|
|
+| admin-commission-config | get config | ✅ | 只读 |
|
|
|
+| admin-commission-config | records | ✅ | 只读 |
|
|
|
+| admin-commission-config | update config | ❌ | **POST 已发出,服务端返回 400**(真实接口响应,需研发确认是接口缺陷还是用例 payload 问题) |
|
|
|
+| admin-commission-config | settle and refund | ✅ | **写操作成功**(已结算+退款,测试环境产生数据变更) |
|
|
|
+
|
|
|
+**失败根因归类**:
|
|
|
+- **F1(envelope 不一致,归属 R2)**:butler 4 个失败(`list pending` / `list approved` / `review action(approve)` / `assign member`)全部因断言 `data.records` 但接口返回 `data.list`——写请求(approve/assign)在取数列表阶段即报错,**未对测试环境产生副作用**。
|
|
|
+- **F2(commission 配置更新返回 400,归属 R2)**:`POST /api/admin/commission/config` 返回 400(非 200),是真实接口响应。需研发确认:接口缺陷(update 路径/参数校验)还是测试用例 payload 缺字段。
|
|
|
+
|
|
|
+**已对测试环境产生的真实数据变更(`cfc.iwintrue.com`,按用户授权执行)**:
|
|
|
+- activity `review action`:成功审批/驳回某活动记录。
|
|
|
+- commission `settle and refund`:成功对某佣金记录执行结算 + 退款。
|
|
|
+> 如测试数据需回滚,请在 `cfc.iwintrue.com` 测试库处理。
|
|
|
+
|
|
|
+## 6. 下一步
|
|
|
+
|
|
|
+- **测试侧**:R3 已解决,T1/T2/T3 已执行,T4 已临时绕过(建议研发加 `SKIP_DB_RESET` 开关);写操作 E2E 已按授权跑完(见 §5)。可继续扩大 E2E 覆盖(其余 64 个 `e2e/*.spec.js`)或转向 Java 单测 / Python pytest(本机执行)。
|
|
|
+- **研发侧**:请认领 R1、R2(含 **F1** butler envelope 不一致、**F2** commission update config 400)、R4,并确认 F1/F2 的正确形态。
|
|
|
- **本机执行项**(Java 单测 / Python pytest):按 `runbook.md` §3.1–§3.3 在开发机执行,结果回填 `.tdd/test-progress.json` 后刷新共享台账。
|