From 2309e31e749a8db7d7e0904fdf0cec416d7e0975 Mon Sep 17 00:00:00 2001 From: John Qiu Date: Mon, 16 Mar 2026 11:40:47 +1030 Subject: [PATCH] =?UTF-8?q?refactor(skills):=20=E6=BE=84=E6=B8=85=20dev-te?= =?UTF-8?q?st=20=E4=B8=8E=20req-test-gate=20=E7=9A=84=E8=81=8C=E8=B4=A3?= =?UTF-8?q?=E8=BE=B9=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - dev-test: 移除 "Gate 4" 编号,改用 "E2E 冒烟门禁"(避免与 req-test-gate 的 Gate 编号冲突) - dev-test: 添加与 req-test-gate 的关系说明(本文档定义执行技术,门禁流程在 req-test-gate) - req-test-gate: 2C 联调节新增无后端替代方案提示,引用 dev-test 的 API Mock 模式 - req-test-gate: Gate 5 前端回归贡献引用 dev-test 的 e2e-testing.md Co-Authored-By: Claude Opus 4.6 --- .../dev-test-plugin/skills/dev-test/SKILL.md | 2 +- .../skills/dev-test/e2e-testing.md | 21 ++++++++++++------- .../req-test-gate-plugin/skills/SKILL.md | 3 ++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/skills-dev/dev-test-plugin/skills/dev-test/SKILL.md b/skills-dev/dev-test-plugin/skills/dev-test/SKILL.md index 3b581ce..3b055cf 100644 --- a/skills-dev/dev-test-plugin/skills/dev-test/SKILL.md +++ b/skills-dev/dev-test-plugin/skills/dev-test/SKILL.md @@ -139,5 +139,5 @@ ai-proj task append-doc --id --content "# 测试报告 5. **持续集成** - 每次提交运行 6. **Biz 层禁止 Mock** - biz/service 层必须使用真实 PostgreSQL test DB + 真实 store,mock 等于没测 7. **Mock 仅限 Handler 层** - handler 层可以 mock biz 接口 + httptest -8. **Gate 4 必须用 API Mock E2E** - E2E 门禁不能依赖后端,否则形同虚设。用 `page.route()` 拦截 API,见 `e2e-testing.md` +8. **E2E 冒烟测试必须用 API Mock** - E2E 门禁不能依赖后端,否则形同虚设。用 `page.route()` 拦截 API,见 `e2e-testing.md`。质量门禁流程(Gates 1-5)定义在 `req-test-gate` 技能中 9. **李宁测试用例** - Excel 导出见 `coolbuy-legacy` 技能的 `test-cases-excel.md` diff --git a/skills-dev/dev-test-plugin/skills/dev-test/e2e-testing.md b/skills-dev/dev-test-plugin/skills/dev-test/e2e-testing.md index da1eb2a..17f35bd 100644 --- a/skills-dev/dev-test-plugin/skills/dev-test/e2e-testing.md +++ b/skills-dev/dev-test-plugin/skills/dev-test/e2e-testing.md @@ -4,10 +4,12 @@ | 模式 | 后端依赖 | 速度 | 适用场景 | 门禁阶段 | |------|---------|------|---------|---------| -| **API Mock 冒烟测试** | ❌ 无需后端 | 快(<30s) | UI 布局、路由、菜单、权限隔离 | Gate 4 自动化门禁 | +| **API Mock 冒烟测试** | ❌ 无需后端 | 快(<30s) | UI 布局、路由、菜单、权限隔离 | E2E 冒烟门禁 | | **全链路集成测试** | ✅ 需完整后端+DB | 慢(分钟级) | CRUD 业务流程、数据持久化 | 手动/CI | -**⚠️ 关键原则:Gate 4 E2E 门禁必须使用 API Mock 模式,不依赖后端。** 依赖后端的 E2E 在开发机上经常跑不通(后端没启动、DB 未初始化),导致门禁形同虚设。 +**⚠️ 关键原则:E2E 冒烟门禁必须使用 API Mock 模式,不依赖后端。** 依赖后端的 E2E 在开发机上经常跑不通(后端没启动、DB 未初始化),导致门禁形同虚设。 + +> **与 req-test-gate 的关系**:本文档定义 E2E 测试的**执行技术**(怎么写 mock、怎么跑)。质量门禁流程(Gates 0-5、scope 分级、文档持久化)定义在 `req-test-gate` 技能中。 --- @@ -212,13 +214,18 @@ test.describe('路由重定向', () => { | **chromium 未安装** | `Executable doesn't exist` | `npx playwright install chromium` | | **前端 proxy** | API 请求未被 route 拦截 | `page.route()` 在浏览器层拦截,不受 webpack proxy 影响 | -### 5. Gate 4 集成(dev-test 5-Gate 流程) +### 5. 与 req-test-gate 门禁集成 + +本节的 API Mock 冒烟测试对应 `req-test-gate` 中以下阶段: +- **Gate 2 → 2A (T4b)**: 前端构建验证(`vite build` / `craco build`) +- **Gate 2 → 2C (IT6)**: 页面可访问性验证(API Mock 代替真实后端) +- **Gate 5**: 回归贡献中的 E2E 场景描述 ```bash # package.json 新增命令 "test:e2e:smoke-mock": "playwright test --config=playwright.smoke.config.ts" -# Gate 4 执行流程: +# 执行流程: # 1. 确认 chromium 已安装 npx playwright install chromium @@ -228,10 +235,10 @@ npm run test:e2e:smoke-mock # 3. 解析 e2e-smoke-results.json 判定通过/失败 ``` -**Gate 4 判定标准**: -- ✅ 全部通过 → Gate 4 Pass +**判定标准**: +- ✅ 全部通过 → Pass - ⚠️ 部分失败但非核心路径 → 记录失败项,人工判定 -- ❌ 核心路径失败(登录、主导航、角色隔离)→ Gate 4 Fail,阻断发布 +- ❌ 核心路径失败(登录、主导航、角色隔离)→ Fail,阻断发布 ### 6. 适合 Mock E2E 验证的场景 diff --git a/skills-req/req-test-gate-plugin/skills/SKILL.md b/skills-req/req-test-gate-plugin/skills/SKILL.md index 9303efe..7562a7b 100644 --- a/skills-req/req-test-gate-plugin/skills/SKILL.md +++ b/skills-req/req-test-gate-plugin/skills/SKILL.md @@ -122,6 +122,7 @@ git diff main...HEAD --name-only | classify_scope **不触发**:scope 为 `backend`、`style-only`,或前端改动不涉及 API 调用 **环境要求**:本地开发环境,前端 :3000 + 后端 :8080 同时运行 +> **无后端替代方案**:IT6 页面可访问性验证可用 Playwright API Mock 模式(`page.route()`)替代真实后端。详见 `dev-test` 技能的 `e2e-testing.md` §API Mock 冒烟测试。 **前置步骤**: 1. 确认本地数据库已执行相关 migration(菜单、表结构等) @@ -357,7 +358,7 @@ Task({ | scope | 贡献形式 | 示例 | |-------|---------|------| | `backend` | curl 脚本(API 回归) | `curl -X POST .../api` → 201 | -| `frontend` | E2E 场景描述(Playwright) | 页面加载 + 核心交互验证 | +| `frontend` | E2E 场景描述(Playwright API Mock) | 页面加载 + 核心交互验证。编写模式见 `dev-test` 技能 `e2e-testing.md` | | `style-only` | 视觉回归 checklist | 断点覆盖 + !important 审计 | | `fullstack` | curl 脚本 + E2E 场景 | 两者都需要 |