فهرست منبع

test(tdd): 新增测试阻碍分析与分派,明确测试目标环境为 cfc.iwintrue.com

- test_blockers.md: 阻碍分析——研发/设计侧 R1(Controller覆盖缺口) R2(API契约) R3(测试环境缺管理员凭证) R4(无CI) 提交研发;测试侧 T1-T3 已执行
- runbook.md: 测试目标环境明确为 http://cfc.iwintrue.com,修正 localhost:9082 旧表述,补充 PW_BASE_URL 命令
E2E Test Bot 1 هفته پیش
والد
کامیت
e8d82bfeb8
2فایلهای تغییر یافته به همراه59 افزوده شده و 7 حذف شده
  1. 21 7
      docs/tdd/test/runbook.md
  2. 38 0
      docs/tdd/test/test_blockers.md

+ 21 - 7
docs/tdd/test/runbook.md

@@ -3,6 +3,7 @@
 > 生成日期:2026-11-01 | 模式:discovery-only(发现/跟踪)
 > 生成日期:2026-11-01 | 模式:discovery-only(发现/跟踪)
 > 本仓库的 tdd-orchestrator 定位为「发现 / 格式化 / 跟踪已有测试」,**实际跑测试在开发机完成**
 > 本仓库的 tdd-orchestrator 定位为「发现 / 格式化 / 跟踪已有测试」,**实际跑测试在开发机完成**
 > (需 mvn / MySQL / 已配好的 Python 环境)。本沙箱负责发现、编目、规划与进度跟踪。
 > (需 mvn / MySQL / 已配好的 Python 环境)。本沙箱负责发现、编目、规划与进度跟踪。
+> **⚠️ 测试目标环境:`http://cfc.iwintrue.com`(远程测试环境)。本机跑测试只针对该环境,不指向本地后端 / 不指向生产。**
 
 
 ## 1. 当前测试资产(只读扫描,2026-11-01)
 ## 1. 当前测试资产(只读扫描,2026-11-01)
 
 
@@ -58,21 +59,33 @@ pip install -r requirements.txt pytest pysqlite3   # 含 chromadb/langchain/deep
 pytest tests -q
 pytest tests -q
 ```
 ```
 
 
-### 3.4 Playwright E2E(需后端 9082 在跑)
+### 3.4 Playwright E2E / API(针对 cfc.iwintrue.com 测试环境)
+
+> 项目 Playwright 配置**默认已指向测试环境**:
+> - `playwright.config.api.js` → baseURL 直接 `http://cfc.iwintrue.com`(API 级 e2e)
+> - `playwright.config.js`(主) → 默认 `http://cfc.iwintrue.com`(可用 `PW_BASE_URL` 覆盖)
+> - `playwright.config.func.js` / `playwright.config.smoke.js` → 默认 `http://127.0.0.1:9082`,**跑测试环境需显式覆盖**
+> - `e2e_complete_test.py` → `BASE = http://cfc.iwintrue.com:80`
+
 ```bash
 ```bash
 cd tests
 cd tests
 npm install
 npm install
 npx playwright install chromium
 npx playwright install chromium
-npx playwright test --project=smoke          # 冒烟子集
-npx playwright test                          # 全量
+# 针对测试环境(func/smoke 需带 PW_BASE_URL;api/主配置默认即是)
+PW_BASE_URL=http://cfc.iwintrue.com npx playwright test --project=api      # API 级 e2e(默认指向测试环境)
+PW_BASE_URL=http://cfc.iwintrue.com npx playwright test --project=smoke    # 冒烟(覆盖 localhost 默认)
+PW_BASE_URL=http://cfc.iwintrue.com npx playwright test --project=func     # 功能(覆盖 localhost 默认)
+PW_BASE_URL=http://cfc.iwintrue.com npx playwright test                    # 全量
+# Python 端到端(已硬编码 cfc.iwintrue.com:80)
+python e2e_complete_test.py
 ```
 ```
 
 
 ## 4. 推荐执行顺序(先立基线,再补重依赖)
 ## 4. 推荐执行顺序(先立基线,再补重依赖)
 
 
-1. **Java 纯单测子集** —— 最快建立通过基线,无需基础设施。
-2. **Python pytest** —— 需装完整依赖(较重,原生包可能耗时)。
-3. **Java 集成测试** —— 起 MySQL + Redis 后跑。
-4. **Playwright E2E** —— 后端 9082 起来后跑冒烟。
+1. **Java 纯单测子集** —— 最快建立通过基线,本地编译运行、不依赖远程(验证代码层,非环境层)。
+2. **Python pytest** —— 需装完整依赖(较重,原生包可能耗时),本地运行。
+3. **Java 集成测试** —— 连测试环境 DB/Redis 或本地基础设施后跑(环境层验证)。
+4. **Playwright E2E / API** —— 针对 `cfc.iwintrue.com` 测试环境跑(见 3.4,func/smoke 带 `PW_BASE_URL`)。
 
 
 ## 5. 进度跟踪(本沙箱侧车)
 ## 5. 进度跟踪(本沙箱侧车)
 
 
