Playwright 又出新东西了:三个 Agent 帮你全自动写测试

lxiol
📝
Playwright 又出新东西了:三个 Agent 帮你全自动写测试上两篇分别讲了 Playwright

原文链接:https://mp.weixin.qq.com/s/85f5kOT1CWOtxOFkX4vYeQ

Playwright 又出新东西了:三个 Agent 帮你全自动写测试上两篇分别讲了 Playwright

上两篇分别讲了 Playwright MCP 和 Playwright CLI,有朋友看完之后问:

“我现在用 MCP 让 Copilot 帮我生成测试,但还是要我一步一步指挥,能不能更自动一点,告诉它一个目标,它自己搞定?”

这个问题问得很到位。正好 Playwright 官方最近推出了一个新东西:Test Agents

这次不是工具,是三个专门干测试这件事的 AI Agent。你告诉它测什么,它自己探索、自己写代码、跑失败了还能自己修——整个链路可以不用人盯着。

— — —

先说清楚它是什么

Playwright Test Agents 包含三个 Agent,名字都很直接:

  • 🎭 Planner(规划者):探索你的应用,产出一份 Markdown 格式的测试计划
  • 🎭 Generator(生成者):把测试计划转成可执行的 Playwright 测试代码
  • 🎭 Healer(修复者):跑失败的测试,自动找原因,自动打补丁修好

三个 Agent 可以单独用,也可以按顺序接力,也可以串成一个自动化循环——你下达任务,它们全程自己转。

说白了,这是 Playwright 在 AI 时代对”测试自动化”这个概念的重新定义。以前是你写代码让机器自动跑,现在是你说需求让 AI 自动生成代码再自动跑。

— — —

三分钟装好,开始用

初始化 Agent 定义文件

一条命令搞定:

1
2
bash

npx playwright init-agents

1
2
3
4
```

默认是 VS Code 模式。如果你用 Claude Code,加个参数:

bash

1
`npx playwright init-agents --loop=claude`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

这条命令会在你的项目里生成 Agent 定义文件(放在 `.github/` 目录下)。这些文件是 Agent 的"说明书"——告诉 AI 有哪些工具可以用、怎么配合工作。

**重要:Playwright 版本更新后要重新跑一次**,定义文件不会自动同步。

VS Code 要求 **v1.105(2025 年 10 月 9 日之后)** 才能完整支持。如果 Agent 功能没反应,先升一下 VS Code。

— — —

## 三个 Agent 分别怎么用

### 🎭 Planner:先别急着写代码,先让它探路

Planner 干的事情是**理解你的应用,规划测试范围**。

**它需要什么:**

- 你给一个清晰的任务描述(比如"给访客结账流程生成测试计划")
- 一个 `seed.spec.ts`——这个文件很关键,后面单独解释
- 可选:产品需求文档(PRD),给它更多上下文

**它产出什么:**

- 一个 Markdown 文件,保存在 `specs/` 目录下,比如 `specs/basic-operations.md`

这份计划人能直接读懂,每个测试场景、步骤、预期结果都写得清清楚楚。你可以在 Generator 跑之前检查一遍,觉得哪里不对直接改,不需要碰代码。

**Seed 文件是什么?**

这是一个很聪明的设计。`seed.spec.ts` 是你提前写好的一个基础测试,负责处理"进门"的事——比如登录、初始化数据、设置 fixture。

Planner 会先跑这个 seed 测试,把环境配置好,然后在这个基础上探索应用。它还会把 seed 文件当作后续生成测试的样本,风格、结构、用到的 fixture 都会保持一致。

typescript

1
`// seed.spec.ts 示例``import { test, expect } from './fixtures';``test('seed', async ({ page }) => {``// 在这里处理登录、初始化等准备工作``// 这个测试本身不需要有断言``});`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

写好之后,跟 Planner 说"基于 seed.spec.ts 帮我生成测试计划"就行。

— — —

### 🎭 Generator:把计划变成真正能跑的代码

Planner 输出了测试计划,Generator 就把这个 Markdown 翻译成 `.spec.ts` 文件。

**它需要什么:**

- `specs/` 目录下的 Markdown 计划文件

**它产出什么:**

- `tests/` 目录下的测试文件,和计划里的场景一一对应

Generator 在生成过程中会**实时验证**——它会真的去操作浏览器,确认选择器是否有效、断言是否合理。不是纸上谈兵,生成完就是能跑的代码(大部分情况)。

