Skip to main content

ai-test-runner

调度 AI 测试流水线,从 PRD Markdown 文件、PRD Markdown 内容或已有 delivery-name 开始,按需串联 prd-to-xmind-testcases、testcase-to-playwright-dsl、dsl-selector-enrichment、playwright-dsl-to-spec 和 playwright-cli。适用于完整执行 PRD 到 Playwright 测试、指定 only/resume 阶段、从已有测试用例/DSL/spec 继续、执行 selector enrichment 或运行 Playwright 的场景。

Zur Installation springen

Quellinformationen

Repository
Fhui/AI-TEST
Letzte Quellaktivität
6. Mai 2026 um 07:28
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
1
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
ai-test-runner
description
调度 AI 测试流水线,从 PRD Markdown 文件、PRD Markdown 内容或已有 delivery-name 开始,按需串联 prd-to-xmind-testcases、testcase-to-playwright-dsl、dsl-selector-enrichment、playwright-dsl-to-spec 和 playwright-cli。适用于完整执行 PRD 到 Playwright 测试、指定 only/resume 阶段、从已有测试用例/DSL/spec 继续、执行 selector enrichment 或运行 Playwright 的场景。
# AI 测试流水线调度器 ## 职责范围 仅把本 skill 作为调度器使用。不要重复实现 PRD 分析、测试用例生成、DSL 生成、Selector 补全、Spec 生成或 Playwright 执行逻辑。 各阶段必须委托给已有 skill: - Stage 1: `prd-to-xmind-testcases` - Stage 2: `testcase-to-playwright-dsl` - Stage 4: `dsl-selector-enrichment` - Stage 3: `playwright-dsl-to-spec` - Stage 5: `playwright-cli` - Stage 6: `playwright-result-report` 统一阶段定义: | Stage | Alias | 中文名称 | |------|------|----------| | 1 | prd | PRD 转测试用例 | | 2 | dsl | 测试用例转 DSL | | 4 | enrich | Selector 补全 | | 3 | spec | DSL 转 Playwright Spec | | 5 | run | 执行 Playwright | | 6 | report | 生成测试报告 | 默认完整执行顺序: ```text 1 -> 2 -> 4 -> 3 -> 5 -> 6 ``` 如果用户明确不需要 Selector 补全: ```text 1 -> 2 -> 3 -> 5 -> 6 ``` ## 前置检查 1. 确认项目根目录是当前包含 `.codex` 的目录。 2. 执行任何工作前,先解析用户要求的阶段列表。 3. 如果从 Stage 2 或更后阶段开始,先解析 `delivery-name`。 4. 每个阶段执行前检查必要的上游产物。 5. 缺少必要输入时必须停止并询问用户。不要猜测。 需要稳定检查时,优先使用辅助脚本: ```bash python3 .codex/skills/ai-test-runner/scripts/run_pipeline.py \ --stages 1,2,4,3,5,6 \ --delivery <delivery-name> \ --base-url <url> ``` 脚本负责校验阶段顺序、项目根目录、`delivery-name`、baseURL 要求、上游产物和覆盖风险,并输出调度计划;它不实现已有 skill 的转换逻辑。 如果需要生成流水线调度报告,传入 `--write-report`: ```bash python3 .codex/skills/ai-test-runner/scripts/run_pipeline.py \ --delivery <delivery-name> \ --stages 2,4,3,5 \ --selector-mode dry \ --write-report ``` ## 输入 支持以下任一输入: - PRD Markdown 文件路径,例如 `./prd/login-flow.md` - 用户直接提供的 PRD Markdown 内容 - 已存在的 `delivery-name`,用于恢复执行或从中间阶段开始 当 Stage 1 从 PRD 开始执行时,由 `prd-to-xmind-testcases` 决定 `delivery-name`。Stage 1 完成后,再根据生成的 `testcase/xmind-testcases.md` 识别交付目录。 当从 Stage 2 或更后阶段开始时,必须要求用户提供 `delivery-name`,除非能从所需上游产物自动推断出唯一候选交付目录。如果存在多个候选目录,必须停止并要求用户指定 `delivery-name`。 ## 阶段选择 支持精确阶段表达: ```text only 1 only 2 only 3 only 4 only 5 only 6 only prd only dsl only enrich only spec only run only report 1 1,2 1,2,3 1,2,4,3 1,2,4,3,5 1,2,4,3,5,6 prd,dsl,enrich,spec,run,report PRD转测试用例,测试用例转DSL,Selector补全,生成Spec,执行Playwright,生成测试报告 1,dsl,enrich,5,report resume from 2 resume from 3 resume from 4 resume from 5 resume from 6 resume from spec resume from enrich resume from report ``` 支持自然语言映射: - `只生成测试用例` -> `only 1` - `生成测试用例和 DSL` -> `1,2` - `只把 DSL 转 spec` -> `only 3` - `只执行 Playwright` -> `only 5` - `只生成报告` -> `only report` - `从已有 DSL 开始执行` -> `resume from 3` - `从已有 spec 开始执行` -> `resume from 5` - `生成报告` -> `report` - `执行测试` -> `run` - `补全selector` -> `enrich` - `生成dsl` -> `dsl` - `生成spec` -> `spec` - `PRD解析` -> `prd` 对于 `resume from N`,使用从 `N` 开始的默认完整顺序: - `resume from 2` 或 `resume from dsl` -> `2,4,3,5,6` - `resume from 4` 或 `resume from enrich` -> `4,3,5,6` - `resume from 3` 或 `resume from spec` -> `3,5,6` - `resume from 5` 或 `resume from run` -> `5,6` - `resume from 6` 或 `resume from report` -> `6` 如果用户禁用 Selector 补全,则从完整流程或恢复流程中移除 Stage 4。 ## baseURL 规则 如果 Stage 4 以 `probe` 模式运行,或需要执行 Stage 5,但用户没有提供 `baseURL`,必须停止并询问 `baseURL`。 不要猜测 `baseURL`。没有 `baseURL` 时,不要继续执行 Playwright。生成调度计划或 pipeline-run-report 时,可以把 Stage 5 标记为 `blocked`,但不能运行 Playwright。 Stage 1、Stage 2、Stage 3,以及 Stage 4 的 `dry` 模式不需要 `baseURL`。 `--selector-mode` 未显式指定时,只在阶段正好为完整链路 `1 -> 2 -> 4 -> 3 -> 5 -> 6` 且提供 `baseURL` 时,自动使用 `probe`。其他阶段组合一律默认 `dry`。 ## 中间产物检查 每个阶段执行前,检查必要输入是否存在: - Stage 2 需要 `./<delivery-name>/testcase/xmind-testcases.md` - Stage 3 需要 `./<delivery-name>/ui-dsl/ui-test.dsl.yaml` - 只有当 `./<delivery-name>/ui-dsl/ui-test.enriched.dsl.yaml` 存在,且用户明确要求使用 enriched DSL 时,Stage 3 才能使用 enriched DSL - Stage 4 需要 `./<delivery-name>/ui-dsl/ui-test.dsl.yaml` - Stage 5 至少需要一个 `./<delivery-name>/playwright/tests/*.spec.ts` - Stage 6 需要 `./<delivery-name>/playwright/results.json` 如果产物缺失,必须停止,并说明应该先执行哪个阶段。 不要覆盖已有产物,除非用户明确允许覆盖。已有产物包括: - Stage 1: `./<delivery-name>/testcase/xmind-testcases.md` - Stage 2: `./<delivery-name>/ui-dsl/ui-test.dsl.yaml` - Stage 4: `./<delivery-name>/ui-dsl/ui-test.enriched.dsl.yaml`, `selector-enrichment-report.md`, `unresolved-selectors.md` - Stage 3: `./<delivery-name>/playwright/tests/*.spec.ts` - Stage 5: `./<delivery-name>/playwright/results.json` - Stage 6: `./<delivery-name>/reports/ui-test-report.md` Stage 4 为 `dry` 模式时,允许覆盖 `selector-enrichment-report.md` 和 `unresolved-selectors.md`,不要因为这两个报告已存在而阻断。`ui-test.enriched.dsl.yaml` 仍按普通输出产物处理。 ## Pipeline 报告 `ai-test-runner` 负责生成 `pipeline-run-report.md`,用于记录流水线阶段、前置检查、调度命令和产物索引。 默认报告路径: ```text ./<delivery-name>/reports/pipeline-run-report.md ``` 如果用户通过 `--report-path` 指定路径,使用用户指定路径。 如果当前从 Stage 1 开始,且 `delivery-name` 尚未生成,不要强行写报告;只在控制台提示: ```text Stage 1 完成后才能确定 delivery-name 并生成 pipeline-run-report.md ``` 报告必须包含: - 基本信息:项目根目录、delivery-name、执行阶段、selector mode、是否使用 enriched DSL、baseURL 是否提供、是否 overwrite - 阶段计划:Stage、Alias、中文、状态、输入、输出 - 前置检查结果:`.codex`、delivery-name、上游产物、输出产物、overwrite、Stage 5 baseURL 或 Playwright 配置 - 调度命令 - 产物索引 - 下一步建议 状态只使用: ```text pending ready skipped blocked failed ``` 注意区分报告职责: - `ai-test-runner` 只生成 `pipeline-run-report.md`,记录流水线调度计划、检查结果、命令和产物路径。 - `playwright-result-report` 负责生成 `ui-test-report.md`,用于分析 Playwright 执行结果、失败用例、截图、trace 和 selector 问题。 两者不能混淆。不要生成 `ui-test-report.md`,不要解析 `playwright/results.json`,不要分析失败用例。 ## 阶段调度 ### Stage 1:PRD 转测试用例 使用 `prd-to-xmind-testcases`。 输入: - PRD Markdown 文件路径,或 - PRD Markdown 内容 输出: ```text ./<delivery-name>/testcase/xmind-testcases.md ``` 完成后输出: ```text [✓] Stage 1 PRD 转测试用例完成 ``` ### Stage 2:测试用例转 UI DSL 使用 `testcase-to-playwright-dsl`。 输入: ```text ./<delivery-name>/testcase/xmind-testcases.md ``` 输出: ```text ./<delivery-name>/ui-dsl/ui-test.dsl.yaml ``` 完成后输出: ```text [✓] Stage 2 测试用例转 DSL 完成 ``` ### Stage 4:Selector 补全 使用 `dsl-selector-enrichment`。 默认模式为 `dry`。只有当用户显式要求 probe,或调度完整链路 `1 -> 2 -> 4 -> 3 -> 5 -> 6` 且提供 `baseURL` 时,才使用 `probe` 模式,并且必须要求 `baseURL`。 输入: ```text ./<delivery-name>/ui-dsl/ui-test.dsl.yaml ``` 输出: ```text ./<delivery-name>/ui-dsl/ui-test.enriched.dsl.yaml ./<delivery-name>/ui-dsl/selector-enrichment-report.md ./<delivery-name>/ui-dsl/unresolved-selectors.md ``` 完成后输出: ```text [✓] Stage 4 Selector 补全完成 ``` ### Stage 3:UI DSL 转 Playwright Spec 使用 `playwright-dsl-to-spec`。 输入: ```text ./<delivery-name>/ui-dsl/ui-test.dsl.yaml ``` 如果 `ui-test.enriched.dsl.yaml` 存在,且用户明确要求使用 enriched,则将它作为 Stage 3 输入。 如果阶段列表包含 Stage 4,且 Stage 4 位于 Stage 3 之前,并且 `ui-test.enriched.dsl.yaml` 已存在,Stage 3 默认使用 enriched DSL。只有当用户显式禁用 enriched DSL 时,才使用原始 `ui-test.dsl.yaml`。 输出: ```text ./<delivery-name>/playwright/tests/*.spec.ts ``` 完成后输出: ```text [✓] Stage 3 DSL 转 Playwright Spec 完成 ``` ### Stage 5:执行 Playwright 使用 `playwright-cli` 的指导,并执行: ```bash PLAYWRIGHT_HTML_OPEN=never PLAYWRIGHT_JSON_OUTPUT_NAME=./<delivery-name>/playwright/results.json npx playwright test ./<delivery-name>/playwright/tests --reporter=json ``` 执行本阶段前必须要求 `baseURL`。如果项目通过环境变量读取 baseURL,应保持一致传入,例如: ```bash BASE_URL=<baseURL> PLAYWRIGHT_HTML_OPEN=never PLAYWRIGHT_JSON_OUTPUT_NAME=./<delivery-name>/playwright/results.json npx playwright test ./<delivery-name>/playwright/tests --reporter=json ``` Stage 5 必须固定启用 Playwright JSON reporter,并固定输出到 `./<delivery-name>/playwright/results.json`,供 `playwright-result-report` 读取。 完成后输出: ```text [✓] Stage 5 Playwright 执行完成 ``` ### Stage 6:生成测试报告 使用 `playwright-result-report`。 输入: ```text ./<delivery-name>/playwright/results.json ``` 输出: ```text ./<delivery-name>/reports/ui-test-report.md ``` `ai-test-runner` 只负责在调度计划和 pipeline-run-report 中记录 Stage 6 的建议命令与产物路径,不直接生成 `ui-test-report.md`,不解析 Playwright `results.json`。 完成后输出: ```text [✓] Stage 6 测试报告生成完成 ``` ## 状态输出 每个阶段完成后,输出对应状态: ```text [✓] Stage 1 PRD 转测试用例完成 [✓] Stage 2 测试用例转 DSL 完成 [✓] Stage 4 Selector 补全完成 [✓] Stage 3 DSL 转 Playwright Spec 完成 [✓] Stage 5 Playwright 执行完成 [✓] Stage 6 测试报告生成完成 ``` 跳过某阶段时,输出: ```text [-] Stage X 已跳过,原因 <reason> ``` 某阶段失败时,输出: ```text [✗] Stage X 失败,原因 <reason> ``` 对话输出保持简短。除非用户明确要求查看内容,否则不要在对话中粘贴生成的测试用例、DSL 或 spec 全文。 禁止事项: - `ai-test-runner` 自身不要生成 `ui-test-report.md` - 不要解析 Playwright `results.json` - 不要分析失败用例 - 不要修改其他 skill - 不要执行 `npx playwright test` - 不要把 `ai-test-runner` 变成业务转换器
Auf GitHub ansehen