Token导航 LogoToken导航TokenDH.com
Playwright First MCP Test logo
浏览器工具stdio官方级别未说明来源级核验

Playwright First MCP Test

MCP Server

playwright

一个基于Playwright、TypeScript和MCP协议的智能浏览器测试自动化框架,支持通过JSON文件声明式定义测试场景,并集成AI模型进行测试管理。

工具数

4

提示词数

0

GitHub Stars

1

资源数

0
浏览器自动化TypeScriptClaudeClaude

安装说明

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

作者 / 组织

novaisana

提供方

novaisana

最后核验

2026/5/17 20:19

运行时

Node.js

快速接入

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

命令预览

npx playwright install

详细介绍

剧作家MCP测试框架

一个智能的、支持人工智能的浏览器测试自动化框架,可以搭建桥梁 剧作家, TypeScript,以及 模型上下文协议(MCP).通过JSON文件声明性地执行测试场景,通过MCP工具编排测试,并使AI模型(如Claude)能够智能地管理您的测试套件。

______________________________________________________________________

项目目标

使用以下工具执行和管理E2E测试 声明性JSON场景MCP协议集成这使得:

  • ✅ 无代码测试定义(基于JSON的场景)
  • ✅ 人工智能编排的测试执行(Claude可以调用测试工具)
  • ✅ 综合报告(JSON+截图)
  • ✅ 多浏览器测试(Chromium、Firefox、WebKit)
  • ✅ 使用MCP进行测试执行、上下文分段和定义测试配置

______________________________________________________________________

______________________________________________________________________

使用技术

  • 剧作家 (v1.57.0)--多浏览器自动化(Chromium、Firefox、WebKit)
  • TypeScript (v5.9.3)——类型安全测试定义和执行逻辑
  • 模型上下文协议(MCP) (v1.25.3)——用于将测试工具暴露给Claude和其他AI客户端的AI就绪协议
  • 温斯顿 (v3.19.0)--跨所有组件的结构化日志记录
  • Node.js (v18+)--运行时环境

______________________________________________________________________

MCP集成(AI就绪)

MCP服务器将测试执行公开为 可发现的工具 对于AI模型:

可用工具

1.执行_场景

Tool: execute_scenario
Input: { scenarioPath: string, options?: ExecutionOptions }
Output: ScenarioResult with pass/fail status, duration, test details

2.列表_场景

Tool: list_scenarios
Input: { directory?: string }
Output: Array of available scenario files

3.验证场景

Tool: validate_scenario
Input: { scenarioPath: string }
Output: Validation result (passes/fails JSON schema check)

4.健康

Tool: get_health
Output: Server health status

AI如何使用这些工具

当您运行MCP服务器时(npm run dev),AI客户端(如Claude)可以:

  1. 列出场景"Show me all available tests"
  2. 执行测试"Run the login test scenario"
  3. 验证"Check if my scenario JSON is valid"
  4. 获取结果 → 接收带有截图的结构化执行结果

克劳德提示示例:

"Execute the login test scenario and show me the results"
→ Claude calls execute_scenario tool
→ MCP server runs test
→ Returns report with screenshots and assertions
→ Claude shows you the results

页面对象模式

该框架实现了 页面抽象层 将测试逻辑与UI实现解耦:

PageActions(src/browser/page-actions.ts)

将所有浏览器交互封装在可重用的方法中:

// All UI interactions go through PageActions
await pageActions.navigate(page, baseUrl, '/login');
await pageActions.type(page, 'input#username', 'user');
await pageActions.click(page, 'button#login');
await pageActions.assert(page, [{ type: 'visible', target: 'h1', expected: 'true' }]);

优点:

  • 测试逻辑独立于选择器
  • UI更改只需要更新PageActions
  • 一致、可重用的交互方法
  • 易于通过新操作进行扩展

______________________________________________________________________

项目结构

