Playwright 1.56 随版本发布了三个内置的 AI Agent,它们可以规划测试套件、编写相应的 TypeScript 脚本,并即时修复失效的定位器。其结果是:手动测试的繁琐工作转变为了一种 AI 辅助的工作流。

为什么这一变化至关重要

自动化工程师长期以来一直处于一个重复的循环中:将需求转化为测试用例,手写脚本,运行它们,然后在 UI 发生变化时不断追逐不稳定的选择器。维护成本可能会抵消自动化节省下来的时间,尤其是在快速迭代的前端开发中。通过将 AI Agent 直接嵌入测试框架,Playwright 缩短了“修复并运行”的周期,让工程师能够专注于高层级的测试策略,而不是浪费时间寻找选择器。

三大 Agent 详解

  • Planner Agent – 接收关于应用程序应实现功能的自然语言描述,探索实时网站,并输出结构化的 Markdown 计划。该计划列出了主要的用户流程和边缘情况场景,在编写任何代码之前提供清晰的蓝图。
  • Generator Agent – 读取 Markdown 计划并生成可执行的 TypeScript 测试代码。它会与运行中的浏览器进行交互以验证选择器是否稳定;如果收到指令,它还可以遵循 Page Object Model(一种将页面结构与测试逻辑分离的设计模式)。
  • Healer Agent – 监控测试运行;当失败归因于 UI 变更时,它会重放失败的步骤,检查更新后的 DOM,并建议修正后的选择器或定位器。该建议会以草稿补丁的形式出现,开发者可以接受或进行微调。

这些 Agent 以一种“Agent 循环”的方式运行:Planner → Generator → Healer。每一步都为下一步提供输入,从而创建一个能够与被测应用程序保持同步的自适应流水线。

与通用 AI 工具的区别

对话式模型或代码补全扩展可以生成代码片段,但它们缺乏对实时 DOM 和特定项目配置的直接访问权限。Playwright 的 Agent 使用 Model Context Protocol,将当前页面结构和测试框架设置流式传输到模型中,让 AI 能够对其将要交互的确切元素进行推理。它生成的代码不仅语法正确,而且在生成瞬间就与真实的 UI 紧密关联。

快速上手

  1. 设置一个 Node 项目并将 Playwright 添加为依赖。
  2. 运行 npx playwright init-agents --loop=vscode 在你的编辑器中启动 AI 循环。
  3. 编写一个加载应用程序的最小化“种子”测试;这会为 Agent 提供具体的上下文。
  4. 发出自然语言提示词(例如,“创建一个包含折扣码的结账流程”)来触发 Planner,让 Generator 生成脚本,并让 Healer 保持其健康运行。

让 Agent 表现更佳的技巧

  • 清晰的种子测试 – 初始测试应能可靠地启动应用并展示主要的 UI 元素;模糊的入口点会干扰 Planner。
  • 结构化的种子数据 – 提供描述预期输入的 JSON fixtures 有助于 Generator 选择合适的选择器。
  • 要求使用 Page Object Model – 明确指示 Generator 构建页面对象脚手架,可以得到更整洁、更易于维护的代码。
  • 将 AI 输出视为草稿 – 在提交代码前请检查生成的脚本;Agent 仍可能忽略业务逻辑的细微差别,或生成过于通用的选择器。

风险与反论

后续关注点