浏览器自动化测试服务器

一个基于Playwright的全面浏览器自动化测试服务器,提供100多种工具用于网页测试、浏览器自动化和质量保证任务。

  • by tayyabakmal1
  • TypeScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 tayyabakmal1/runautomation-mcpserver

使用说明

RunAutomation MCP服务器

用于Playwright自动化的全面模型上下文协议(MCP)服务器,为web测试、浏览器自动化和质量保证任务提供100多种工具。

目录

为什么使用此MCP服务器?

模型上下文协议(MCP)

模型上下文协议是一个开放标准,可实现人工智能助手和外部工具之间的无缝集成。此MCP服务器允许AI模型(如Claude、GPT等):

  • 执行浏览器自动化 直接通过自然语言命令
  • 执行质量保证任务 无需手动编写脚本
  • 生成测试代码 通过观察用户交互
  • 运行全面的测试套件 具有可视化回归、可访问性和跨浏览器测试
  • 将测试集成到AI工作流程中 用于自主创建和执行测试

主要优势

  • AI驱动测试:让AI助手根据需求编写和执行测试
  • 自然语言控制:通过对话命令控制剧作家
  • 全面覆盖:100多种工具,涵盖web测试的各个方面
  • 生产就绪:基于Playwright可靠的自动化框架
  • 可扩展:易于集成到现有的测试工作流程中
  • 开源:麻省理工学院获得商业和个人使用许可

用例

  • 自动化测试:创建并运行浏览器自动化测试
  • 视觉质量保证:执行可视化回归测试和跨浏览器验证
  • 可访问性审计:运行WCAG合规性检查
  • PDF测试:验证PDF生成和内容
  • API测试:在UI测试的同时测试后端API
  • 测试生成:记录用户操作并生成测试代码
  • CI/CD集成:在持续集成管道中运行测试

安装

先决条件

  • Node.js 18或更高版本
  • npm或yarn包管理器

### Local Development Installation

