Token导航 LogoToken导航TokenDH.com
Playwright Report MCP logo
开发工具未说明官方级别未说明来源级核验

Playwright Report MCP

MCP Server

一个为AI代理设计的Playwright测试报告分析服务,用于读取结构化测试结果、失败测试详情和附件内容。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude自动化测试Claude DesktopClaudeCursorWindsurfCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

hubertgajewski

提供方

hubertgajewski

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

编剧报告MCP

一个MCP(模型上下文协议)服务器,用于运行Playwright测试并读取结构化结果、失败的测试细节和附件内容,专为进行测试失败分析的AI代理而设计。

License: MIT

______________________________________________________________________

目录

______________________________________________________________________

这是什么

编剧报告MCP 为AI代理提供结构化、令牌高效的Playwright测试结果访问。它运行您的测试套件,读取JSON报告器输出,并准确显示代理需要什么:哪些测试失败,错误是什么,以及相关附件的内容。

它不是什么

有许多Playwright MCP服务器控制浏览器——它们导航页面、单击元素、填写表单和截图。剧作家报告MCP不是其中之一。

浏览器自动化MCP剧作家报告MCP
示例microsoft/playwright-mcp, executeautomation/mcp-playwright这个项目
目的让AI代理驱动浏览器让AI代理人读取测试结果
运行测试
返回通过/失败
表面错误消息
读取附件内容

______________________________________________________________________

为什么

现有方法的问题

默认报告器(list / dot) --Playwright的默认报告器将人类可读的输出打印到stdout。紧凑但有损:没有附件路径,没有重试故障,没有结构化数据。

HTML报告器 (report.html)--一个自包含的SPA包(通常为2-50MB)。不是机器可读的文本,并且超出了任何LLM上下文窗口。

阅读 results.json 直接 --可以,但即使是一个小型测试套件的完整JSON报告也需要10000-20000个令牌。对于失败的测试,其中大部分是通过您不需要的测试元数据。

剧作家报告MCP做了什么

  • 过滤器 results.json 仅限于未通过的测试
  • 返回结构化、类型化的JSON,代理可以立即对其执行操作
  • 按名称显示单个附件,以便代理只获取它需要的内容
  • 对任何人产生的结果都有效——CI管道、人类或代理本身

令牌成本比较(20个测试套件中有一个测试失败)

基于以下内容的大致输入令牌计数 克劳德标记化 (对于混合JSON/文本内容,每个令牌约3-4个字符)。
您需要什么没有MCP--方法令牌(没有MCP)有MCP--工具调用令牌(MCP)节省
仅显示错误消息--实时运行npx playwright test,读取stdout(list/dot)~500–1,200run_tests + get_failed_tests~300–500~2×
仅错误消息--现有结果读取完整 results.json~12,500–23,000get_failed_tests~300–500~25–45×
+失败时的页面状态+读取 error-context 文件~15000–26000+ get_test_attachment('error-context')~2,800–3,500~4–7×
+自定义文本附件¹+读取附件文件~16200–28500+ get_test_attachment ×2~3,300–5,500~4–5×
+整页HTML快照²+读取快照文件~41000–103000+ get_test_attachment~33,300–85,500~1.2×
¹ 自定义文本附件 --例如,通过添加AI诊断(约500-2000个令牌)和控制台日志(约200-500个令牌) testInfo.attach() 在你自己的赛程中。 ² 全页HTML快照 --一个自定义夹具,在失败时附加完整的渲染页面HTML。无论是否使用MCP,仅大页面就可以达到30000-80000个代币,并主导成本。

主要观察结果:

  • 对于实时运行,stdout(list/dot)结构紧凑,但无法让代理访问附件内容——这是深入分析的死胡同
  • 阅读 results.json 即使只有一个测试失败,直接花费约12500-23000个令牌,其中大部分是通过代理不需要的测试元数据
  • 最大的MCP增益在中间几行:从位于的现有结果中获取错误消息+页面状态 ~4–45倍的代币成本降低
  • 无论哪种方式,全页HTML快照都占主导地位;跳过它以支持 error-context 是可用的最大单一优化

