Playwright MCP 让 AI 自动写 E2E 测试
Playwright MCP 是一个把浏览器自动化能力暴露给 AI 的 MCP 服务器:装好之后,Claude Code、Cursor 这类 AI 编程工具就能直接控制一个真实浏览器——打开页面、点按钮、填表单、读取页面结构,然后据此帮你写 E2E 测试、复现 bug、验证修复。本文带你搞清它是什么、怎么装、怎么用,以及前端测试自动化里几个真实坑。
如果你还不清楚 MCP 是什么、AI 工具为什么要装这类插件,先看 MCP 推荐与必装清单(规划中) 打底,再回来看这篇会更顺。
Playwright MCP 是什么,和直接写 Playwright 脚本有什么不一样
先分清两个东西:
- Playwright:微软出的浏览器自动化框架,你手写
page.click()、page.fill()这些代码来驱动浏览器跑测试,这是程序员一直在用的工具。 - Playwright MCP:在 Playwright 之上包了一层 MCP 服务器,把”打开页面、点击、截图、读 DOM”这些能力变成 AI 可以调用的工具。主角从你变成了 AI——你说”测一下登录流程”,AI 自己去点、自己观察结果、自己把测试代码写出来。
关键差别在于:普通 Playwright 是你写代码、它跑;Playwright MCP 是 AI 边操作边写代码。 AI 能真正”看到”页面当前长什么样(拿到可访问性树或快照),而不是凭空猜元素选择器——这正是 AI 写 E2E 测试最容易翻车的地方,MCP 把它补上了。
一句话定位:Playwright MCP = 给 AI 装上一双能点网页的手和一双能看页面的眼睛。
第一步:准备环境
装之前确认两件事:
- 本机有 Node.js(Playwright MCP 以 npx 方式跑,需要 Node 环境,具体版本要求以官方文档为准)。用
node -v确认能跑起来就行,别在旧到没人维护的版本上折腾。 - 你用的 AI 工具支持 MCP:Claude Code、Cursor、以及任何兼容 MCP 协议的客户端都行。
不需要你预先全局安装 Playwright,MCP 服务器会按需拉起浏览器(Chromium/Firefox/WebKit 内核,具体拉哪个看你启动参数或默认配置)。第一次跑的时候它可能要下载浏览器内核,网络慢的话第一次启动会卡几十秒,别以为是装挂了。
还有一个容易被忽略的选择:有头模式还是无头模式。你自己盯着 AI 操作、想实时看它点哪里,用有头模式(会真的弹出一个浏览器窗口);纯粹让它跑完给你结果、不需要围观,用无头模式,速度更快也不占屏幕。具体切换方式在启动参数里配,命名可能随版本变化,照官方文档抄一遍最省心。
第二步:在 AI 工具里接入 Playwright MCP
接入的本质是:告诉你的 AI 客户端”有这么一个 MCP 服务器,用 npx 这样启动它”。 各家客户端配置位置不同,但都是往 MCP 配置里加一段服务器声明,大致长这样:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
包名、参数、最新启动方式以官方文档为准——MCP 生态更新很快,端点和参数会变,机制不会变。
- Claude Code:可用
claude mcp add命令注册,或写进项目/用户级 MCP 配置文件,两种效果一样,区别只是”这台机器都能用”还是”只在这个项目里能用”。团队协作建议写进项目级配置并提交到仓库,免得队友每人自己配一遍还配得不一样。 - Cursor:在设置的 MCP 面板里添加一条 server 配置,填法和上面 JSON 里的字段基本对应,界面上照着填就行。
加完重启客户端,在对话里问 AI “你现在能用哪些 Playwright 工具?“——它能列出 navigate(打开页面)、click(点击)、type(输入文字)、snapshot(读取页面结构快照)、take_screenshot(截图)这些工具,就说明接通了。如果 AI 回答”我没有这类工具”,别急着查配置语法,先看它有没有真的重启加载——这是十有八九踩坑的地方。
第三步:跑通第一个任务——让 AI 写一条 E2E 测试
接好之后,直接用自然语言下指令。一个最小可复制的例子:
打开 http://localhost:3000,点”登录”,用账号 test@demo.com / 密码 123456 登录,确认进入后看到”我的工作台”。把这个流程写成一条 Playwright E2E 测试存到 tests/login.spec.ts。
AI 会先真的去操作一遍浏览器:导航、点击、填表单、截图或读快照确认结果,然后根据它实际观察到的元素,把稳定的测试代码写出来。因为选择器来自真实页面而非猜测,跑出来的测试通过率高很多。
记住一个用法精髓:让 AI 先”演一遍”再”写代码”,比直接让它凭想象写测试靠谱得多。
指令怎么写决定了 AI 演得准不准,这里给几条实测有效的技巧:
- 把断言写具体:别说”确认登录成功”,说”确认页面上出现文本『我的工作台』,且 URL 变成
/dashboard”。AI 生成的断言精度基本等于你描述的精度,你含糊它就只能猜。 - 一次只让它验一条主流程:贪心地丢一整个”注册+登录+下单+退款”给它,容易中途卡在某一步就把后面全部瞎编。拆成几条指令、每条对应一个测试文件,出问题也好定位。
- 明确失败时怎么处理:比如”如果找不到登录按钮,把当前页面截图给我看看”,能省掉你事后自己排查半天的时间。
- 告诉它测试放哪、用什么框架约定:项目里如果已经有
tests/目录和命名规范,先让 AI 看一眼已有的测试文件,它照着现有风格写,比你事后统一格式省事得多。
进阶用法:复现 bug 与验证修复
Playwright MCP 真正的高价值场景不止写测试:
| 场景 | 你怎么说 | AI 帮你做什么 |
|---|---|---|
| 复现 bug | ”按这步操作,看是不是会报错” | 实际点一遍,截图/读控制台,确认能否复现 |
| 回归验证 | ”我改完了,再跑一遍刚才的流程” | 重走流程,告诉你是否修好 |
| 补测试 | ”给这个表单的校验逻辑补 E2E” | 试各种边界输入,生成多条断言 |
| 巡检页面 | ”看看首页有没有控制台报错/坏链接” | 打开页面收集 console、网络请求 |
把它和 AI 的”改代码”能力连起来用,就是一个改代码 → 自动验证 → 没过继续改的闭环——这是它比手写 Playwright 香的地方。
新手常见坑(4 条)
- 没装 Node 或版本不对:MCP 服务器拉不起来,AI 就调不到工具。先把 Node 环境弄好。
- 以为它能测线上任意网站:它操作的是你给的 URL,本地开发服务器要先自己跑起来(如
localhost:3000),别让 AI 干等。 - 配置加了不重启:MCP server 是客户端启动时加载的,改完配置必须重启客户端才生效。
- 让 AI 凭空写选择器:跳过”先操作再写代码”的步骤,AI 又会回到猜
#submit-btn的老路。一定要让它先 snapshot 真实页面。
常见问题
Playwright MCP 和直接用 Playwright 有什么区别? Playwright 是你手写代码驱动浏览器;Playwright MCP 是把这些能力开放给 AI,让 AI 自己操作浏览器并据此写代码。前者靠你,后者靠 AI 边看边写,更适合”让 AI 自动写 E2E 测试”。
Playwright MCP 适合谁用? 做前端测试自动化的人最受益:想让 AI 帮写 E2E、快速复现用户报的 bug、改完自动回归的开发者。完全不写代码的人也能用它做基础页面巡检,但写测试仍建议有点工程基础。
它能测移动端 App 吗? Playwright 主攻浏览器(含移动端网页的设备模拟),原生 iOS/Android App 不在它的范围内,那是 Appium 之类工具的活。具体支持的浏览器和设备以官方文档为准。
AI 写出来的测试可靠吗,需要我改吗? 因为选择器来自真实页面,可用性比”纯靠猜”高很多,但断言是否覆盖到位、边界是否够全,仍要你审一遍。把它当”飞快打草稿的实习生”,验收权在你手里。
👉 看看我们的 AI 编程实战体系课,或逛 AI 编程教程大全 把基本功打扎实。