如果某些测试有初始错误,不用手动去改,直接交给 Healer。

提示语非常简单:

text

1
`把 specs/basic-operations.md 里的测试计划生成为测试代码`
1
2
3
4
5
6
7
8
9
10
11

— — —

### 🎭 Healer:测试挂了,别急,让它修

这是我觉得三个 Agent 里最省心的一个。

你的测试跑挂了——可能是前端改了 DOM 结构,可能是等待时间不够,可能是数据对不上——以前你要自己去看报错、找元素、改代码、重新跑。

现在你告诉 Healer:

text

1
`帮我修复 tests/add-valid-todo.spec.ts 里失败的测试`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Healer 会:

- 重新回放失败的测试步骤
- 查看当前 UI,找到对应的元素或流程
- 提出修复方案(更新选择器、调整等待、修改数据)
- 重新跑测试,直到通过

如果 Healer 跑了几次还是不行,它会把这个测试标记为 skip,并注明它认为这个功能本身可能有问题。

— — —

## 一个完整的工作流

把三个 Agent 串起来,测试覆盖这件事可以这样做:

text

1
`1. 写好 seed.spec.ts(处理环境初始化)``↓``2. 告诉 Planner:"给购物车模块生成测试计划"``↓``3. 检查 specs/cart-operations.md(可选,觉得OK就放行)``↓``4. 告诉 Generator:"把这个计划生成为测试代码"``↓``5. 测试跑起来,有失败的?告诉 Healer 去修``↓``6. 全部通过,合并进代码仓库`
1
2
3
4
5
6
7
8
9

三个 Agent 接力,整个过程你主要在**审核**,不在**执行**。这就是官方说的"agentic loop"。

— — —

## 目录结构是这样的

生成的文件按规范放,审计很清晰:

text

1
`repo/``.github/                    # Agent 定义文件(由 init-agents 生成)``specs/                      # 人类可读的测试计划``basic-operations.md``cart-operations.md``tests/                      # 生成的 Playwright 测试代码``add-valid-todo.spec.ts``checkout-flow.spec.ts``seed.spec.ts                # 环境初始化的种子测试``playwright.config.ts`

计划文件和测试文件一一对应,出了问题追溯很方便——测试失败了,去 `specs/` 找对应的计划,看是需求层面的问题还是代码层面的问题。

— — —

## 和 MCP、CLI 有什么不一样

三篇文章讲了三个东西,讲清楚区别很必要。一句话定性:**MCP 是感知工具,CLI 是执行工具,Agent 是自主系统。**

— — —

### Playwright MCP

**本质:** 给 AI 装了一双"眼睛"。

MCP 服务器把浏览器当前页面的可访问性树(Accessibility Tree)和截图暴露出来,让 AI 编码工具(VS Code Copilot、Claude 等)能"看到"页面。你在 IDE 里对话,每发一条指令,AI 就执行一步,然后把执行结果拿回来告诉你,你再决定下一步。

**关键特征:**

- 交互是**对话式**的,你是主导,AI 是执行手
- 每一步都在你视野里,过程可随时干预
- 因为要持续传输页面快照,**Token 消耗较高**
- 生成的代码可以直接落到编辑器里

**适合的场景:**

- 你对这个页面不熟,需要 AI 帮你"读懂"页面结构再写选择器
- 要写某个特定功能的测试,你想一边看生成结果一边调整
- 调试测试时,需要 AI 帮你解释"为什么这个元素找不到"
- 你是新手,想在 AI 陪伴下学着写 Playwright 测试

**一句话:你指挥,AI 干活,整个过程你在场。**

— — —

### Playwright CLI

**本质:** 给 AI 提供了一套命令行接口,让它能直接遥控浏览器。

和 MCP 相比,CLI 不依赖页面快照,而是把操作抽象成一条条结构化命令(`navigate`、`click`、`fill`、`screenshot` 等)。AI 调用这些命令来完成任务,整个过程更轻量,每条命令的 Token 消耗远低于 MCP 的页面传输。

**关键特征:**

- **无头(headless)友好**,不需要可视化界面也能跑
- 命令粒度细,适合在代码或 Agent 流程里编排调用
- Token 消耗低,成本可控
- 适合集成进更大的自动化流程,而不是独立使用

**适合的场景:**