1. Clone the repository:
```bash
git clone https://github.com/tayyabakmal1/runautomation-mcpserver.git
cd runautomation-mcpserver
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build
  1. 运行测试(可选):
npm test

配置

Claude桌面集成

要将此MCP服务器与Claude Desktop一起使用,请将以下配置添加到您的Claude Desktop配置文件中:

视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "--directory",
        "/your-playwright-mcp-server-clone-directory",
        "run",
        "runautomation-mcpserver"
      ]
    }
  }
}

环境变量

您可以使用环境变量配置服务器:

# Browser configuration
PLAYWRIGHT_BROWSER=chromium  # chromium, firefox, webkit
PLAYWRIGHT_HEADLESS=true     # true or false

# Video recording
PLAYWRIGHT_VIDEO_DIR=./videos
PLAYWRIGHT_VIDEO_QUALITY=100

# Session management
MAX_SESSIONS=10
SESSION_TIMEOUT=3600000      # milliseconds

可用工具

浏览器自动化(50多种工具)

  • playwright_navigate -导航到URL
  • playwright_click -点击元素
  • playwright_fill -填写输入字段
  • playwright_select -选择下拉选项
  • playwright_hover -将鼠标悬停在元素上
  • playwright_screenshot -截图
  • playwright_evaluate -执行JavaScript
  • playwright_upload_file -上传文件
  • playwright_download_file -下载文件
  • playwright_drag -拖放元素
  • playwright_press_key -按键盘键
  • playwright_go_back -返回导航
  • playwright_go_forward -向前导航
  • playwright_iframe_click -在iframe中单击
  • playwright_iframe_fill -填写iframe
  • playwright_click_and_switch_tab -打开新选项卡
  • playwright_copy_to_clipboard -复制到剪贴板
  • playwright_read_clipboard -读取剪贴板
  • playwright_handle_dialog -处理对话框
  • playwright_expect_dialog -期待对话
  • playwright_drag_to_position -拖动到坐标
  • playwright_get_element_position -获取元素位置
  • playwright_console_logs -获取控制台日志
  • playwright_get_visible_text -获取页面文本
  • playwright_get_visible_html -获取页面HTML
  • playwright_custom_user_agent -设置用户代理
  • playwright_close -关闭浏览器

代码生成(4个工具)

  • start_codegen_session -开始录制测试
  • end_codegen_session -停止并生成代码
  • get_codegen_session -获取会话信息
  • clear_codegen_session -清除会话
  • playwright_collect_locators -收集页面定位器

视频录制(5个工具)

  • playwright_start_video_recording -开始录制
  • playwright_stop_video_recording -停止录制
  • playwright_add_video_annotation -添加注释
  • playwright_configure_video_settings -配置设置
  • playwright_get_video_status -获取录制状态

视觉测试(7个工具)

  • playwright_visual_compare -比较截图
  • playwright_create_baseline -创建基线
  • playwright_batch_visual_compare -批量比较
  • playwright_ai_visual_compare -AI视觉测试
  • playwright_batch_ai_visual_compare -批量AI测试
  • playwright_cross_browser_screenshot -跨浏览器捕获

会话管理(9个工具)

  • create_browser_session -创建新会话
  • list_browser_sessions -列出所有会话
  • close_browser_session -结束会话
  • switch_browser_session -切换会话
  • get_session_info -获取会话详细信息
  • cleanup_idle_sessions -清理空闲会话
  • playwright_recover_session -恢复会话
  • playwright_recover_all_sessions -恢复所有会话
  • playwright_get_persistence_stats -获取持久性统计数据

智能等待(6个工具)

  • playwright_wait_smart -智能等待
  • playwright_wait_network_idle -等待网络
  • playwright_wait_element_count -等待计数
  • playwright_wait_attribute -等待属性
  • playwright_wait_element_hidden -等待隐藏
  • playwright_wait_url -等待URL更改

可访问性(4个工具)

  • playwright_check_accessibility -运行斧头扫描
  • playwright_get_aria_snapshot -获取ARIA树
  • playwright_check_contrast -检查对比度
  • playwright_check_keyboard_navigation -测试键盘导航

代码覆盖率(4个工具)

  • playwright_start_coverage -开始覆盖
  • playwright_get_coverage -获取覆盖结果
  • playwright_generate_coverage_report -生成报告
  • playwright_compare_coverage -比较覆盖范围

跨浏览器测试(4个工具)

  • playwright_run_across_browsers -在所有浏览器中运行
  • playwright_emulate_device -模拟移动设备
  • playwright_list_devices -列出可用设备

PDF测试(4个工具)

  • playwright_save_as_pdf -将页面另存为PDF
  • playwright_extract_pdf_text -提取PDF文本
  • playwright_validate_pdf_content -验证PDF内容
  • playwright_count_pdf_pages -统计PDF页面
  • playwright_download_and_extract_pdf -下载并提取PDF

高级断言(6个工具)

  • playwright_assert_element_state -断言元素状态
  • playwright_assert_element_count -断言计数
  • playwright_assert_text_content -断言文本
  • playwright_assert_attribute -断言属性
  • playwright_assert_css_property -断言CSS
  • playwright_assert_request_made -断言网络请求

API测试(7种工具)

  • playwright_get -HTTP GET请求
  • playwright_post -HTTP POST请求
  • playwright_put -HTTP PUT请求
  • playwright_patch -HTTP PATCH请求
  • playwright_delete -HTTP删除请求
  • playwright_expect_response -期待回应
  • playwright_assert_response -断言回应

并行执行(2个工具)

  • playwright_run_tests_parallel -并行运行测试
  • playwright_run_cross_browser -跨浏览器并行测试

资源管理(2个工具)

  • playwright_get_resource_usage -获取资源统计信息
  • playwright_update_resource_limits -更新限制

特性

核心浏览器自动化

  • 导航与交互:导航URL、单击元素、填写表单、选择下拉菜单、悬停、拖放
  • 文件操作:上传文件、下载文件、处理文件输入
  • 剪贴板操作:复制到剪贴板和从剪贴板读取
  • 对话框处理:处理警报、确认和提示对话框
  • iframe支持:与iframe中的元素交互
  • 选项卡管理:打开新选项卡并在它们之间切换
  • 高级交互:按键盘,拖动到指定位置,滚动,后退/前进

屏幕截图和视觉测试

  • 电脑屏幕截图工具:具有可定制尺寸的整页或特定元素截图
  • 视觉回归测试:使用像素完美差异检测将屏幕截图与基线进行比较
  • 人工智能驱动的视觉测试:忽略动态内容的智能视觉比较
  • 批量目视测试:并行运行多个视觉比较
  • 跨浏览器截图:捕获并比较Chromium、Firefox和WebKit的屏幕截图

代码生成和记录

  • 测试代码生成:记录浏览器操作并生成Playwright测试代码
  • 多种语言:用TypeScript或JavaScript生成测试
  • 页面对象模型:生成基于POM的测试结构
  • 定位器集合:自动收集和组织元素定位器
  • 会话录制:用注释记录完整的测试会话

视频录制

  • 会话录制:将浏览器会话录制为视频
  • 注释支持:在录制过程中添加带时间戳的注释
  • 可配置设置:自定义视频质量、FPS和输出目录
  • 有条件录音:仅记录测试失败
  • 持续时间跟踪:跟踪记录持续时间和状态

会话管理

  • 多会话支持:创建和管理多个独立的浏览器会话
  • 会话保持:跨重新启动保存和恢复会话
  • 会话切换:在活动会话之间无缝切换
  • 空闲清理:自动清理非活动会话
  • 资源监控:跟踪资源使用情况和会话统计信息

API测试

  • HTTP方法:GET、POST、PUT、PATCH、DELETE请求
  • 请求/响应验证:期待并断言HTTP响应
  • 标题定制:添加自定义标头和授权令牌
  • 响应等待:等待特定的API响应

智能等待与同步

  • 智能等待:等待具有多种条件的元素(可见、稳定、交互式)
  • 网络空闲:等待网络活动完成
  • 元素计数:等待特定数量的元素
  • 属性等待:等待元素属性达到预期值
  • URL等待:等待URL模式更改
  • 元素隐藏:等待元素消失

可访问性测试

  • WCAG合规性:运行斧头核心可访问性扫描
  • ARIA快照:获取可访问性树结构
  • 对比度检查:验证颜色对比度
  • 键盘导航:测试键盘可访问性
  • 多个WCAG级别:支持WCAG 2.0 A、AA、AAA和第508节

代码覆盖率

  • JavaScript覆盖率:在测试期间跟踪JS代码覆盖率
  • CSS覆盖率:监控CSS使用情况和未使用的样式
  • 覆盖范围报告:生成HTML、JSON、LCOV和文本格式的报告
  • 基线比较:比较测试运行之间的覆盖率
  • 详细统计:逐行覆盖分析

跨浏览器测试

  • 多浏览器执行:在Chromium、Firefox和WebKit上并行运行测试
  • 设备仿真:模拟移动设备(iPhone、iPad、Android)
  • 自定义视口:使用不同屏幕尺寸进行测试
  • 地理定位测试:测试基于位置的功能
  • 时区和区域设置:测试国际化功能

PDF测试

  • 文本提取:从PDF中提取和验证文本内容
  • 页面计数:统计PDF页面并获取元数据
  • 内容效度:在生成的PDF中声明预期文本
  • PDF下载测试:测试PDF下载功能
  • 另存为PDF:将网页转换为PDF格式

高级断言

  • 元素状态:断言可见性、启用/禁用、选中/未选中状态
  • 元素计数:通过灵活的比较验证匹配元素的数量
  • 文本内容:使用模糊匹配断言文本(包含、以开头、以结尾、正则表达式)
  • 属性验证:检查具有多个匹配类型的元素属性
  • CSS属性:断言计算的CSS属性值
  • 网络断言:验证是否发出了特定的网络请求

并行执行

  • 测试并行化:同时运行多个测试场景
  • 可配置并发:控制最大并行执行数
  • 故障快速模式:第一次失败时停止或继续进行所有测试
  • 碎片支持:将测试分布在多台机器上
  • 跨浏览器并行:并行跨浏览器执行相同的测试

控制台和调试

  • 控制台日志:捕获和过滤浏览器控制台日志
  • 日志类型:按错误、警告、信息、调试级别筛选
  • 日志搜索:按文本模式搜索控制台日志
  • JavaScript执行:在浏览器上下文中执行自定义JavaScript

资源管理

  • 浏览器限制:配置最大并发浏览器数
  • 会话限制:设置每个用户和总会话限制
  • 队列管理:处理请求排队和超时
  • 资源监控:跟踪内存和浏览器资源使用情况
  • 自动清理:清理空闲会话和资源

使用示例

示例1:基本导航和屏幕截图

// Using the MCP server through an AI assistant
"Navigate to https://example.com and take a screenshot"

// This translates to:
// 1. playwright_navigate with url: "https://example.com"
// 2. playwright_screenshot with name: "example-homepage"

示例2:表单自动化

// Natural language command
"Fill the login form with username 'test@example.com' and password 'secret123', then click the submit button"

// Executes:
// 1. playwright_fill with selector: "#username", value: "test@example.com"
// 2. playwright_fill with selector: "#password", value: "secret123"
// 3. playwright_click with selector: "button[type='submit']"

示例3:视觉回归测试

// Command
"Create a baseline screenshot of the homepage and compare it with the current page"

// Executes:
// 1. playwright_create_baseline with outputPath: "./baselines/homepage.png"
// 2. playwright_visual_compare with baseline: "./baselines/homepage.png"

示例4:可访问性测试

// Command
"Run an accessibility audit on the current page for WCAG AA compliance"

// Executes:
// 1. playwright_check_accessibility with level: "WCAG2AA"

示例5:跨浏览器测试

// Command
"Test the login page across all browsers"

// Executes:
// 1. playwright_run_across_browsers with url: "https://app.com/login"
//    browsers: ["chromium", "firefox", "webkit"]

示例6:视频录制

// Command
"Start recording the browser session, navigate to the dashboard, and stop recording"

// Executes:
// 1. playwright_start_video_recording
// 2. playwright_navigate with url: "https://app.com/dashboard"
// 3. playwright_add_video_annotation with message: "Dashboard loaded"
// 4. playwright_stop_video_recording with saveVideo: true

示例7:代码生成

// Command
"Start a code generation session, perform some actions, then generate the test code"

// Executes:
// 1. start_codegen_session with outputPath: "./tests", language: "typescript"
// 2. [Perform various browser actions]
// 3. end_codegen_session with sessionId: "session-id"
//4. Get the code file 

作者

塔亚布·阿克马尔

Tayyab是一名高级QA工程师,专门从事测试自动化、质量保证和构建开发工具。凭借在Playwright、Selenium和现代测试框架方面的丰富经验,他创建了这个MCP服务器,以弥合人工智能助手和浏览器自动化之间的差距。

贡献

欢迎投稿!请按照以下步骤操作:

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

问题和支持

如果您遇到任何问题或有疑问:

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

关键词

剧作家、自动化、人工智能、MCP、浏览器自动化、web测试、视觉回归、可访问性测试、跨浏览器测试、测试生成、质量保证、e2e测试、集成测试、claude、模型上下文协议


由...制作❤️ 通过 塔亚布·阿克马尔