src/
├── browser/
│   ├── page-actions.ts           # Browser interactions (navigate, click, type, assert)
│   ├── browser-manager.ts        # Session & context lifecycle management
│   ├── locator-healer.ts         # Self-healing selectors
│   ├── playwright-browser-provider.ts # Browser factory
│   ├── in-memory-session-store.ts # Session metadata storage
│   └── contracts.ts              # Type-safe interfaces
├── server/
│   ├── index.ts                  # MCP server & tool handlers
│   └── scenario-executer.ts      # Core test execution engine
├── reporter/
│   ├── report-generator.ts       # Transform results to JSON reports
│   └── report-writer.ts          # Persist reports to disk
├── types/
│   └── index.ts                  # Shared TypeScript interfaces
├── utils/
│   └── logger.ts                 # Winston-based structured logging
└── examples/
    └── run-scenario.ts           # Multi-scenario test runner

test-scenarios/
├── login.json                    # JSON test definitions
├── add-to-cart.json
└── checkout.json

test-results/
├── {scenarioId}/
│   ├── tc-001/                   # Screenshots for test case 001
│   ├── tc-002/
│   └── report.json               # Aggregated execution report

______________________________________________________________________

设置和安装

先决条件

  • Node.js v18或更高版本
  • npm或纱线

安装

# Install dependencies and Playwright browsers
npm run setup

# Or manually:
npm install
npx playwright install

环境变量(可选)

创建 .env 自定义设置文件:

MCP_SERVER_NAME=mcp-playwright-test
MCP_SERVER_VERSION=1.0.0
HEADLESS=true

______________________________________________________________________

如何运行测试

运行所有场景(无头)

npm test

执行所有操作 .json 文件在 test-scenarios/ 目录。

在浏览器可见的情况下运行测试

npm run test:headed

在测试执行期间显示浏览器窗口(对调试很有用)。

验证场景JSON

npm run validate

在不执行的情况下检查场景文件的结构正确性。

启动MCP服务器(AI集成)

npm run dev

启动StdIO上的MCP服务器。Claude和其他AI客户现在可以调用测试工具。

构建TypeScript

npm run build

将TypeScript编译为JavaScript dist/ 文件夹。

清洁构建工件

npm run clean

______________________________________________________________________

示例:登录测试演练

场景结构

登录测试演示了完整的工作流程:

{
  "scenarioId": "login-test-001",
  "scenarioName": "Login Test Scenario",
  "baseUrl": "https://www.saucedemo.com",
  "browserType": "chromium",
  "testCases": [
    {
      "id": "tc-001",
      "name": "Navigate to Homepage",
      "steps": [
        { "id": "step-001", "action": "navigate", "value": "/" },
        { "id": "step-002", "action": "assert", "assertions": [...] }
      ]
    },
    {
      "id": "tc-002",
      "name": "Execute Login",
      "steps": [
        { "action": "type", "target": "input#user-name", "value": "standard_user" },
        { "action": "type", "target": "input#password", "value": "secret_sauce" },
        { "action": "click", "target": "#login-button" },
        { "action": "assert", "assertions": [
          { "type": "url", "expected": "/inventory.html" },
          { "type": "text", "target": "div.app_logo", "expected": "Swag Labs" }
        ] }
      ]
    }
  ]
}

测试场景/login.json 对于完整的示例。

测试执行流程

  1. 导航 → 加载登录页面(/)
  2. 验证 → 断言页面正文可见
  3. 输入 → 在中键入用户名 input#user-name
  4. 输入 → 在中键入密码 input#password
  5. 行动 → Click #login-button
  6. 断言 → 验证URL是否已更改为 /inventory.html
  7. 断言 → 验证“Swag Labs”文本是否可见

结果

