← 返回信息流
AI 资讯Hacker News·2 小时前

Libretto PR agents 自动修复 Playwright 测试失败脚本

原标题:Show HN: Libretto PR agents – Automatically fix failing playwright scripts

速览

Libretto PR agents 是一个基于 AI 代理的工具,能够自动分析失败的 Playwright 浏览器测试脚本,定位错误原因并生成修复代码,提交 Pull Request。它帮助开发者大幅减少调试和修复测试脚本的时间,提升 CI/CD 流水线的稳定性与效率。

AI 深度解读

背景

Playwright 是广泛使用的浏览器自动化框架,常用于端到端测试、爬虫和数据抓取。然而,网页结构频繁变化(如元素的 name 属性、选择器路径等)会导致已有脚本失败,开发者需要手动排查页面变化并修改代码。这种维护工作重复且耗时,尤其在大规模项目中,每次失败都需要人工介入。Libretto 推出的 PR Agent 旨在解决这一问题:当 Playwright 脚本失败时,自动分析失败原因,检查实时页面,并生成一个包含修复代码的 GitHub Pull Request,从而减少人工调试成本。

核心内容

Libretto PR Agent 是一套用于自动修复 Playwright 失败脚本的工具。其核心机制是:保留你现有的 Playwright 自动化脚本,当某个脚本执行失败时,Libretto 会接管失败边界,检查当前页面的真实 DOM,推断出正确的选择器或操作,然后打开一个 GitHub Pull Request 提交代码修复建议。

工作原理(以原文示例说明):

  • 原始脚本中使用了 page.locator('input[name="username"]').fill(login),但实际页面的登录输入框的 name 属性是 login 而非 username,因此脚本失败。
  • PR Agent 在失败后自动检查实时页面,发现 name="login" 的元素是正确目标,于是提出修复:将 username 改为 login,并在 PR 描述中注明“通过检查实时页面确认登录字段为 name='login'”。

使用流程(原文“ONE FAILURE CALL”部分):

  1. 保留你现有的 Playwright 脚本,无需修改 fixtures、重试逻辑、日志记录或部署配置。
  2. 在失败边界处添加 Libretto:只需在现有 Playwright 项目中安装 libretto-playwright-debugger 包,初始化一次 debugger,然后在失败路径中调用 debugFailure() 方法即可。
  3. 支持任何浏览器提供商:无论是本地运行、自有基础设施还是托管浏览器服务,只要自动化拥有一个活动的 Playwright Page 对象,并在 debugFailure() 执行期间保持该页面打开,Libretto 即可工作。
  4. 自带模型密钥:你可以选择自己的 LLM 提供商(如 OpenAI、Anthropic 等),并在自己的环境中管理 API 密钥,Libretto 不控制模型调用。
  5. 免费使用:Libretto 对 PR Agent 本身不收费,但你的模型提供商和浏览器提供商可能会根据用量收费。

FAQ 补充

  • PR Agent 专注于诊断失败并提交代码修复,而当前运行中的错误处理(catch、retry、fallback 等)仍由你的现有逻辑负责;Agent 只在找到修复方案时打开一个 PR。
  • 目前仅支持 Playwright(需要 Page 对象),Selenium 和 Puppeteer 需要单独适配器,暂不支持。
  • 无需使用 Libretto Cloud 来管理浏览器会话,本地或自托管即可。
  • Libretto 的 Playwright debugger 包采用 MIT 开源许可证,代码托管在 Libretto 仓库中。

关键要点

  • 自动修复失败脚本:Libretto PR Agent 在 Playwright 脚本失败后,检查实时页面 DOM,生成包含代码修复的 GitHub Pull Request,无需人工干预。
  • 零侵入集成:无需修改现有脚本结构、重试逻辑、日志或部署流程;只需在失败边界添加 debugFailure() 调用。
  • 灵活部署:支持本地、自托管或托管浏览器提供商,只需保持 Playwright Page 对象在调用期间存活。
  • 自带模型密钥:用户自行选择 LLM 提供商并管理 API 密钥,Libretto 不触及模型调用,确保数据隐私。
  • 完全免费:Libretto 不对 PR Agent 收取费用,用户仅需承担模型和浏览器的使用成本。
  • 开源基础:Playwright debugger 包以 MIT 许可证开源,可自由使用和修改。
  • 当前仅支持 Playwright:Selenium 和 Puppeteer 未内置支持,需等待独立适配器。
  • 故障与修复分离:Agent 不干扰当前运行的错误处理逻辑,只负责事后分析和修复建议的提交。

意义与影响

Libretto PR Agent 将大型语言模型的应用从“生成代码”扩展到“自动修复已有代码”,尤其针对浏览器自动化测试这一高频维护场景。它的价值在于:

  • 降低维护成本:网页结构变化频繁,手动修复脚本耗时长且易出错。自动化的 PR Agent 可以将开发者的精力从重复的故障排查中解放出来,专注于更重要的逻辑设计。
  • 提升自动化稳定性:通过 LLM 实时分析页面变化并给出修复,使得自动化脚本在遇到轻微结构变化时能快速恢复,减少因脚本失效导致的流程中断。
  • 推动开源生态协作:Agent 会自动创建 PR,这相当于一个“自动补丁”机制,尤其适合开源项目或团队协作,让修复过程透明且可追溯。
  • 模型与基础设施解耦:用户自带模型密钥,意味着可以自由选择性价比最高的模型,同时保持数据在本地或受控环境,满足企业对隐私和安全的要求。
  • 免费且开源:降低使用门槛,鼓励社区贡献和改进,有助于形成围绕自动修复的生态体系。

当然,目前仅支持 Playwright 是一个限制,但作为初始版本,其核心思路(失败边界+LLM 检查+PR 提交)可以推广到其他自动化框架。长远来看,这类工具可能成为 CI/CD 管线的标准组件,让“自动化测试自动化修复”成为现实。

查看原文 →libretto.sh