csspilot 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,16 @@
1
1
  # Workflow:创建测试 Case
2
2
 
3
- 输入:用户的一句业务需求(如"帮我测试用户下单")。
3
+ 输入:用户需求,或 `test-requirements-review` 产出的**测试点清单**(推荐先做需求评审)。
4
4
 
5
- 1. 阅读本 Skill:`rules/dsl.md`、`rules/case-design.md`、`rules/locator.md`。
6
- 2. 分析项目结构:确定被测端(miniapp / web)与业务入口页面。
7
- 3. 找到业务路径上的真实页面与组件,收集证据(读代码 / DOM / 现有测试)。
8
- 4. 确定测试路径:从入口到业务结果页的完整步骤。
9
- 5. 按 DSL 规范生成 Case,写入 `tests/e2e/cases/<case-id>.yaml`。
5
+ 1. 尚无测试点清单时,先执行 `workflows/test-requirements-review.md`;已有清单则直接使用。
6
+ 2. 阅读本 Skill:`rules/dsl.md`、`rules/case-design.md`、`rules/locator.md`。
7
+ 3. 分析项目结构:确定被测端(miniapp / web)与业务入口页面。
8
+ 4. 针对测试点收集证据(读代码 / DOM / 现有测试),确定业务路径:从入口到业务结果页的完整步骤。
9
+ 5. 按 DSL 规范生成 Case,写入 `tests/e2e/cases/<case-id>.yaml`:
10
+ - 一条 Case 覆盖一个测试点(或一组强关联测试点)
11
+ - Case 的 `description` 注明关联的测试点编号(如 `测试点: TP-001`),保持需求可溯源
12
+ - 按评审产出的平台执行信息声明 `accountRef` / `workspace`;发现 `.env` 缺少某平台的地址或凭据变量时,向用户索取后写入 `.env`,**不写进 Case**
10
13
  6. 执行 `npx csspilot validate tests/e2e/cases/<case-id>.yaml`。
11
14
  7. 校验失败则修复 Case 后重新 validate,直到通过。
12
15
 
13
- 禁止:跳过第 2-3 步直接生成 Case(AI 不能凭空生成测试)。
16
+ 禁止:跳过第 3-4 步直接生成 Case(AI 不能凭空生成测试)。
@@ -16,4 +16,5 @@ CLI → Case Loader → DSL Validator → Execution Engine → Adapter(Playwrigh
16
16
 
17
17
  - 只通过 testpilot CLI 执行测试,不要直接调用 playwright 或 wechat-devtools。
18
18
  - 被测服务需先就绪(如业务后端、本地页面服务),`navigate` 的相对 url 基于 testpilot.yaml 的 `web.baseUrl` 解析。
19
+ - 环境变量来源:shell / CI secrets,或项目根目录 `.env` 文件(CLI 自动加载,真实环境变量优先);`.env` 含敏感信息,确认已加入 .gitignore。
19
20
  - 运行产物写入 `.testpilot/artifacts/runs/<run-id>/`(screenshots / traces / logs)。
@@ -0,0 +1,61 @@
1
+ # Workflow:测试需求评审(可测性评审 + 测试点分析)
2
+
3
+ 输入:需求文档 / PRD / 用户的一句话(如"帮我测试用户下单")。
4
+ 产出:**测试点清单** + **平台执行信息表** + 澄清问题 + 评审结论。测试点清单是 `create-case` 的正式输入。
5
+
6
+ ## 步骤
7
+
8
+ 1. **复述理解**:用自己的话列出需求覆盖的功能点与业务流程,向用户确认理解偏差。
9
+ 2. **平台盘点**:识别需求涉及的执行端(miniapp / web / api)。跨端需求(如"小程序下单、Web 后台验证")必须逐平台澄清执行信息,见下方"多平台"一节。
10
+ 3. **可测性检查清单**(逐项过):
11
+ - 验收标准是否明确:输入 / 操作步骤 / 预期结果是否可判定
12
+ - 边界与异常:空值、极值、重复提交、并发、权限、网络异常
13
+ - 数据准备可行性:测试账号、mock 数据、上下游依赖是否可用
14
+ - 平台与入口:miniapp / web 的页面路径与入口是否真实存在(不确定时先看项目代码)
15
+ - 回归范围:改动是否影响现有功能,需要哪些已有 Case 回归
16
+ 4. **输出测试点清单**,每条包含:
17
+
18
+ | 字段 | 说明 |
19
+ | --- | --- |
20
+ | 编号 | `TP-001` 格式,Case 需回链 |
21
+ | 模块 | 所属功能模块 |
22
+ | 场景 | 一句话描述验证什么 |
23
+ | 类型 | 正向 / 边界 / 异常 |
24
+ | 优先级 | P0 / P1 / P2 |
25
+ | 平台 | miniapp / web / 双端 |
26
+
27
+ 5. **澄清阻塞项**:需求缺失、矛盾、不可判定时,列出问题向用户提问。**不猜测**。
28
+ 6. **给出评审结论**:
29
+ - 可测:测试点清单完整,直接进入 `create-case`
30
+ - 有条件可测:部分测试点依赖澄清,先对可执行部分建 Case
31
+ - 不可测:说明缺口,等待需求补充
32
+
33
+ ## 多平台:平台执行信息澄清
34
+
35
+ 需求涉及多个平台时,**每个平台都必须澄清以下三项**;缺任何一项,该平台相关测试点只能标记"有条件可测",不得开始写 Case:
36
+
37
+ | 平台 | 必须澄清 | 落地位置 |
38
+ | --- | --- | --- |
39
+ | web | 测试地址(baseUrl)+ 页面入口路由 + 登录角色 | `.env` 的 `WEB_BASE_URL` / `TEST_BASE_URL`;`accountRef` |
40
+ | miniapp | 小程序项目路径 + 起始页面路由 + 登录角色(连哪个环境后端) | `.env` 的 `MINIAPP_PROJECT_PATH`;`accountRef` |
41
+ | api | 服务 baseUrl + 鉴权方式(token / session)+ 账号角色 | `.env` 的 `API_BASE_URL`;`accountRef` |
42
+
43
+ 规则:
44
+
45
+ - **登录角色**:每个平台确认用什么角色(普通用户 / 管理员 / 游客),映射为 `accountRef`(如 `admin` / `test-user`);真实凭据放 `TESTPILOT_ACCOUNT_<REF大写>` 环境变量或 Server Secrets,**禁止写进 Case**
46
+ - **测试地址**:一律指向测试环境,写入 `.env`(如 `WEB_BASE_URL`);**禁止把内网 / 生产地址写进 Case 或 testpilot.yaml**
47
+ - **使用 Workspace 的项目**:以上信息应登记为 Workspace 的绑定(项目 → 环境),Case 用 `workspace: <名称>` 声明,不逐条硬编码
48
+
49
+ ### 澄清问题示例(多平台需求)
50
+
51
+ - Web 后台的测试地址是什么?订单查询页面的入口路由是?
52
+ - 小程序连接哪个环境的后端?小程序项目目录在本机哪里?
53
+ - 各平台分别用什么角色登录(普通用户 / 管理员)?该角色是否有完成流程所需的权限?
54
+ - 这些地址和账号是否已写入 `.env`?缺哪个我来补?
55
+
56
+ ## 铁律
57
+
58
+ - 没有测试点清单,不要进入 `create-case`。
59
+ - 涉及多平台但执行信息(地址 / 入口 / 登录角色)不全时,结论只能是"有条件可测",先澄清再建 Case。
60
+ - 评审基于需求 + 项目代码/页面证据;两项都没有时先收集证据,不空谈。
61
+ - 每个测试点必须可验证:都能回答"怎么判定通过"。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "csspilot",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "TestPilot — AI Native 跨端业务测试基础设施 CLI",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -17,23 +17,23 @@
17
17
  "files": [
18
18
  "dist"
19
19
  ],
20
- "scripts": {
21
- "build": "node build.mjs",
22
- "dev": "tsx src/bin.ts",
23
- "start": "tsx src/bin.ts",
24
- "typecheck": "tsc --noEmit"
25
- },
26
20
  "dependencies": {
27
21
  "miniprogram-automator": "^0.12.0",
28
22
  "playwright": "^1.53.0"
29
23
  },
30
24
  "devDependencies": {
31
- "@testpilot/core": "workspace:^",
32
- "@testpilot/sdk": "workspace:^",
33
25
  "@types/node": "^22.0.0",
34
26
  "commander": "^12.0.0",
35
27
  "esbuild": "^0.25.0",
36
28
  "tsx": "^4.19.0",
37
- "typescript": "^5.5.0"
29
+ "typescript": "^5.5.0",
30
+ "@testpilot/core": "^0.1.0",
31
+ "@testpilot/sdk": "^0.1.0"
32
+ },
33
+ "scripts": {
34
+ "build": "node build.mjs",
35
+ "dev": "tsx src/bin.ts",
36
+ "start": "tsx src/bin.ts",
37
+ "typecheck": "tsc --noEmit"
38
38
  }
39
- }
39
+ }