浏览器自动化测试框架

基于Playwright的JavaScript端到端测试框架,支持跨浏览器测试、并行执行和AI代理集成。

  • by darshanaghumare
  • 本地部署
  • 更新于
在 GitHub 查看 darshanaghumare/AI-Agent-MCP

使用说明

Playwright JavaScript测试框架

使用Playwright和纯JavaScript的AI Agent MCP专业端到端测试框架。

概述

该项目提供了一个完全用JavaScript编写的生产就绪的Playwright测试框架,与AI Agent MCP系统集成,用于自动浏览器测试和web自动化。

特性

  • ✅ 跨浏览器测试(Chromium、Firefox、WebKit)
  • ✅ 100%JavaScript-不需要TypeScript
  • ✅ 并行测试执行
  • ✅ 带有完整跟踪的HTML报告
  • ✅ 故障时自动截图
  • ✅ 调试模式支持
  • ✅ 测试代码生成(codegen)
  • ✅ AI代理MCP集成

先决条件

  • Node.js:16.0.0或更高
  • npm:8.0.0或更高

快速开始

1.安装依赖项

cd c:\Users\91840\AiAgentPlaywright\playwright-js
npm install

2.运行测试

npm test

3.查看测试报告

npm run test:report

可用命令

命令 描述
npm test 运行所有测试
npm run test:ui 在交互式UI模式下运行测试
npm run test:headed 使用可见浏览器运行测试
npm run test:debug 在调试模式下运行测试
npm run test:report 查看HTML测试报告
npm run codegen 交互式生成测试代码

项目结构

playwright-js/
├── tests/
│   └── e2e/
│       ├── example.spec.js          # Basic example tests
│       └── navigation.spec.js       # Navigation and interaction tests
├── playwright.config.js             # Playwright configuration
├── package.json                     # Dependencies and scripts
├── playwright-report/               # Generated test reports
├── test-results/                    # Test run artifacts
└── README.md                        # This file

测试示例

基本测试

const { test, expect } = require('@playwright/test');

test('example test', async ({ page }) => {
  await page.goto('https://example.com');
  await expect(page).toHaveTitle(/Example/);
});

具有多个测试的测试套件

test.describe('Login Tests', () => {
  test('user can login', async ({ page }) => {
    await page.goto('https://example.com/login');
    await page.fill('#username', 'user@example.com');
    await page.fill('#password', 'password');
    await page.click('#login-button');
    await expect(page).toHaveURL(/dashboard/);
  });
});

配置(descripter.config.js)

关键设置:

  • testDir: ./tests/e2e -测试地点
  • 完全平行: true -并行运行测试
  • 记者: html -生成HTML报告
  • 截图: only-on-failure -捕获故障截图
  • 痕迹: on-first-retry -记录调试痕迹

支持的浏览器:

  • 铬 -全力支持
  • 火狐 -全力支持
  • 引擎 -全力支持

浏览器自动化

导航到页面

await page.goto('https://example.com');

查找元素

// By role
const button = page.getByRole('button', { name: 'Submit' });

// By text
const link = page.getByText('Click here');

// By CSS selector
const input = page.locator('#email');

// By XPath
const element = page.locator('//button[text()="Save"]');

与元素互动

// Click
await button.click();

// Type text
await input.fill('user@example.com');

// Select dropdown
await select.selectOption('Option 1');

// Check checkbox
await checkbox.check();

断言

// Check visibility
await expect(element).toBeVisible();

// Check text content
await expect(element).toHaveText('Expected Text');

// Check URL
await expect(page).toHaveURL(/dashboard/);

// Check title
await expect(page).toHaveTitle('Page Title');

调试

在调试模式下运行

npm run test:debug

暂停执行

await page.pause(); // Execution pauses and Playwright Inspector opens

运行单项测试

npx playwright test tests/e2e/example.spec.js -g "test name"

查看痕迹

测试失败后,查看跟踪:

npm run test:report

测试报告

运行测试后,查看HTML报告:

npm run test:report

报告显示:

  • 测试状态(通过/失败)
  • 执行时间
  • 故障截图
  • 视频录制(如果启用)
  • 完整的浏览器跟踪

CI/CD集成

为了实现持续集成,请设置 CI 环境变量:

CI=true npm test

这将配置:

  • 连续测试执行(1名工人)
  • 自动重试(最多2次)
  • 详细报告

GitHub操作示例

- name: Run Playwright Tests
  run: npm test
  env:
    CI: true

AI代理MCP集成

该项目与MCP(模型上下文协议)服务器集成,以实现:

  • 从AI代理执行远程测试
  • 基于需求的动态测试生成
  • 实时测试结果流
  • 通过MCP协议实现浏览器自动化

常见问题

测试超时

  • 增加配置中的超时时间: timeout: 30000
  • 使用 await page.waitForLoadState() 在断言之前

未找到元素

  • 使用 await page.waitForSelector() 交互前
  • 检查元素是否可见 await expect(element).toBeVisible()

CI中的测试失败,但在本地通过

  • 集 CI=true npm test 模拟CI环境
  • 检查时间问题并添加适当的等待时间

最佳实践

  1. 使用有意义的测试名称 -描述正在测试的内容
  2. 保持测试的独立性 -每个测试都不应依赖于其他测试
  3. 使用页面对象 -创建用于常见交互的辅助模块
  4. 添加适当的等待 -使用显式等待而不是硬编码延迟
  5. 测试用户流 -关注真实的用户工作流程,而不是实施细节

资源

许可证

麻省理工学院

支持

对于问题和疑问:

  1. 检查剧作家文档
  2. 审查测试输出和跟踪
  3. 使用调试模式逐步完成测试
  4. 有关代理集成,请参阅MCP协议文档