自动化框架:Playwright+Testng+Java
要解决的痛点:目前我们接口+UI 自动化有 6000 来个,每天上班就要跟踪失败的自动化,非常耗时间
办法:半夜 Jenkins job 跑完,让 AI 去接收结果,AI 去改失败的 case ,第二天上班看 AI 的代码 Merge 报告和总结,组员去审核没问题就合入代码
新问题:单个 Job 的 log 非常大,动辄几百 MB 甚至上 GB ,整段塞给 LLM 既废 token 又全是噪音。所以日志要先「瘦身」再进分析
日志瘦身方法: 1 、不依赖 log 做主分析 — 主证据来自结构化的 trace.zip ( artifact ),log 只作辅助定位。 2 、按测试用例边界 / 时间窗口切片 — 用 case 名、FAILED 、时间戳定位失败那一段,只取该 case 的日志窗口(和 trace 解析同一套时间窗口思路)。 3 、只留错误相关 — 抽 error / stacktrace + 失败点前后 N 行上下文,丢掉通过用例和大段 info 噪音。 4 、去重 — 重试/轮询会刷大量重复行,先去重再保留。 5 、token 预算截断 — 进 LL 前按预算截断,保「头 + 尾 + 错误窗口」三段,避免中间无关内容挤占。
整体使用步骤如下:
工具内置了对常见失败模式的识别:
| 模式 | 症状 | 根因 |
|---|---|---|
| A 导航超时 | 日志出现 navigated to .../pending?redirect=... | 应用用了中间跳转页 |
| B Loading 卡住 | 截图长时间空白,DOM 含 loading-pane | React 停在全屏 loading |
| C 选择器失效 | DOM 有内容但目标选择器找不到 | CSS class / DOM 结构变更 |
| D API 报错 | 网络请求 status ≥ 400 | 后端接口返回错误 |
| E 无响应 | 网络请求 status = -1 | API 请求未收到响应 |
| F PageModel 为 Null | 页面对象字段 NPE | 选择器未匹配,注入返回 null |
ai-autofix-e2e-tests/
├── SKILL.md # Claude Code skill 定义(完整 6 步工作流)
├── scripts/
│ ├── parse_trace.py # 解析 trace.zip ,输出结构化 JSON 报告
│ └── find_selector.py # 寻找替代选择器并自动修复测试文件
├── docs/
│ └── trace-reference.md # Playwright trace.zip 格式参考
└── evals/
└── evals.json # 评估用例
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.