mcpField
P
Playwright E2E MCP

Playwright E2E MCP

本地服务
github.com开发工具0今天更新

关于 Playwright E2E MCP

Playwright E2E MCP 是为编码 Agent 提供的 Playwright 测试诊断与修复 MCP 服务,并附带 Agent skill。它会分析失败现场、提出修复并重新运行测试验证,还可检查 CI 报告、测试历史和不稳定用例。

主要功能

  1. 01运行 Playwright 测试并定位失败原因
  2. 02读取 CI 报告、Trace 和失败现场
  3. 03验证修复并在失败时撤销
  4. 04分析不稳定测试与运行历史
  5. 05审计测试并查找引入故障的提交
  6. 06检查可访问性与 Web Vitals

适用场景

  1. 01根据 Trace 诊断测试失败和应用错误
  2. 02修复定位器并重跑测试确认结果
  3. 03调查 CI 失败或定位回归提交
  4. 04识别不稳定测试并审查测试改动

MCP 相关

作为 MCP 服务和 Agent skill,它向兼容客户端提供 Playwright 测试运行、诊断、修复和审计工具。可通过本地命令配置接入多种 MCP 客户端;README 也提及面向远程客户端的 Streamable HTTP 桥接方案。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"xsignon-secure-e2e": {
"command": "npx",
"args": [
"-y",
"playwright-e2e-mcp"
]
}
}
}
启动命令npx -y playwright-e2e-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmplaywright-e2e-mcp0.7.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

playwright-e2e-mcp 标志:一条以绿色对勾结束的心电线

playwright-e2e-mcp

AI Agent 的测试医生。
你的 Playwright 测试失败了。你的 AI 会查明原因、修复问题,并验证修复有效。

npm npm downloads CI MCP Registry License: MIT

Install in Cursor Install in VS Code Add to Claude Desktop

Agent 运行失败的结账测试,suggest-fix 提出一个已在失败时页面上验证过的定位器,应用修复后重新运行并确认测试通过

⭐ 如果它帮你省下了一次调试,点个星标,让更多 Playwright 用户发现它。

快速开始 · 工具 · 工具参考 · GitHub Action · 配置 · 更新日志 · 参与贡献

这是一个 MCP 服务和 Agent 技能,为你的 AI 助手 (Claude、Cursor、VS Code Copilot、Gemini、Codex)提供完整的 Playwright 工具包:测试运行器、 失败侦查工具和能检查自身工作结果的修复工具。其他工具让 AI 在浏览器里四处点击,而这个工具能让它保持你的测试套件全部通过。

❌ 没有它 / ✅ 有它

没有它,你的 Agent 看到 Timeout 5000ms exceeded waiting for getByTestId('checkout'), 就猜一个新选择器、修改测试,然后祈祷能成功。或者,它会围绕真实缺陷“修复”测试。

有了它,你的 Agent 会读取测试失败时的页面状态,换成一个已验证在该页面上唯一的定位器, 重新运行测试,并且只有测试通过才保留修改。如果按钮真的不见了,它会告诉你这是应用程序的缺陷。

run-test ──────┐
load-report ───┴─▶ get-failure ──▶ suggest-fix (apply + re-run) ──▶ green
 (CI job report)        │                 └─ refuses when the element is really gone (app bug)
                        └─ DOM at failure, failed requests, console errors
every run ──▶ analyze-history (flaky / broken / slow / which commit broke it)
test code ──▶ audit-tests (flake risks, ranked by history, verified rewrites)
red at HEAD ─▶ bisect-failure (runs it across git history, names the breaking commit)

主要功能

  • 修复有验证,不靠猜测。 每次修复都会重新运行测试,通过后才保留;如果测试仍然失败,就会撤销修复。
  • 诚实可靠。 不会掩盖真正的 Bug 来让测试通过。
  • 也适用于 CI 失败。 加载 CI 作业的报告和跟踪记录,即可获得相同的诊断和修复。
  • 有证据的脆弱性分析。 指出脆弱测试的名称、问题是竞态、共享状态还是测试顺序,以及能复现问题的种子值。
  • 轻量。 使用 core 工具集时,查找并修复失效定位器约耗费 5,500 个令牌;使用 Playwright MCP 加 shell 则约耗费 7,900 个令牌。全部 19 个工具的定义会为每个请求增加约 16k 个令牌,因此只加载你会用到的配置方案(参见基准测试)。
  • 免费且开源。 采用 MIT 许可证,无需账户或 API 密钥,也不收集遥测数据。所有工具均免费;可选的付费 Pro 仅增加托管 CI 历史记录功能。

🚀 只有这个 MCP 能做到的事

大多数测试 MCP 都能让 AI 操控浏览器:Microsoft 的 Playwright MCP、Chrome DevTools MCP、 ExecuteAutomation 的 mcp-playwright 和 Selenium MCP。它们都很适合用来点击浏览页面。截至 2026 年 10 月,它们都无法做到以下这些事,而这个 MCP 可以:

能力你将获得什么
🛡️ 防止“修复”降低检查力度check-test-change 会将更改后的测试与原测试进行对比,阻止通过删除断言、跳过测试或添加 .only 来让测试变绿的修复;对于较弱的匹配器、硬等待、强制点击和吞掉错误等情况则会发出警告。同样的检查也会通过 guard 在 CI 中运行
🧊 隔离并注明负责人和到期时间quarantine 会让脆弱测试继续运行并报告结果,同时让其失败不再阻止构建,并注明由谁修复、原因以及重新阻止构建的日期
🎯 找到导致测试失败的提交bisect-failure 会在你的 git 历史记录中运行测试,并使用不会影响当前检出内容的临时工作树,找出首个有问题的提交及其差异和失败信息
🧪 审查测试代码的脆弱性风险audit-tests 会查找硬等待、一次性断言、缺少 await 的情况和脆弱选择器。它会根据这些测试实际出现脆弱问题的频率进行排序,然后应用安全的重写并重新运行测试加以验证
✅ 能自证有效的修复suggest-fix 会换用在失败时的 DOM 中已验证为唯一的定位器,重新运行测试;若测试仍然失败,就会撤销修复。它不会掩盖应用中的真正 Bug
🔬 附带证据的脆弱测试判定diagnose-flaky 会在关闭重试的情况下重复运行测试,判断问题来自竞态、共享状态还是测试顺序,并指出相关测试及能复现问题的种子值
📈 记录每次运行analyze-history 会对脆弱、回归和失败的测试进行排序,按原因归类失败,跟踪运行缓慢的测试,并指出每个测试首次出问题的提交
🏗️ 在本地诊断 CI 失败load-report 会加载 CI 作业的报告和跟踪记录(也支持分片),因此同样的诊断和经过验证的修复也适用于 CI 中的失败
💬 一键修复拉取请求GitHub Action 会在 CI 中验证每项修复,并将其作为建议更改发布,审查者可一键应用
♿⚡ 审查后提供可用测试无障碍(axe-core)和 Web Vitals 审查会为每个问题返回经过验证的定位器,以及可直接使用的回归测试或预算测试

它与浏览器 MCP 配合使用,而不是取代后者:浏览器 MCP 操控页面,这个 MCP 则确保测试套件保持全绿。

可以让它做什么

你向 AI 提出请求……它会……
🏃“运行我的测试”运行测试套件,并报告每个失败项的文件、行号、原因和修复提示。一个根本原因导致 30 项测试失败时,只会显示为一个问题。
🔍“为什么会失败?”读取 Playwright 的跟踪记录:失败时的页面、出错的请求、控制台错误。不靠猜测。
🛠️“修复它”换用已确认在页面上唯一的定位器,重新运行测试;如果仍然失败,则撤销修改。如果按钮确实已消失,它会告诉你这是应用程序的 bug,而不是掩盖问题。
🎲“这个测试不稳定吗?”以多种方式重新运行它(重复运行、单独运行、随机顺序运行),并指出导致不稳定的具体测试和随机种子。
📈“最近有哪些问题?”保存本地运行历史,并区分不稳定、新近失败和始终失败的测试;显示最慢的测试、每日稳定性,以及每个测试开始出问题的提交。
☁️“CI 为什么失败?”加载 CI 任务的报告(或合并分片 Blob 报告),将报告中的路径映射到你的检出目录,并在下载的制品中查找跟踪记录,让你也能用同样的方式诊断和修复 CI 失败。
✍️“为这个流程编写测试”先在实时页面上逐步执行操作,再编写一个可重放这些操作的规范,并断言流程最终到达的位置(URL 和无障碍快照),然后运行一次以验证通过。
♿“检查这个页面的无障碍情况”运行 axe-core(WCAG 2.2 AA),并为每个问题提供可直接粘贴使用的定位器和回归测试。
⚡“这个页面为什么这么慢?”在桌面设备或限速手机上测量 Web Vitals(LCP、CLS、INP、TBT),指出缓慢元素和发生跳动的元素,并提供预算测试。
🧪“显示错误状态”模拟 API 响应(500 错误、空列表、缓慢调用),让 AI 检查、审计或测量难以触达的状态。
🔑“登录并保存会话”登录一次(密码来自环境变量,身份验证器代码由 TOTP 密钥生成),检查会话是否有效,并将其保存供测试和页面工具使用;会话过期前重复使用。密码绝不会经过聊天传递。
🛡️“这个修复是不是投机取巧?”将已更改的测试与 git 进行比较,并阻止通过删除断言或跳过测试来让测试通过的修复。
🧊“隔离这个不稳定的测试”继续运行并报告该测试,但不让它导致构建失败;同时设置负责人和到期日期。
🔐“测试登录后的页面”使用已保存的会话、请求头以及点击/填写步骤,在 Chromium、Firefox 或 WebKit 中测试登录后的页面;还可以从 HAR 文件记录或重放网络流量。
🤖“在 CI 中运行”GitHub Action 和 ci 命令会在你的 PR 中发布诊断结果、不稳定性判定和修复差异。

要求

  • Node.js 22 或更高版本
  • 使用 @playwright/test 的项目,并已安装浏览器(npx playwright install chromium)
  • Claude Code、Claude Desktop、Cursor、VS Code、Windsurf、Codex、Gemini CLI 或任何其他 MCP 客户端

开始使用

**最快方式:**在项目根目录运行以下命令。它会将服务添加到找到的每个客户端配置中 (Claude Code、Cursor、VS Code、Gemini CLI、Codex),并安装 Agent 技能,不会影响你的 其他服务:

npx -y playwright-e2e-mcp init            # --client all | cursor,vscode … · --dry-run
npx -y playwright-e2e-mcp doctor          # checks Node, Playwright, browsers and client setup

**或者让你的 Agent 来安装。**将以下内容粘贴到任意编码 Agent 中:

按照以下说明安装 playwright-e2e-mcp 服务和技能: https://raw.githubusercontent.com/xsignon-secure/E2E/main/llms-install.md

标准配置适用于大多数客户端:

{
  "mcpServers": {
    "playwright-e2e": {
      "command": "npx",
      "args": ["-y", "playwright-e2e-mcp"]
    }
  }
}

该服务会将其工作目录用作项目根目录。如果你的客户端在其他位置(例如你的主目录)启动它, 请添加 "env": { "PW_MCP_PROJECT_ROOT": "/path/to/your/project" }。

Claude Code

作为插件安装服务和技能:

/plugin marketplace add xsignon-secure/E2E
/plugin install playwright-e2e-mcp@xsignon-secure

或者仅安装服务:

claude mcp add playwright-e2e -- npx -y playwright-e2e-mcp
Claude Desktop 从[最新版本](https://github.com/xsignon-secure/E2E/releases/latest)下载 `.mcpb` 扩展并双击。它自带依赖项,因此无需配置 Node。安装时会询问你的**项目根目录**:请选择项目文件夹,而不是主目录。

你也可以将标准配置添加到 claude_desktop_config.json。

Cursor

点击在 Cursor 中安装,或前往 Settings → MCP → Add new MCP server 并粘贴标准配置。若仅用于一个项目,请将其放入 .cursor/mcp.json。

VS Code / GitHub Copilot

点击上方的 Install in VS Code 按钮,或运行:

code --add-mcp '{"name":"playwright-e2e","command":"npx","args":["-y","playwright-e2e-mcp"]}'
Codex
codex mcp add playwright-e2e -- npx -y playwright-e2e-mcp

带重试的 Playwright 运行可能超过 Codex 默认的 60 s 工具超时时间。请在 ~/.codex/config.toml 中调高超时时间:

[mcp_servers.playwright-e2e]
command = "npx"
args = ["-y", "playwright-e2e-mcp"]
startup_timeout_sec = 60
tool_timeout_sec = 600
Gemini CLI / Qwen Code

作为扩展安装服务和技能:

gemini extensions install https://github.com/xsignon-secure/E2E

或者将标准配置粘贴到 .gemini/settings.json(Qwen Code:.qwen/settings.json)。

Windsurf、Cline、Zed 和其他客户端

将标准配置添加到客户端的 MCP 配置文件中(Cline:MCP Servers → Configure)。对于需要指定命令的客户端(如 Zed),请使用参数 -y playwright-e2e-mcp 运行 npx。

Freebuff / Codebuff

在项目的 .agents/ 文件夹中放入一个包含标准配置的 mcp.json。此代码库已附带 .agents/mcp.json,因此打开此代码库即可在整个工作区中连接服务。Freebuff 首次运行时会要求你信任仓库的 .agents/。

ChatGPT 和其他仅支持远程服务的客户端

有些客户端只接受远程 HTTPS 服务。此代码库附带一个 Streamable HTTP 桥接服务,可免费托管在 Vercel 上,并为 claude.ai 连接器提供 OAuth 登录。请参阅托管端点。在 Vercel 上,页面工具(检查页面、检查选择器、执行可访问性和 Web Vitals 审计)会使用打包的 Chromium 检查公共 URL。运行和修复你自己的测试需要你的项目,因此请使用本地安装。

其他安装方式
方式操作
仅安装技能,适用于任意 Agentnpx skills add xsignon-secure/E2E
MCP Registryio.github.xsignon-secure/E2E (列表);支持注册表的客户端可在此找到它
直接从 GitHub 安装,无需 npmnpx -y github:xsignon-secure/E2E#v0.7.0(固定到一个版本标签)
版本压缩包npm install -D https://github.com/xsignon-secure/E2E/releases/download/v0.7.0/playwright-e2e-mcp-0.7.0.tgz
Dockerdocker run -i --rm -v "$PWD:/work" ghcr.io/xsignon-secure/playwright-e2e-mcp(每次发布都会推送;请参阅开发)
本地检出"command": "node", "args": ["/path/to/E2E/dist/index.js"]
你的第一个提示词

重启客户端,然后询问:

Run my Playwright tests and fix whatever fails.

你的 Agent 应运行测试套件、读取失败信息,并提出一个已重新运行验证过的修复方案。如需在没有自己的测试时检查配置,请让它运行此代码库中的 examples/sample-test.spec.ts。

0.7 版新功能

  • 安全地登录一次: save-login 使用从环境中读取的密钥登录(包括 2FA 验证码),验证会话并将其保存为 storageState 文件;会话失效前会重复使用。
  • 防护修复回退: check-test-change 和 playwright-e2e-mcp guard 会阻止通过减少检查来通过测试的“修复”(例如删除断言、跳过测试、使用 .only)。
  • 隔离不稳定测试: quarantine 会在指定时间内阻止已知的不稳定测试导致构建失败,并记录负责人和原因,同时继续运行并报告该测试。

0.6 版新功能

  • 找出导致测试失败的提交: bisect-failure 会在临时工作树中跨 Git 历史运行测试,并指出第一个有问题的提交、该提交的变更以及当时的失败情况。
  • 不稳定风险审计: audit-tests 会找出硬等待、一次性断言、缺少 await 和脆弱的选择器,按实际不稳定程度排序,并应用安全的改写后运行验证。
  • 一键修复拉取请求: GitHub Action 会在 CI 中验证每项修复,并以建议的变更形式发布。
  • doctor: npx playwright-e2e-mcp doctor 会检查 Node、Playwright、浏览器和客户端设置。
  • 结构化结果: 每个工具都会返回 JSON 和 Markdown,并附带输出架构。
  • 手机、平板、Chrome 和 Edge: 所有页面工具均支持 device 预设和 channel,并提供托管在 ghcr.io 的 Docker 镜像。
  • 现在要求使用 Node 22 或更高版本,托管端点也会限制对其密钥的猜测。

所有发行说明

工具

工具用途
run-test运行 Playwright 测试并返回统计数据、失败项、诊断信息和提示;报告进度,对于较长的测试套件,background: true 会返回运行 ID
get-run-status查看后台运行的进度或最终结果;可以等待运行完成,也可以取消运行
get-failure深入分析单个失败项:堆栈、预期值/实际值、失败时的 DOM 快照(来自 Playwright 跟踪记录)、失败的请求、控制台错误和后续步骤
load-report从 CI 加载一次运行:JSON 报告或分片 blob 报告文件夹;CI 路径会映射到当前检出目录,并会在解包后的构建产物中查找跟踪记录,因此 get-failure、suggest-fix 和 diagnose-flaky 都可以处理这些报告;该运行还会连同其提交记录加入历史记录
suggest-fix修补失败项:将已偏移的定位器替换为在失败时的 DOM 上经验证具有唯一性的定位器;对于有歧义的定位器(严格模式违规),使用预期匹配项的唯一定位器;对于已更改的文案,更新预期文本;apply: true 会写入修补内容、重新运行测试,并在测试仍失败时还原
inspect-page无头打开一个 URL(可选择登录并执行后续步骤),并返回带有经验证的 Playwright 定位器的元素、CSS 选择器、可见性、文本和控制台输出;或者返回无障碍快照,以及可直接使用的 toMatchAriaSnapshot 断言
list-tests列出可用测试(file、line、完整标题、项目),并支持筛选
validate-selector检查 CSS 选择器、Playwright 选择器或定位器表达式在实时页面上的有效性和匹配数量,并为每个匹配项提供更稳健且经验证的定位器
generate-e2e-test根据描述搭建 Playwright 测试,使用项目中的实际选择器和从实时页面验证过的定位器;或者在实时页面上逐步执行一个流程,并编写一个会运行一次以验证通过的测试规范
compare-visual-state视觉回归:对比更改前后的屏幕截图,并报告移动了什么以及颜色如何变化
audit-accessibility在页面上运行 axe-core(默认采用 WCAG 2.2 AA),可选择登录或执行后续步骤;按严重程度从高到低返回违规项,为违规元素提供经验证的定位器,并进行回归检查
audit-performance测量实验室环境中的 Web Vitals(LCP、CLS、TBT、FCP、TTFB、步骤执行期间的 INP),可选择使用限速手机配置和多次运行的中位数;评定指标或检查预算,将 LCP 元素和发生位移的元素列为经验证的定位器,列出体积较大和阻塞渲染的请求,并返回预算测试
diagnose-flaky禁用重试,运行失败的测试 2–10 次,并根据证据给出判定:CONSISTENTLY FAILING、FLAKY 或 NOT REPRODUCING;区分并行执行和测试顺序导致的竞争问题
analyze-history根据本地运行历史对不稳定、回归和已损坏的测试进行排序,按原因对失败项分组,列出最慢的测试,显示每天的稳定性,指出每个测试开始出问题的提交,或显示单个测试的时间线
audit-tests审查测试代码中的不稳定风险(硬等待、使用一次性断言而非 Web 优先断言、缺少 await、.only、强制点击、networkidle、元素句柄、布局选择器),并根据这些测试在运行历史中的不稳定程度排序;fix: true 会重写可机械修复的问题,重新运行相关文件,并在失败时还原
save-login登录一次并保存会话(storageState):支持使用 {{env:E2E_PASSWORD}} 和 {{totp}}(来自环境中密钥的身份验证器代码)配置步骤、检查会话是否有效,并在会话过期前重复使用;机密信息绝不会经由聊天传递
check-test-change修复保护机制:将更改后的测试与 git 比较(或将拟议的修复与文件比较),并阻止删除断言、跳过或移除测试以及 .only;对于匹配器变弱、硬等待、force: true、吞掉错误以及增加超时或重试次数的情况发出警告
quarantine隔离不稳定的测试,并设置负责人、原因和过期时间(默认 14 天):测试仍会运行并报告,但条目过期前,其失败不会导致 run-test 或 ci 失败。数据存储在 playwright-quarantine.json 中
bisect-failure查找导致测试失败的提交:在正常提交和异常提交之间对 git 历史进行二分搜索,在临时工作树中逐步运行测试(不会改动当前检出目录),并报告首个异常提交、该提交的改动内容和测试失败方式
两个提示词封装了客户端可作为斜杠命令展示的主要工作流:
fix-failing-test 和 triage-flaky-tests。

所有参数和输出示例都在**工具参考**中。所有工具都带有 MCP 工具注释(readOnlyHint、destructiveHint,……),因此客户端可以展示准确的安全提示。

只需要修复循环? --tools=core(或 PW_MCP_TOOLS=core)会开放七个工具,并将工具定义上下文减少约四分之三。其他配置:triage、inspect、author。

典型工作流
  1. 调用 run-test { "testFiles": ["tests/checkout.spec.ts"] },如果套件运行时间较长,则传入 { "background": true },然后调用 get-run-status { "waitSeconds": 30 },直到运行结束。对于 CI 中的失败,下载作业的产物,然后改为调用 load-report { "report": "ci-artifacts/results.json" }。
  2. 调用 get-failure { "index": 1 },读取代码片段、预期值与实际值、失败时的 DOM 快照、失败的网络请求和页面控制台错误。
  3. 对于定位器或文案更改,调用 suggest-fix { "index": 1 }:检查差异,然后调用 { "index": 1, "apply": true } 写入更改,并通过重新运行进行验证。如果它报告元素缺失,请修复应用,而不是测试。
  4. 对于无法自动修复的问题:调用 inspect-page { "url": "…", "view": "locators" } (添加 storageState 或 actions 以进入正确页面),然后调用 validate-selector 在编辑前验证新定位器。
  5. 如果失败看起来是偶发的:调用 diagnose-flaky { "runs": 3 } 获取最新证据,并调用 analyze-history 查看测试在之前运行中的表现 ({ "view": "commits" } 会指出它开始出问题的提交)。
  6. 更改 CSS 或组件后:调用 compare-visual-state { "url": "…", "name": "checkout" }。
  7. 调用 run-test { "lastFailed": true },仅重新运行失败的测试,直到全部通过。

要编写新测试,先调用 inspect-page { "view": "locators" } 查找定位器,然后调用 generate-e2e-test,并传入流程的 description 和 steps;它会在实时页面上逐步执行,写入测试规范并运行一次。要检查页面的速度或无障碍性,请使用 audit-performance 和 audit-accessibility。

CI:GitHub Action 和 ci 命令

无需 Agent 也能运行相同的诊断。playwright-e2e-mcp ci 会运行套件(自动重试一次,因此偶发测试会报告为偶发,而不是失败),可选择为失败项生成 suggest-fix 差异和偶发性判定,并将一份 Markdown 报告写入标准输出、--output 指定的位置,以及设置了 GITHUB_STEP_SUMMARY 时的 GitHub 作业摘要。退出码:0 表示通过,1 表示测试失败,2 表示运行本身失败。

npx -y playwright-e2e-mcp ci --flaky-runs 3 --suggest 2 --output report.md
npx -y playwright-e2e-mcp ci --help

作为 GitHub Action,它会将报告添加到作业摘要中,并在运行失败时持续更新一条 PR 评论。在拉取请求中,它还会使用建议的修复重新运行每个失败的测试,并将通过的修复作为失败代码行上的建议更改发布,这样审查者可以点击提交建议按钮来应用(仅限 PR 中更改过的代码行;其余内容仍保留在报告中):

permissions:
  contents: read
  pull-requests: write   # for the PR comment and the suggested fixes
steps:
  - uses: actions/checkout@v6
  - uses: actions/setup-node@v6
    with: { node-version: 24 }
  - run: npm ci && npx playwright install --with-deps chromium
  - uses: xsignon-secure/[email protected]
    with:
      flaky-runs: 3      # 0 skips the flaky verdict
      suggest: 2         # suggest-fix diffs for the first 2 failures
      # args: --browser chromium tests/checkout

完整且可直接复制的工作流见 examples/github-actions/playwright-e2e.yml,其中包括产物上传,以及 guard: true 和 Pro Cloud 的注释选项。

输入:project-root、args、flaky-runs、suggest、comment、review、 verify-fixes、guard、pro-key、pro-url、fail-on-failure、version、github-token。输出:exit-code、 report、guard。

此处同样会遵循隔离测试(playwright-quarantine.json,见 quarantine):如果所有失败项都已隔离且尚未过期,ci 会以 0 退出,并在报告中列出这些测试。

CI 中的修复防护。 guard: true 会先对照基础分支检查 PR 中更改的测试;如果测试是通过减少检查内容而通过的,则作业会失败。不使用 Action 时:

npx -y playwright-e2e-mcp guard --base origin/main   # exit 1 on BLOCK; --strict fails on warnings too

配置

环境变量
环境变量默认值用途
PW_MCP_PROJECT_ROOTserver cwd每个工具的默认项目根目录
PW_MCP_TOOLSall要公开的工具,以工具名称和/或配置组指定,多个值以逗号分隔(与 --tools= 标志相同)。配置组:core(run、status、failure、fix、flaky、heal guard、list)、triage(run、status、failure、CI report、flaky、history、test audit、bisect、quarantine、heal guard、list)、inspect(page、selector、accessibility、performance、visual、login)、author(list、page、selector、generate、run、login、heal guard)。全部 19 个工具定义每个请求约占用 16k 个上下文 token;core 约占用 5k(设置 PW_MCP_OUTPUT_SCHEMAS=0 后分别为 12k 和 2.6k)
PW_MCP_OUTPUT_SCHEMASon设置为 0 时,不在工具列表中包含输出架构,以节省上下文。结果仍包含 structuredContent(参见结构化结果)
PW_MCP_STORAGE_STATE—页面工具的默认 storageState 文件(位于项目内)
PW_MCP_SHUFFLE_SEEDSrandom以逗号分隔的种子,用于 diagnose-flaky 的 order 阶段,重放诊断报告中的顺序
PW_MCP_LOGIN_ENV—save-login 可通过 {{env:NAME}} 输入的额外环境变量,多个值以逗号分隔。未设置时,仅允许使用 E2E_*、TEST_*、PW_*、PLAYWRIGHT_* 和 LOGIN_*
PW_MCP_PRO_KEY / PW_MCP_PRO_URL—可选,付费:Pro 密钥和 Pro Cloud 地址。CI 运行结果通过 playwright-e2e-mcp upload(或 Action 的 pro-key / pro-url 输入项)上传,analyze-history 会将其与本地运行结果合并。默认未设置时,不会向任何地方发送任何内容
PW_MCP_HISTORYon设置为 0 时,停止将运行记录写入 .playwright-e2e-mcp/history.jsonl
PW_MCP_ALLOWED_ROOTS—调用方可作为 projectRoot 传入的额外目录(以 : 分隔;Windows 上以 ; 分隔)。默认根目录及这些目录之外的路径均会被拒绝
PW_MCP_HTTP_TOKEN—仅限 HTTP 桥接:解锁所有工具的 bearer token;长度至少为 16 个字符,建议至少 32 个字符(参见托管端点)
PW_MCP_ALLOWED_HOSTSlocalhost + 未设置 token 时的 Vercel 主机名仅限 HTTP 桥接:以逗号分隔的 Host 允许列表;* 表示接受任何主机
PW_MCP_MAX_FAILED_AUTH20仅限 HTTP 桥接:单个客户端地址在 15 分钟内可发送的错误 token 或访问密钥数量上限,超过后会收到 429
PW_MCP_OAUTH_REDIRECT_HOSTSany https host仅限 HTTP 桥接:以逗号分隔的 OAuth 应用可跳转至的主机,例如 claude.ai,chatgpt.com;.example.com 包含其子域名;localhost 始终可用
PW_MCP_TRUST_PROXYoff (on for Vercel)仅限 HTTP 桥接:设置为 1 时,信任前置反向代理提供的 X-Real-IP / X-Forwarded-For,使登录限制按客户端而非代理计数
PW_MCP_PASSTHROUGH_ENV—仅限 HTTP 桥接:以逗号分隔的额外变量,传递给测试运行(例如 BASE_URL)
PW_MCP_MAX_CHILDREN4仅限 HTTP 桥接:可同时运行的测试运行和浏览器探测数量
PW_MCP_BLOCK_PRIVATE_URLSoff (on for the HTTP bridge)设置为 1 时,URL 工具会拒绝环回、专用网络和云元数据地址,包括重定向和子资源
PW_MCP_SERVERLESS_CHROMIUMon for Vercel使用捆绑的无服务器 Chromium(@sparticuz/chromium,Linux x64,Node 22+)启动页面工具;设置为 0 可关闭,设置为 1 可在其他环境中启用
LOG_LEVEL / MCP_LOG_LEVELinfodebug | info | warn | error | silent;两者同时设置时以 LOG_LEVEL 为准
LOG_FORMAT / MCP_LOG_FORMATtexttext,或 json(也可为 ndjson),每行输出一个结构化 JSON 对象,可直接供日志采集器使用
日志始终写入 stderr——stdout 专供 MCP 协议使用。无法识别的值会回退到默认值,因此,LOG_LEVEL 中的拼写错误会让日志级别变为 info,而 LOG_FORMAT 中的拼写错误会让日志采用文本格式,而不是让服务静默运行。设置 LOG_FORMAT=json 后,每行都是一个独立对象(包含 time、level、message 和上下文):
{"time":"2026-10-07T08:00:00.000Z","level":"info","message":"server ready","name":"playwright-e2e-mcp"}

基准测试

bench/token-benchmark.mjs 会破坏商店页面中结账按钮的测试 ID,并通过两种方式修复:使用此服务(run-test → suggest-fix → 应用)和使用 Playwright MCP 加 shell(playwright test、browser_navigate + browser_snapshot、编辑、重新运行)。最新结果(完整输出):

步骤playwright-e2e-mcp(core 工具)playwright-e2e-mcp(所有工具)Playwright MCP + shell
工具定义(随每次请求发送)4,82616,1215,225
运行失败的测试244244323
查找元素 / 提出修复方案2322322,286
应用并验证(重新运行)23023034
修复一次的总计5,53216,8277,868

Token 数量按字符数 ÷ 4 计算。此处实际工作(运行、诊断、修复、验证)约需 700 个 token,而使用 Playwright MCP 则约需 2,600 个;但工具定义会随每次请求发送:加载全部 19 个工具时,定义所占用的 token 会超过节省的数量,因此,如果只修复失败的测试,请设置 PW_MCP_TOOLS=core(或其他配置)。Playwright MCP 方案提供的是较低估值:它假设 Agent 首次尝试就能从快照中选出正确的定位器,而此处服务能代为完成。使用 0.7.0 和 Playwright 1.64.1,于 2026-10-28 运行;可通过 npm run build && node bench/token-benchmark.mjs 重新运行。

演示

通过 stdio 调用 npx -y playwright-e2e-mcp,针对捆绑的 examples/sample-test.spec.ts 运行真实的 run-test(实际输出,未经编辑):

run-test 结果:4 项通过,0 项失败,耗时 5.1 秒

免费且开源

  • 采用 MIT 许可证。 可使用、修改,并用于商业项目;不收取费用,也不会限制任何功能。可选的 Pro 方案提供托管服务(跨机器的 CI 运行历史),不包含工具;此处的任何功能都不需要 Pro。
  • 无需账户、API 密钥或注册。 运行 npx -y playwright-e2e-mcp init 即可完成全部设置。
  • 无遥测。 它不会向外发送任何数据;除非设置 Pro 密钥并上传,否则测试、跟踪记录和运行历史都保留在本机。
  • 依赖项均免费: MCP SDK(Apache-2.0)、zod(MIT)、axe-core(MPL-2.0),以及项目已有的 Playwright(Apache-2.0)。
  • 也可免费自行托管: HTTP 桥接服务可部署到免费的 Vercel 账户(请参阅托管端点)。

它不会做什么: 它不会逐步驱动探索式浏览会话,也不会取代 VS Code 中 Playwright 自带的 Test Agents。交互式浏览请使用 Playwright MCP,运行、诊断和修复测试套件请使用此服务。两者可以配合使用。

更多文档

许可证

MIT。如果它帮你省下了一次调试,不妨给仓库点个 ⭐,让更多 Playwright 用户发现它。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。