执行后:

  • ✅ 每一步捕获的屏幕截图→ test-results/login-test-001/tc-001/*.png
  • ✅ 执行报告→ test-results/login-test-001/report.json
  • ✅ Logs → logs/ 目录

______________________________________________________________________

测试场景格式

测试场景包括 声明性JSON文件 具有以下结构:

{
  scenarioId: string;              // Unique test identifier
  scenarioName: string;            // Human-readable name
  baseUrl: string;                 // Base URL for navigation
  browserType: 'chromium' | 'firefox' | 'webkit';
  
  testCases: [
    {
      id: string;                  // Unique test case ID
      name: string;                // Test case description
      priority: 'high' | 'medium' | 'low';
      tags: string[];              // For filtering/categorization
      
      steps: [
        {
          id: string;
          action: 'navigate' | 'click' | 'type' | 'wait' | 'assert';
          target?: string;         // CSS selector
          value?: string;          // For navigate/type actions
          assertions?: [
            {
              type: 'visible' | 'text' | 'attribute' | 'url' | 'count';
              target: string;      // CSS selector
              expected: string | number;
            }
          ];
          timeout?: number;        // Optional timeout in ms
        }
      ];
    }
  ];
}

完整的TypeScript接口: src/types/index.ts

______________________________________________________________________

______________________________________________________________________

测试结果和报告

每次试运行后:

报告文件: test-results/{scenarioId}/report.json

{
  "reportId": "uuid",
  "reportGeneratedAt": "2026-01-28T10:30:45Z",
  "scenario": {
    "scenarioId": "login-test-001",
    "scenarioName": "Login Test Scenario"
  },
  "execution": {
    "startTime": "...",
    "endTime": "...",
    "duration": 45000,
    "status": "passed",
    "summary": { "passed": 2, "failed": 0, "skipped": 0 }
  },
  "testCaseResults": [...]
}

屏幕截图: test-results/{scenarioId}/{testCaseId}/step-*.png

在每个步骤中捕获的全页屏幕截图用于可视化调试。

日志: logs/ 目录

带有时间戳、组件上下文和错误详细信息的结构化日志。

______________________________________________________________________

入门指南

# 1. Install & setup
npm run setup

# 2. Run a test scenario
npm test

# 3. Check results
ls test-results/
cat test-results/login-test-001/report.json

# 4. (Optional) Start MCP server for AI integration
npm run dev

______________________________________________________________________

故障排除

常见问题

Q: Playwright未安装

npx playwright install

Q: 测试超时

  • 增加场景中的超时时间: "timeout": 60000
  • 检查测试站点的网络连接
  • 使用 npm run test:headed 观看处决

Q: MCP服务器无法启动

npm run build  # Rebuild TypeScript first
npm run dev

架构和总体流程

┌─────────────────────────────────────────────────────────┐
│  MCP Client (Claude, IDE, external tool)                │
└────────────────────┬────────────────────────────────────┘
                     │ MCP Protocol (StdIO)
                     ▼
┌─────────────────────────────────────────────────────────┐
│  MCPTestServer                                          │
│  • Exposes test tools (execute_scenario, list_scenarios)│
│  • Routes tool calls to appropriate handlers            │
└────────────────────┬────────────────────────────────────┘
                     │
                     ▼
      ┌──────────────────────────────┐
      │  ScenarioExecutor            │
      │  • Loads JSON scenario files │
      │  • Executes test cases/steps │
      │  • Manages test lifecycle    │
      └──────────┬───────────────────┘
                 │
                 ▼
      ┌──────────────────────────────┐
      │  BrowserManager              │
      │  • Session lifecycle         │
      │  • Context/Page management   │
      │  • Resource cleanup          │
      └──────────┬───────────────────┘
                 │
          ┌──────┴──────┬──────────┐
          ▼             ▼          ▼
       navigate()  click()  type() wait() assert()
            │                        │
            └────────┬───────────────┘
                     ▼
      ┌──────────────────────────────┐
      │  PageActions                 │
      │  • Browser interactions      │
      │  • Assertion validation      │
      │  • Screenshot capture        │
      └──────────┬───────────────────┘
                 │
      ┌──────────┴───────────┐
      │  LocatorHealer       │
      │  • Self-heal selectors
      │  • Fuzzy selector matching
      └──────────┬───────────┘
                 │
                 ▼
      ┌──────────────────────────────┐
      │  Playwright                  │
      │  • Real browser automation   │
      │  • Screenshot capture        │
      └──────────┬───────────────────┘
                 │
                 ▼
      ┌──────────────────────────────┐
      │  ReportGenerator             │
      │  • Transform results to JSON │
      │  • Link evidence paths       │
      │  • Persist reports           │
      └──────────────────────────────┘

______________________________________________________________________

许可证

ISC

______________________________________________________________________

项目链接

目录标签

目录标签

浏览器自动化TypeScriptClaude本地部署AI测试JSON测试多浏览器测试MCP协议

支持客户端

Claude

接入字段

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

stdio

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

session

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

playwright

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiosession部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP