csspilot 0.3.2 → 0.5.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.
@@ -12,6 +12,7 @@ TestPilot is a **tool, not a business test project**. Business cases always belo
12
12
 
13
13
  Use TestPilot when the user wants to:
14
14
 
15
+ - review test requirements for testability
15
16
  - create business test cases
16
17
  - validate test cases
17
18
  - run tests
@@ -20,12 +21,13 @@ Use TestPilot when the user wants to:
20
21
  ## Core workflow
21
22
 
22
23
  1. Understand user requirement
23
- 2. Inspect project
24
- 3. Identify test target
25
- 4. Create TestPilot Case (`tests/e2e/cases/*.yaml`)
26
- 5. Validate Case (`npx csspilot validate`)
27
- 6. Run Case (`npx csspilot run`)
28
- 7. Analyze result (`npx csspilot report`)
24
+ 2. Review requirements & produce test points (`workflows/test-requirements-review.md`)
25
+ 3. Inspect project
26
+ 4. Identify test target
27
+ 5. Create TestPilot Case (`tests/e2e/cases/*.yaml`, linked to test point IDs)
28
+ 6. Validate Case (`npx csspilot validate`)
29
+ 7. Run Case (`npx csspilot run`)
30
+ 8. Analyze result (`npx csspilot report`)
29
31
 
30
32
  ## Important rules
31
33
 
@@ -72,4 +74,5 @@ Read `references/` first (generated by `csspilot init` for this project):
72
74
  - `rules/dsl.md` — case structure and the V0.1 action set
73
75
  - `rules/locator.md` — locator forms and the no-invention rule
74
76
  - `rules/assertion.md` — assertions and variable references
75
- - `workflows/` — step-by-step workflows (create / validate / run / analyze)
77
+ - `workflows/test-requirements-review.md` — requirements review, test point checklist
78
+ - `workflows/` — step-by-step workflows (review / create / validate / run / analyze)
@@ -2,12 +2,13 @@
2
2
  # `npx csspilot init` 会把整个 skills/testpilot/ 安装到业务项目 .agents/skills/testpilot/
3
3
  id: testpilot
4
4
  name: TestPilot
5
- version: 0.2.0
5
+ version: 0.5.0
6
6
 
7
7
  description: >
8
8
  AI Native cross-platform testing skill.
9
9
 
10
10
  capabilities:
11
+ - test-requirements-review
11
12
  - create-case
12
13
  - validate
13
14
  - run
@@ -37,4 +38,4 @@ permissions:
37
38
  - npx
38
39
  - pnpm
39
40
  - npm
40
- - testpilot
41
+ - csspilot
@@ -2,11 +2,12 @@
2
2
 
3
3
  1. 执行 `npx csspilot report` 生成报告。
4
4
  2. 产物位于 `.testpilot/artifacts/runs/<run-id>/`:
5
- - `report.json` —— 结构化结果,AI 优先读这个:`{ generatedAt, summary: { runId, status, totals, cases: [{ caseId, status, steps: [{ index, target, action, status, durationMs, error?, screenshot?, extracted? }] }] } }`
6
- - `report.html` —— 人类可读报告
7
- - `screenshots/`、`traces/`、`logs/` —— 失败取证
8
- 3. 失败分析顺序:report.json 中失败步骤的 `error` 信息 → 对应 `screenshot` → `logs/run.log` → `events.ndjson`。
5
+ - `report.json` —— 结构化结果,AI 优先读这个:`{ generatedAt, summary: { runId, status, totals, cases: [{ caseId, status, steps: [{ index, target, action, status, durationMs, error?, screenshot?, extracted? }] }] }, history(最近 12 次运行趋势), failures(失败分类明细:category / caseId / message) }`;失败步骤的 `category` ∈ assert / element / adapter / env / timeout / other
6
+ - `report.html` —— 交互式报告(步骤树、失败分类筛选、历史趋势)
7
+ - `screenshots/`、`videos/`、`traces/`、`logs/` —— 失败取证
8
+ 3. 失败分析顺序:report.json 中失败步骤的 `category` 与 `error` → 对应 `screenshot` → `logs/run.log` → `events.ndjson`。
9
9
  4. 得出结论:
10
10
  - Case 问题(locator 过期、步骤错误)→ 修改 Case,重新 validate → run
11
11
  - 产品 bug → 停止修改 Case,向用户报告证据与结论
12
- 5. 不要在未分析 Evidence 的情况下盲目重跑或修改 Case。
12
+ 5. 历史趋势中出现反复失败的用例(intermittent / flaky)要在结论中单独标注。
13
+ 6. 不要在未分析 Evidence 的情况下盲目重跑或修改 Case。
@@ -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 不能凭空生成测试)。
@@ -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.2",
3
+ "version": "0.5.0",
4
4
  "description": "TestPilot — AI Native 跨端业务测试基础设施 CLI",
5
5
  "license": "MIT",
6
6
  "repository": {