Codex 可自动归因 Playwright 测试失败:扫描 test-results 下 report.json 中 failed 用例,提取错误信息;关联同名 ZIP 中日志、截图及 trace;按超时/断言/网络/空值/权限五类聚类分析并生成含根因结论与修复建议的 Markdown 报告。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在 Codex 中自动归因 Playwright 测试失败的用例,并把每个失败对应的日志、截图、断言差异和根因分析聚合成一份可读报告,而不是手动翻 20 个 test-results 文件夹再拼凑结论。
确认 Codex 能访问你的 Playwright 测试结果
打开终端,进入项目根目录,执行:ls test-results。如果提示 No such file or directory,说明你还没运行过测试,先执行 npx playwright test --reporter=line 生成一次基础结果。
确保 test-results 目录下至少有一个以时间戳命名的子文件夹(如 2026-10-12T10-45-22),里面包含 report.json 和若干 .zip 或 .png 文件。Codex 只能解析已落地的结构化报告,【不能实时监听未生成的测试过程】。
用 Codex CLI 扫描失败用例并提取原始错误
在项目根目录下运行:codex run --task "summarize-playwright-failures"。
这会触发 Codex 自动查找最新 test-results 子目录 → 读取 report.json → 筛出 status: "failed" 的用例 → 提取每个失败项的 error.message 和 error.stack 字段。注意:如果 report.json 是空或损坏,Codex 会跳过该次扫描,不会报错也不会提示。
输出中每条失败用例会带一个唯一 ID(如 test-3f8a),这是后续关联截图和日志的关键索引。
让 Codex 关联失败现场证据
方法一:自动拉取同名 ZIP 包中的日志与截图
Codex 默认尝试从与用例 ID 同名的 ZIP 文件(如 test-3f8a.zip)里解压 trace.zip、test-output.log 和 screenshot.png。如果 ZIP 不存在或解压失败,它会直接跳过该用例的现场还原,只保留原始报错文本。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
方法二:手动指定路径补全证据链
若 ZIP 已被清理,但你手头有独立保存的 test-output.log 和截图,可在命令后加参数:--log-path ./logs/failed-20261012.log --screenshot ./screenshots/login-fail.png。Codex 会强制将这些文件内容注入对应用例的分析上下文,不校验文件名是否匹配。
生成带根因分类的汇总报告
第一步:让 Codex 对所有失败用例做聚类
执行:codex run --task "cluster-failure-reasons" --input test-results/latest/report.json。它会基于错误消息关键词(如 “timeout”、“null”、“401”、“AssertionError”)和堆栈首行函数名,把失败分到「超时类」「断言类」「网络类」「空值类」「权限类」五组。
第二步:为每组生成一句话根因结论
对「超时类」,Codex 会检查是否所有失败用例都发生在同一页面(如 /checkout),并比对该页加载耗时中位数是否 > 8s;对「断言类」,它会提取实际值与期望值的 diff 片段;对「权限类」,它会定位是否所有失败请求都携带了无效 token。这些判断全部基于你本地文件内容,不发任何请求到外部服务。
第三步:导出 Markdown 报告
运行:codex export --format md --output ./failures-summary-$(date +%Y%m%d).md。生成的文件包含三部分:失败总数与分布饼图文字描述、每组失败的典型用例+截图 base64 编码(仅当截图存在且小于 2MB)、每组推荐的修复动作(如“检查 checkout 页面 JS bundle 是否加载完成后再触发断言”)。

















