Playwright 结果报告
范围
仅在以下场景使用本 skill:
- 读取
./<delivery-name>/playwright/下已有的 Playwright 执行结果。 - 固定读取
./<delivery-name>/playwright/results.json,该文件应由 Playwright JSON reporter 生成。 - 优先读取
./<delivery-name>/ui-dsl/ui-test.enriched.dsl.yaml,不存在时读取./<delivery-name>/ui-dsl/ui-test.dsl.yaml。 - 生成
./<delivery-name>/reports/ui-test-report.md。 - 生成
./<delivery-name>/reports/artifacts-index.md。
不要执行 npx playwright test,不要生成 spec,不要修改 DSL,不要新增 DSL 字段,不要调用其他 skill。
工作流
- 确认项目根目录是包含
.codex的目录。 - 确认交付目录。该目录应包含
playwright/或ui-dsl/。 - 执行:
python3 .codex/skills/playwright-result-report/scripts/generate_report.py ./<delivery-name>
- 不要在对话中粘贴完整报告。最终只回复:
[✓] Playwright 测试报告生成完成
报告契约
脚本必须创建:
reports/ui-test-report.mdreports/artifacts-index.md
ui-test-report.md 必须包含:
- 总览:总用例数、通过数、失败数、跳过数、通过率。
- 用例执行结果表:每个 DSL flow 一行,包含
flow_id、用例名、状态、耗时、文件。 - 失败用例详情:包含 flow 元信息、映射后的失败 step、selector key/value/status、错误信息、裁剪后的 stack、截图、trace、video 和失败原因分类。
- selector 问题汇总:失败次数最多的 selector,以及仍为
todo的 selector。 - 自动生成的建议。
artifacts-index.md 必须按 flow 列出:
- spec
- screenshot
- trace
- video
映射规则
- 优先使用
ui-test.enriched.dsl.yaml;不存在时回退到ui-test.dsl.yaml。 - 从
selectors[key].selector和selectors[key].status解析 selector。 - 固定从
./<delivery-name>/playwright/results.json读取 Playwright JSON reporter 结果。 - 通过 spec 文件名、测试标题、文件路径或附近注释中的
flow_id将 spec 映射回 DSL。 playwright-dsl-to-spec生成的 spec 必须在每个 step 前固定输出flow_id、step_id、source_ts、selector_key注释;本 skill 优先使用这些注释做失败 step 映射。- 如果
results.json不存在,仍可基于 DSL、test-results/产物和playwright/tests/*.spec.ts生成降级报告,但不会读取其他 JSON 文件。
失败分类
每个失败用例必须分类为以下之一:
SELECTOR_NOT_FOUNDMULTIPLE_ELEMENTSTIMEOUTNAVIGATION_ERRORASSERTION_FAILEDUNRESOLVED_SELECTOR:映射到的 selector status 为todoUNKNOWN