@@ -90,4 +103,5 @@ npx playwright test                          # 全量
 
 
 - **先补 `admin` 模块**(103 未覆盖,核心管理接口),再 `guide` / `family` / `mind` / `assessment`。
 - **先补 `admin` 模块**(103 未覆盖,核心管理接口),再 `guide` / `family` / `mind` / `assessment`。
 - 在开发机执行完任一子集后,把结果回填侧车(`通过 / 失败 / 阻塞`),再跑 `test_inventory.py` 刷新共享台账。
 - 在开发机执行完任一子集后,把结果回填侧车(`通过 / 失败 / 阻塞`),再跑 `test_inventory.py` 刷新共享台账。
+- 所有 E2E / API 测试一律针对 `http://cfc.iwintrue.com` 测试环境;Java 单测为本地代码层验证,集成测试连测试环境基础设施。
 - 本沙箱不推送 `.tdd/`;`docs/tdd/test/*.md` 可提交推送给测试团队。
 - 本沙箱不推送 `.tdd/`;`docs/tdd/test/*.md` 可提交推送给测试团队。

+ 38 - 0
docs/tdd/test/test_blockers.md

@@ -0,0 +1,38 @@
+# CFC · 测试工作阻碍分析与分派
+
+> 生成日期:2026-11-01 | 模式:discovery-only | 测试目标环境:`http://cfc.iwintrue.com`
+> 用途:判断"下一步测试"能否推进;按阻碍归属分类——**研发/需求/设计类提交研发,测试侧直接执行**。
+
+## 0. 结论:下一步测试能否推进?
+
+**部分可推进。** 本 Agent 沙箱已具备 `node v22.22.2` + `@playwright/test` 模块,测试目标环境 `cfc.iwintrue.com` 可达(0.08s 响应);但:
+
+- **纯测试基础设施**(Playwright chromium 浏览器)缺失 → 测试侧可直接修复(见 T1,已执行安装)。
+- **实际 E2E 执行的硬阻碍**是「测试环境管理员凭证缺失」(R3,研发/运维侧)——依赖登录的 admin E2E 在登录步即失败。
+- **Java 单测 / Python pytest** 在本沙箱无执行器(`mvn` / `pytest` 均缺失),按用户说明在**本机**执行,不属阻碍测试工作的研发/设计问题,不计入本分派。
+- **研发侧存在结构性缺口**(覆盖缺口 R1、契约不一致 R2、无 CI R4),需提交研发。
+
+## 1. 测试侧阻碍(直接执行,不提交研发)
+
+| 编号 | 阻碍 | 证据 / 现状 | 处理动作 |
+|---|---|---|---|
+| T1 | Playwright chromium 浏览器未安装 | `tests/node_modules/playwright-core/.local-browsers` 缺失;全局无 chromium | 已执行 `npx playwright install chromium`(本沙箱,后台进行) |
+| T2 | func/smoke 配置默认指向 `localhost:9082` | `playwright.config.func.js` / `.smoke.js` 默认 baseURL 为 `127.0.0.1:9082` | 已用 `PW_BASE_URL=http://cfc.iwintrue.com` 覆盖,runbook §3.4 已记录命令 |
+| T3 | 测试目标环境未在文档写明 | 易误跑本地后端 / 生产 | 已在 `.tdd/config.json`(`test_target_env`) + `runbook.md` 顶部写明 `cfc.iwintrue.com` |
+
+> T1 完成后,本沙箱具备对 `cfc.iwintrue.com` 跑**无登录态** smoke 的能力;**带登录态**的 admin E2E 仍受 R3 阻塞。
+
+## 2. 提交给研发的阻碍(研发 / 需求 / 设计相关)
+
+| 编号 | 阻碍 | 证据 | 对测试工作的影响 | 建议研发动作 |
+|---|---|---|---|---|
+| 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` 预置专用测试管理员账号并交付凭证(账号/密码/角色) |
+| R4 | 无 CI 流水线 / 无测试门禁 | 仓库无 `.github/workflows` 等 CI 配置;测试未纳入合并门禁 | 回归无自动拦截,已写测试随改动腐化 | 建 CI:`mvn test` + `pytest` + `playwright`(接 `cfc.iwintrue.com`)作为合并门禁 |
+
+## 3. 下一步
+
+- **测试侧**:T1 安装完成后,可对 `cfc.iwintrue.com` 跑无登录态 smoke;带登录态 admin E2E 待 R3 凭证到位后执行。
+- **研发侧**:请研发认领 R1–R4(见上表),其中 R3 是解锁端到端测试的关键前置。
+- **本机执行项**(Java 单测 / Python pytest):按 `runbook.md` §3.1–§3.3 在开发机执行,结果回填 `.tdd/test-progress.json` 后刷新共享台账。