@pzy560117/opentest 0.1.3 → 0.1.5
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.
- package/README.md +57 -8
- package/assets/manifest.json +84 -27
- package/assets/skills/opentest/SKILL.md +44 -44
- package/assets/skills/opentest/references/codex-harness-coverage-heuristics.md +55 -55
- package/assets/skills/opentest/references/lifecycle.md +1 -1
- package/assets/skills/opentest/references/matrix-format.md +14 -14
- package/assets/skills/opentest/references/opentest-driven-development.md +32 -32
- package/assets/skills/opentest/templates/acceptance-template.md +1 -1
- package/assets/skills/opentest/templates/matrix-template.md +3 -3
- package/assets/skills/opentest/templates/plan-template.md +17 -17
- package/assets/skills/opentest/templates/report-template.md +1 -1
- package/assets/skills/opentest-accept/SKILL.md +13 -13
- package/assets/skills/opentest-archive/SKILL.md +2 -2
- package/assets/skills/opentest-author/SKILL.md +14 -14
- package/assets/skills/opentest-heal/SKILL.md +2 -2
- package/assets/skills/opentest-plan/SKILL.md +17 -17
- package/assets/skills/opentest-run/SKILL.md +16 -16
- package/assets/skills/opentest-verify/SKILL.md +11 -11
- package/assets/skills-zh/opentest/SKILL.md +93 -0
- package/assets/skills-zh/opentest/references/acceptance-evidence.md +27 -0
- package/assets/skills-zh/opentest/references/codex-harness-coverage-heuristics.md +83 -0
- package/assets/skills-zh/opentest/references/command-routing.md +9 -0
- package/assets/skills-zh/opentest/references/lifecycle.md +16 -0
- package/assets/skills-zh/opentest/references/matrix-format.md +27 -0
- package/assets/skills-zh/opentest/references/opentest-driven-development.md +48 -0
- package/assets/skills-zh/opentest/references/quality-gate.md +24 -0
- package/assets/skills-zh/opentest/templates/acceptance-template.md +32 -0
- package/assets/skills-zh/opentest/templates/archive-layout.md +14 -0
- package/assets/skills-zh/opentest/templates/matrix-template.md +6 -0
- package/assets/skills-zh/opentest/templates/plan-template.md +28 -0
- package/assets/skills-zh/opentest/templates/report-template.md +28 -0
- package/assets/skills-zh/opentest-accept/SKILL.md +25 -0
- package/assets/skills-zh/opentest-archive/SKILL.md +8 -0
- package/assets/skills-zh/opentest-author/SKILL.md +27 -0
- package/assets/skills-zh/opentest-heal/SKILL.md +8 -0
- package/assets/skills-zh/opentest-plan/SKILL.md +30 -0
- package/assets/skills-zh/opentest-run/SKILL.md +28 -0
- package/assets/skills-zh/opentest-verify/SKILL.md +24 -0
- package/bin/opentest.js +318 -29
- package/package.json +1 -1
- package/scripts/prepublish-check.js +105 -6
- package/scripts/smoke-test.js +493 -23
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# OpenTest 质量门
|
|
2
|
+
|
|
3
|
+
## 阻塞项
|
|
4
|
+
|
|
5
|
+
- 构建失败
|
|
6
|
+
- 类型检查失败
|
|
7
|
+
- lint 失败
|
|
8
|
+
- 必需测试失败
|
|
9
|
+
- 必需验收失败
|
|
10
|
+
- 高风险行为缺少必需证据
|
|
11
|
+
- 必需证据标记为 blocked 但没有恢复路径
|
|
12
|
+
- 产品行为失败被隐藏成测试资产问题
|
|
13
|
+
|
|
14
|
+
## 已接受风险
|
|
15
|
+
|
|
16
|
+
- 非关键证据缺口已有书面原因
|
|
17
|
+
- 可选工具不可用,但已有替代证据
|
|
18
|
+
- 低风险行为通过 review 覆盖,而不是执行验证
|
|
19
|
+
- blocked 证据有明确原因和负责人,且行为不是 high-risk
|
|
20
|
+
|
|
21
|
+
## 非阻塞缺口
|
|
22
|
+
|
|
23
|
+
- 证据不适用于本次变更
|
|
24
|
+
- 可选覆盖维度省略且有原因
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# OpenTest 验收用例
|
|
2
|
+
|
|
3
|
+
## ACC-001
|
|
4
|
+
|
|
5
|
+
- 意图:
|
|
6
|
+
- 背景:
|
|
7
|
+
- 执行角色:
|
|
8
|
+
- 执行界面:
|
|
9
|
+
- 触发/输入:
|
|
10
|
+
- 期望反馈位置:
|
|
11
|
+
- status: pending
|
|
12
|
+
|
|
13
|
+
### 操作步骤
|
|
14
|
+
|
|
15
|
+
1.
|
|
16
|
+
|
|
17
|
+
### 期望结果
|
|
18
|
+
|
|
19
|
+
-
|
|
20
|
+
|
|
21
|
+
### 反馈契约
|
|
22
|
+
|
|
23
|
+
- 反馈位置:
|
|
24
|
+
- 视觉状态:
|
|
25
|
+
- 重试/恢复:
|
|
26
|
+
- 数据保留:
|
|
27
|
+
|
|
28
|
+
### 证据记录
|
|
29
|
+
|
|
30
|
+
- status:
|
|
31
|
+
- 备注:
|
|
32
|
+
- 产物:
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# OpenTest 测试策略
|
|
2
|
+
|
|
3
|
+
## 变更摘要
|
|
4
|
+
|
|
5
|
+
- 变更类型:
|
|
6
|
+
- 风险等级:
|
|
7
|
+
- 影响面:
|
|
8
|
+
|
|
9
|
+
## 适用覆盖面
|
|
10
|
+
|
|
11
|
+
- 必需:
|
|
12
|
+
- 不适用:
|
|
13
|
+
- gap:
|
|
14
|
+
|
|
15
|
+
## 隐性场景挖掘
|
|
16
|
+
|
|
17
|
+
- 空输入/非法输入:
|
|
18
|
+
- 网络/服务端失败:
|
|
19
|
+
- 权限/会话:
|
|
20
|
+
- 重复提交/并发/过期状态:
|
|
21
|
+
- 加载/空状态/错误/重试:
|
|
22
|
+
- 移动端/可访问性:
|
|
23
|
+
- 安全/敏感信息:
|
|
24
|
+
|
|
25
|
+
## 证据计划
|
|
26
|
+
|
|
27
|
+
| 证据层级 | 适用场景 | 命令或执行面 | 产物路径 | 状态 |
|
|
28
|
+
| --- | --- | --- | --- | --- |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# OpenTest 验证报告
|
|
2
|
+
|
|
3
|
+
## 摘要
|
|
4
|
+
|
|
5
|
+
- result:
|
|
6
|
+
- 运行模式:
|
|
7
|
+
- 验证时间:
|
|
8
|
+
|
|
9
|
+
## 命令记录
|
|
10
|
+
|
|
11
|
+
| 命令 | 退出码 | result | 日志 |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
|
|
14
|
+
## 验收证据
|
|
15
|
+
|
|
16
|
+
| ID | 是否必需 | result | 证据 | 备注 |
|
|
17
|
+
| --- | --- | --- | --- | --- |
|
|
18
|
+
|
|
19
|
+
## 矩阵覆盖
|
|
20
|
+
|
|
21
|
+
| ID | 证据层级 | 必需证据 | result | 缺口/风险 |
|
|
22
|
+
| --- | --- | --- | --- | --- |
|
|
23
|
+
|
|
24
|
+
## 质量门
|
|
25
|
+
|
|
26
|
+
- 阻塞项:
|
|
27
|
+
- 已接受风险:
|
|
28
|
+
- 非阻塞缺口:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentest-accept
|
|
3
|
+
description: "OpenTest 阶段 4:执行自然语言验收、MCP 验收或真实链路验收,并回写证据。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenTest Accept
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
|
|
10
|
+
执行必需验收项,并把 PASS、FAIL 或 blocked evidence 回写到验收用例和矩阵。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
|
|
14
|
+
1. 读取矩阵和 `docs/opentest/acceptance/`。
|
|
15
|
+
2. 对前端交互,优先用 Chrome DevTools MCP 执行真实页面验收。
|
|
16
|
+
3. 对 API 或后台链路,使用项目已有命令或直接 API 检查。
|
|
17
|
+
4. 对反馈类场景,必须观察实际呈现位置和形态;例如字段错误不能只记录“失败”,要记录是否在字段下方、表单顶部、轻提示、模态框或页面错误区显示。
|
|
18
|
+
5. 工具、环境或前置数据不可用时,记录 blocked evidence。
|
|
19
|
+
6. 更新验收记录。
|
|
20
|
+
7. 更新 `docs/loop-handoff/latest.md`(如果项目使用 Loop Handoff),记录验收结果、截图/步骤证据路径、blocked evidence 和下一步。
|
|
21
|
+
8. 运行 `bash "$OPENTEST_GUARD" accept --apply`。
|
|
22
|
+
|
|
23
|
+
## 现有技能路由
|
|
24
|
+
|
|
25
|
+
前端交互验收优先使用自然语言用例加 Chrome DevTools MCP。执行前先确认用例覆盖的是本次适用维度;执行后把 PASS、FAIL 或 blocked 写回对应 ACC ID。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentest-author
|
|
3
|
+
description: "OpenTest 阶段 2:根据矩阵补齐测试资产和自然语言验收用例。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenTest Author
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
|
|
10
|
+
根据 acceptance-to-test matrix 创建或更新测试资产。
|
|
11
|
+
|
|
12
|
+
本阶段把矩阵变成可执行证据:能用项目测试框架证明的写测试;更适合真实链路、浏览器、API 或人工可复验步骤证明的,写自然语言验收用例。不要为了“像 TDD”而把所有交互反馈硬塞进 unit test。
|
|
13
|
+
|
|
14
|
+
## 步骤
|
|
15
|
+
|
|
16
|
+
1. 读取 `.opentest.yaml` 中的 `matrix`。
|
|
17
|
+
2. 对 unit/component/integration/contract 证据,按项目已有测试框架创建或更新测试文件。
|
|
18
|
+
3. 对 E2E、smoke、browser acceptance、真实 API 或跨页面流程,写入 `docs/opentest/acceptance/` 自然语言验收用例。
|
|
19
|
+
4. 对前端反馈类用例,写清反馈位置和形态,例如字段下方错误、表单顶部错误、轻提示、模态框、行内状态或页面错误态。
|
|
20
|
+
5. 对不适用或当前无法补齐的证据,记录原因和风险。
|
|
21
|
+
6. 写入 `.opentest.yaml` 的 `acceptance` 字段。
|
|
22
|
+
7. 更新 `docs/loop-handoff/latest.md`(如果项目使用 Loop Handoff),记录测试资产、自然语言验收用例、gap/risk 和下一步。
|
|
23
|
+
8. 运行 `bash "$OPENTEST_GUARD" author --apply`。
|
|
24
|
+
|
|
25
|
+
## 现有技能路由
|
|
26
|
+
|
|
27
|
+
当矩阵要求代码级测试证据时,优先加载现有 TDD guidance。若项目规则要求特定测试框架,遵循项目规则。若当前任务更适合真实验收而不是新增测试框架代码,记录原因并交给 `opentest-accept`。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentest-plan
|
|
3
|
+
description: "OpenTest 阶段 1:分析变更、风险和项目事实,生成测试策略与 acceptance-to-test matrix。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenTest Plan
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
|
|
10
|
+
生成 `docs/opentest/plans/` 下的测试策略和 `docs/opentest/matrices/` 下的矩阵。
|
|
11
|
+
|
|
12
|
+
本阶段是 OpenTest-driven development 的入口。它必须在实现前把“需求没写但成熟产品默认应该处理”的场景显性化,避免只根据字面需求写少量 happy path 测试。
|
|
13
|
+
|
|
14
|
+
## 步骤
|
|
15
|
+
|
|
16
|
+
1. 读取项目规则、需求、设计、diff、现有测试命令和 `opentest/references/codex-harness-coverage-heuristics.md`。
|
|
17
|
+
2. 如果存在前端、表单、导航、CRUD、状态反馈或动效,优先读取项目内 `docs/frontend/DESIGN.md` 和可用的 `harness-frontend-design` / `product-ui-defaults` 规则。
|
|
18
|
+
3. 判断变更类型、风险等级和适用覆盖面。
|
|
19
|
+
4. 做隐性场景挖掘:空输入、非法输入、网络失败、权限不足、重复提交、长内容、空数据、错误映射、移动端、可访问性、跨页面返回和状态恢复。
|
|
20
|
+
5. 生成窄矩阵,至少包含 `ID`、`意图`、`触发/输入`、`期望行为`、`风险`、`证据层级`、`必需证据`、`状态`。
|
|
21
|
+
6. 对适用但未覆盖的证据面标记 `gap`。
|
|
22
|
+
7. 写入 `.opentest.yaml` 的 `plan` 和 `matrix` 字段。
|
|
23
|
+
8. 更新 `docs/loop-handoff/latest.md`(如果项目使用 Loop Handoff),记录 plan、matrix 路径、当前阶段和下一步。
|
|
24
|
+
9. 运行 `bash "$OPENTEST_GUARD" plan --apply`。
|
|
25
|
+
|
|
26
|
+
## 约束
|
|
27
|
+
|
|
28
|
+
不要把 Codex Harness 全量 checklist 展开成固定必需项。低风险变更保留轻量覆盖摘要,高风险闭环再展开详细验收维度。
|
|
29
|
+
|
|
30
|
+
不要把所有证据都写成 unit test。矩阵要明确哪些用 unit/component/integration/contract/E2E/smoke/browser acceptance/security review 证明。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentest-run
|
|
3
|
+
description: "OpenTest 阶段 3:按 targeted、fast、full 或 ci-like 模式运行项目测试命令。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenTest Run
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
|
|
10
|
+
执行项目已有验证命令并写入运行报告。
|
|
11
|
+
|
|
12
|
+
## 模式
|
|
13
|
+
|
|
14
|
+
- `targeted`:只运行与矩阵相关的测试命令。
|
|
15
|
+
- `fast`:运行快速反馈命令,例如 type、lint、unit。
|
|
16
|
+
- `full`:运行项目完整测试命令。
|
|
17
|
+
- `ci-like`:尽量复现 CI 验证顺序。
|
|
18
|
+
|
|
19
|
+
证据层级由矩阵决定。不要因为存在 `npm test` 就只跑 unit test;如果矩阵要求 integration、contract、E2E、smoke 或安全检查,必须运行对应项目命令,或记录 missing command / blocked。
|
|
20
|
+
|
|
21
|
+
## 步骤
|
|
22
|
+
|
|
23
|
+
1. 读取 `.opentest.yaml` 的 `run_mode` 和矩阵。
|
|
24
|
+
2. 优先使用项目显式命令,按矩阵中的证据层级选择 targeted、fast、full 或 ci-like。
|
|
25
|
+
3. 记录命令、退出码、摘要和日志路径到 `docs/opentest/runs/`。
|
|
26
|
+
4. 写入 `.opentest.yaml` 的 `run_report` 字段。
|
|
27
|
+
5. 更新 `docs/loop-handoff/latest.md`(如果项目使用 Loop Handoff),记录已运行验证、未运行验证、失败/阻塞、run report 路径和下一步。
|
|
28
|
+
6. 运行 `bash "$OPENTEST_GUARD" run --apply`。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentest-verify
|
|
3
|
+
description: "OpenTest 阶段 5:应用质量门并生成验证报告。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenTest Verify
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
|
|
10
|
+
应用质量门,输出结构化验证报告,并把结果写回状态文件。
|
|
11
|
+
|
|
12
|
+
## 验证顺序
|
|
13
|
+
|
|
14
|
+
验证报告按 build、type、lint、test、security、diff 组织。若项目没有某类命令,记录为 missing command 或 not applicable,不把未知状态写成 pass。
|
|
15
|
+
|
|
16
|
+
按 build、type、lint、test、security、diff 的顺序组织证据。必需测试、必需验收、构建、类型或 lint 失败时标记 `fail`。非必需缺口可记录为 `risk-accepted`。写入 `docs/opentest/reports/` 和 `.opentest.yaml` 的 `verification_report`、`verification_result`。
|
|
17
|
+
如果项目使用 Loop Handoff,同时把 OpenTest verification report 路径、verification result、已运行验证、未运行验证、失败/阻塞和下一步写入 `docs/loop-handoff/latest.md`。
|
|
18
|
+
|
|
19
|
+
验证报告还必须回看矩阵,确认:
|
|
20
|
+
|
|
21
|
+
- 每个 required evidence 都有 pass、fail、blocked 或 risk-accepted 结论。
|
|
22
|
+
- 高风险行为不能因为没有工具、没有测试框架或没有 seed data 就直接通过。
|
|
23
|
+
- blocked evidence 必须包含阻塞原因和后续恢复路径。
|
|
24
|
+
- 若产品行为失败,不进入 `heal` 修测试资产;应返回实现或需求修正。
|