• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hot63fang
V2EX  ›  程序员

分享 [AI 自动调试失败自动化] Playwright+Testng+ Java 框架

  •  
  •   hot63fang · 1 day ago · 580 views
    • 自动化框架: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 前按预算截断,保「头 + 尾 + 错误窗口」三段,避免中间无关内容挤占。

    整体使用步骤如下:

    • 解析 trace — 按测试用例的时间窗口过滤事件
    • 静态分析 — 扫 error / stacktrace / logs ,形成初步假设
    • 提取证据 — 操作序列、失败详情、DOM 快照、截图、网络请求
    • 截图确认 — 读关键帧(首帧 / 失败前 / 末帧),视觉验证页面状态
    • 自动修复选择器 — DOM 变更导致选择器失效时,从实际 DOM 里找替代选择器并改测试文件
    • 输出根因报告 — 时间线 + 证据链 + 可操作的修复建议

    工具内置了对常见失败模式的识别:

    模式 症状 根因
    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           # 评估用例
    

    感兴趣的小伙伴,点击此开源地址

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   888 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:24 · PVG 05:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.