CI故障分析

主要用例:您的CI管道运行测试,代理在事后获取结果并诊断故障。 get_failed_tests 读取 results.json 不管是谁引发了这次跑步。无需重新运行。

______________________________________________________________________

快速启动

1.通过npx安装(推荐)

无需克隆或构建步骤——npx会自动下载并运行服务器:

{
  "mcpServers": {
    "playwright-report-mcp": {
      "command": "npx",
      "args": ["-y", "playwright-report-mcp"],
      "type": "stdio"
    }
  }
}

或者从源代码构建:

git clone https://github.com/hubertgajewski/playwright-report-mcp.git
cd playwright-report-mcp
npm install && npm run build

2.将JSON报告器添加到您的Playwright项目中

// playwright.config.ts
reporter: [
  ['json', { outputFile: 'test-results/results.json' }],
  ['html'], // keep any existing reporters
],

3.注册 .mcp.json

{
  "mcpServers": {
    "playwright-report-mcp": {
      "command": "npx",
      "args": ["-y", "playwright-report-mcp"],
      "type": "stdio"
    }
  }
}

4.问你的人工智能代理

运行剧作家测试,告诉我失败了什么。

______________________________________________________________________

兼容性

经过测试 克劳德代码(CLI)。应适用于任何支持stdio传输的MCP兼容客户端,包括Claude Desktop、Cursor、Cline、Windsurf和Continue.dev,但这些尚未经过验证。

______________________________________________________________________

工具

所有四个工具都接受可选 workingDirectory 参数--请参见 多工作台支架.

run_tests

运行Playwright测试套件并返回结构化的通过/失败结果。

输入类型描述
workingDirectorystring(可选)剧作家项目目录。绝对或相对于MCP服务器启动目录。默认为 "."。一定在下面 PW_ALLOWED_DIRS --看 多工作台支架.
specstring(可选)相对于项目目录的规范文件路径,例如。 tests/login.spec.ts。必须位于项目目录中。
browser枚举(可选)Chromium, Firefox, Webkit, Mobile Chrome, Mobile Safari
tagstring(可选)标签过滤器,例如。 @smoke
timeoutinteger(可选)整个测试运行的超时时间(毫秒)。默认为 300000 (5分钟)。为长套件使用较大的值,或为快速失败使用较小的值。当运行被此超时终止时,该工具将返回显式错误,而不是通用的非零退出。
updateSnapshotsenum(可选)更新快照基线。之一 all, changed, missing, none.Playwright的默认设置为 missing; changed 更新不同+缺失。忽略现有基线。
headedboolean(可选)使用可见的浏览器窗口运行。省略或设置 false 叶子 playwright.config.ts 完好无损——剧作家没有 --no-headed 旗,所以 false 当配置设置为headed时,不会强制使用headless。
workersinteger(可选)并行工作者的数量。仅限正整数;这 "50%" 尚不支持字符串形式。
retriesinteger(可选)片状测试的最大重试次数。 0 明确禁止重试;省略使用项目的配置。
maxFailuresinteger(可选)在多次失败后停止运行。正整数。
traceenum(可选)强制剧作家跟踪模式,覆盖 playwright.config.ts.其中之一 on, off, on-first-retry, on-all-retries, retain-on-failure, retain-on-first-failure, retain-on-failure-and-retries.

返回:退出代码、运行统计数据以及所有测试的摘要,包括每个项目的状态、持续时间和错误。

get_failed_tests

返回上次运行失败的测试,并显示错误消息和附件路径。不重新运行测试--读取现有的 results.json.

输入类型描述
workingDirectorystring(可选)请参见 多工作台支架.默认为 ".".

返回:失败测试计数、标题、文件路径、每个项目的状态、错误消息和附件路径。

get_test_attachment

读取上次运行中特定测试的命名文本附件的内容。

输入类型描述
workingDirectorystring(可选)请参见 多工作台支架.默认为 ".".
testTitlestring报告中显示的确切测试标题
attachmentNamestring附件名称,例如。 error-context, ai-diagnosis, page-html