- 你要在 CI/CD 里让 AI 自动完成某个操作(比如定期跑一遍冒烟测试)
- 你在构建一个更复杂的 AI 流程,Playwright 只是其中一个执行节点
- 批量自动化任务:爬取数据、批量截图、自动填表提交
- 对 Token 成本敏感,想用尽量少的消耗完成操作

**一句话:AI 自己下命令、自己执行,适合接入流水线,不适合互动调试。**

— — —

### Playwright Test Agents

**本质:** 专门为"测试"这件事设计的自主 AI 系统。

MCP 和 CLI 的定位都是"工具"——你决定做什么,AI 帮你做。Test Agents 不一样,你只需要给一个目标("给结账流程建测试覆盖"),三个 Agent 自己规划、自己生成代码、自己跑、自己修——形成一个闭环。

**关键特征:**

- 有明确的分工:Planner 探索 → Generator 生成代码 → Healer 修复失败
- 过程是**自主的**,不需要你逐步指挥
- 产出有中间层(Markdown 测试计划),人可以检查和干预
- 更适合"建立测试覆盖"这类项目级任务,而不是单个测试的调试

**适合的场景:**

- 项目从零开始,需要快速建立某个模块的测试覆盖
- 你有需求文档(PRD),想让 AI 直接根据需求生成测试用例
- 测试因为前端改动大量挂掉,让 Healer 批量修复比手动改快得多
- 希望在 CI 里集成"测试自愈"能力,挂掉的测试自动尝试修复

**一句话:你给目标,AI 完成全程,适合项目级的测试建设,不适合精细调试单个测试。**

— — —

### 三者对比总结

MCP

CLI

Test Agents
**控制权**
你指挥,AI 执行

AI 自主执行命令

AI 自主完成目标
**交互方式**
对话式,逐步

命令式,可批量

目标式,自主规划
**Token 消耗**
高(页面快照)

低(结构化命令)

中(有中间产物)
**适合粒度**
单个测试/操作

批量操作/流程节点

模块级/项目级
**人工介入**
全程在场

不需要介入

关键节点审核即可
**典型用途**
边调试边写测试

CI 自动化、AI 流程

测试覆盖建设

不是哪个更好,是看你在哪个阶段、要做什么事:**写单个测试找 MCP,搭自动化流程用 CLI,建整体测试覆盖上 Agents。**

— — —

## 几点实际使用的注意事项

**1. Seed 文件一定要写好**

这是整个 Agent 流程的基础。如果你的应用需要登录,seed 里没处理,Planner 探索时会撞墙。不复杂,但要认真写。

**2. Agent 定义文件要跟着 Playwright 版本走**

每次升级 Playwright 之后,`npx playwright init-agents` 重新跑一遍。这个文件里有工具列表和指令,Playwright 新功能加进来之后 Agent 才能用上。

**3. Healer 不是万能的**

选择器大范围改动、功能逻辑变了、接口 schema 变了——这些靠 Healer 修不了,它处理的是"能跑、跑失败了"这类问题,不处理"需求变了"。

**4. 生成的代码要过一遍眼**

Generator 产出的测试基本可用,但不要完全不看就合并。断言的力度是否合适、边界情况有没有覆盖、测试之间有没有依赖——这些仍然需要人判断。

— — —

## 小结

- 🎭 **Planner** → 探索应用,输出人类可读的测试计划(Markdown)
- 🎭 **Generator** → 把计划变成可执行的 Playwright 测试代码
- 🎭 **Healer** → 测试失败了,自动修,修不好就 skip 并说明原因
- 三个 Agent 可以串成完整流程,也可以单独按需调用
- 基础命令:`npx playwright init-agents`,之后在你的 AI 编码工具里直接用

如果你已经在用 Playwright MCP 帮你写测试,可以试试迁到 Test Agents 的方式——不再是你一步一步指挥,而是给它一个目标,让它跑完整个流程。

— — —

---

> 💬 本文评论区已开启,但暂无读者留言。


> 本文转载自微信公众号,如有侵权请联系删除。
  • 标题: Playwright 又出新东西了:三个 Agent 帮你全自动写测试
  • 作者: lxiol
  • 创建于 : 2026-04-29 20:26:16
  • 更新于 : 2026-05-12 16:07:04
  • 链接: https://blog.lxiol.cn/2026/04/29/Playwright-又出新东西了三个-Agent-帮你全自动写测试/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
Playwright 又出新东西了:三个 Agent 帮你全自动写测试