返回:附件内容为文本。超过1 MB的二进制附件和文件因错误而被拒绝。附件路径记录在 results.json 逃跑 workingDirectory (通过 .. 或指向其他地方的绝对路径)被拒绝。

list_tests

列出所有测试及其规范文件和标签,而不运行它们。

输入类型描述
workingDirectorystring(可选)请参见 多工作台支架.默认为 ".".
tagstring(可选)按标签筛选,例如。 @smoke

______________________________________________________________________

附件

Playwright会自动将文件附加到失败的测试中。 get_test_attachment 可以按名称阅读任何文本附件。

附件名称来源存在于每个项目中
error-context内置Playwright——故障点的YAML可访问性树快照
screenshot内置Playwright——PNG屏幕截图(二进制,不可读)
video内置剧作家——WebM视频(二进制,不可读)
自定义附件通过添加 testInfo.attach() 在您的装置中取决于项目

error-context 附件对于没有自定义夹具的项目最有用——它在失败时提供了页面的语义、结构化视图,无需进行设置。

______________________________________________________________________

安装

通过npx(推荐) --使用中显示的npx配置 快速启动。无需本地安装。

来源:

git clone https://github.com/hubertgajewski/playwright-report-mcp.git
cd playwright-report-mcp
npm install
npm run build

______________________________________________________________________

配置

添加到您的 .mcp.json 在项目的根本:

{
  "mcpServers": {
    "playwright-report-mcp": {
      "command": "npx",
      "args": ["-y", "playwright-report-mcp"],
      "type": "stdio"
    }
  }
}

环境变量

变量默认值描述
PW_ALLOWED_DIRS"." (仅授权启动目录)path.delimiter-分开的目录列表 workingDirectory 参数可能指向。条目可以是绝对的或相对的(在启动时针对启动cwd解析一次)。
PW_RESULTS_FILE/test-results/results.jsonJSON报告器输出文件的绝对路径。如果已设置,则会覆盖每次调用的默认值。

PW_RESULTS_FILE 如果你的 playwright.config.ts 将报告写入非默认位置。在多工作台设置中保持未设置状态,以便每个 workingDirectory 得到自己的 test-results/results.json.

多工作台支架

run_tests, list_tests, get_failed_tests,以及 get_test_attachment 全部接受可选 workingDirectory 参数--绝对值,或相对于MCP服务器的启动目录。这使得一个长寿命的MCP会话可以在多个git工作树上进行驱动测试,而无需重新启动。

因为Playwright配置是一个节点模块,在 playwright test 启动时,服务器会用一个满列表来保护参数。打电话给这一点 workingDirectory 在外部目录中 PW_ALLOWED_DIRS 如果出现结构化错误,则不会生成子进程。

默认值(无工作树)。 离开 PW_ALLOWED_DIRS 未设置。对抗主义者变成 "." --只有启动目录和默认目录 workingDirectory (也 ".")解析到启动目录。零配置。

兄弟姐妹的工作树。PW_ALLOWED_DIRS=".." 在你的 .mcp.json 授权启动目录的每个兄弟。相对条目在启动时解析为启动cwd,因此相同 .mcp.json 适用于每个贡献者,无需在绝对路径中烘焙:

{
  "mcpServers": {
    "playwright-report-mcp": {
      "command": "npx",
      "args": ["-y", "playwright-report-mcp"],
      "env": { "PW_ALLOWED_DIRS": ".." },
      "type": "stdio"
    }
  }
}

然后指向任何兄弟工作台:

{
  "name": "run_tests",
  "arguments": { "workingDirectory": "../my-app-feat-auth" },
}

多个项目。 从每个项目启动MCP客户端并使用默认的分配列表,或者设置 PW_ALLOWED_DIRS 到共享父节点并传递 workingDirectory 每次通话。allowlist检查在路径段边界运行,因此条目授权 /src/my-app 不会授权 /src/my-app-evil.

突破性变化(2.x→ 下一页):PW_DIR env-var已被删除。从Playwright项目目录中启动MCP客户端(零配置,默认 workingDirectory: "." 作品),或通行证 workingDirectory 每次通话和设置 PW_ALLOWED_DIRS 因此。

______________________________________________________________________

需求

  • Node.js 22+
  • @playwright/test 1.40或更高版本
  • 在Playwright项目中配置JSON报告器

剧作家的默认记者(list 当地, dot 在CI上)只写入stdout——它们在运行后不会产生可读取的文件。在您已经使用的任何报告器旁边添加JSON报告器:

// playwright.config.ts
reporter: [
  ['json', { outputFile: 'test-results/results.json' }],
  ['html'],  // keep any existing reporters
  ['list'],
],

______________________________________________________________________

故障排除

No results.json found — run tests first

JSON报告器未配置或正在写入其他路径。验证您的 playwright.config.ts['json', { outputFile: 'test-results/results.json' }].

list_tests parsed 0 tests from non-empty output

--list 输出格式可能已在Playwright版本中更改。使用您的Playwright版本和原始stdout输出打开一个问题。

Attachment "..." is binary and cannot be returned as text

screenshotvideo 附件是二进制文件。使用 get_failed_tests 获取附件路径,并在需要时直接打开它们。

Attachment "..." is too large to return inline

附件超过1 MB。直接从返回的路径读取文件 get_failed_tests.

______________________________________________________________________

发展

npm test          # run tests once
npm run test:watch  # watch mode

测试使用 维测试 并覆盖 collectSpecs 助手(单元)和所有四个MCP工具 InMemoryTransport (整合)。运行测试套件不需要构建步骤或Playwright安装。

______________________________________________________________________

切割释放

发布是通过推送 v* 标签。 拾取标签,验证标签是否与所有三个版本字段匹配,运行 npm ci + npm run build + npm test,创建一个GitHub版本,其中自动生成的注释按以下分类 .github/release.yml (功能/Bug修复/文档/依赖关系/其他更改),并发布到npm。 然后解开链子 Release 通过 workflow_run 并出版 server.json 到MCP注册表。合并到 main 不会触发发布。

版本存在于三个地方,在推送之前,这三个地方都必须与标签匹配:

  • package.jsonversion
  • server.json → 最重要的 version
  • server.jsonpackages[0].version

将所有三个PR合并到一个PR中 main 在切断释放之前。 release.yml 如果标记与这些值中的任何一个不一致,则运行失败。

仪式:

# After the version-bump PR has merged to main:
git checkout main && git pull
git tag v1.0.5
git push origin v1.0.5
# → release.yml fires: verifies tag, builds, tests, creates GitHub Release, publishes to npm
# → publish-mcp.yml chains off Release and publishes server.json to the MCP registry

流量:

  1. 打开一个更新所有三个版本字段的凹凸PR。将其合并到 main.
  2. 标记bump commit v 并按下标签。
  3. release.yml 验证标签/版本对齐,运行 npm ci,确认该版本尚未在npm上发布,运行 npm run build + npm test,创建GitHub Release,然后发布到npm npm publish --access public --provenance.
  4. publish-mcp.yml (由以下因素触发 workflow_runRelease)重新验证版本字段,确认该版本尚未在MCP注册表中,并发布 server.jsonregister.modelcontextprotocol.io.

不需要存储库机密。 npm和MCP注册表都通过GitHub OIDC进行身份验证().npm的可信发布者在npmjs.com上的包下配置 设置→ 发布访问权限→ 受信任的发布者 部分--否 NPM_TOKEN 秘密存在或需要。

从失败的发布中恢复: npm拒绝重新发布现有版本,并限制72小时后取消发布。如果发布因任何原因失败,请在新PR中跳到下一个补丁版本并剪切新版本——不要尝试重新运行失败的版本。

______________________________________________________________________

贡献

贡献.md 用于错误报告、拉取请求、开发设置和提交约定。

______________________________________________________________________

许可证

麻省理工学院 --版权(c) 休伯特·加耶夫斯基

目录标签

目录标签

TypeScriptClaude自动化测试测试分析本地部署AI辅助测试Playwright集成测试报告处理

支持客户端

Claude DesktopClaudeCursorWindsurfCline

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP