该项目结合了Playwright与MCP(模型上下文协议)以实现Web系统的自动化测试。
# 安装依赖
npm install
# 安装Playwright浏览器
npm run install:browsers
# 设置环境变量
cp .env.example .env
# 编辑.env文件并填写您的凭证
cp .env.example .env
.env文件并填写您的凭证:# 当前环境(HML或PROD)
ENVIRONMENT=HML
# 各环境的URL
NEMESYS_URL_HML=
NEMESYS_URL_PROD=
# HML环境凭证
NEMESYS_USER_HML=你的HML用户名
NEMESYS_PASSWORD_HML=你的HML密码
# PROD环境凭证
NEMESYS_USER_PROD=你的PROD用户名
NEMESYS_PASSWORD_PROD=你的PROD密码
.env文件在.gitignore中,不会被提交到仓库.env.example作为模板# 在.env文件中编辑ENVIRONMENT
ENVIRONMENT=HML # 或PROD
# 或通过命令行设置
ENVIRONMENT=PROD npm test
# 执行所有测试
npm test
# 执行带有界面的测试
npm run test:ui
# 执行调试模式的测试
npm run test:debug
# 执行带有可见浏览器的测试
npm run test:headed
# 查看测试报告
npm run test:report
# 启动MCP服务器
npm run mcp:start
# 探索Angular网站并执行安全测试
npm run mcp:explore
# 根据探索生成测试
npm run mcp:generate
# 完整流程:探索+生成+执行测试
npm run mcp:run
# 执行基于指令的BDD测试
npm run mcp:bdd
# 测试地理定位配置
npm run test:geolocation
# 同时运行MCP和测试界面
npm run dev
# 仅执行身份验证测试
npx playwright test tests/nemesys-auth.spec.js
# 仅执行MCP测试
npx playwright test tests/nemesys-mcp.spec.js
# 仅执行BDD和MCP测试
npx playwright test tests/nemesys-bdd-mcp.spec.js
# 仅执行自动生成的测试
npx playwright test tests/auto-generated-tests.spec.js
# 在特定环境中执行
NODE_ENV=prod npx playwright test
playwright-mcp/
├── config.js # 项目配置
├── global-setup.js # 测试全局设置
├── mcp-server.js # MCP服务器
├── playwright.config.js # Playwright配置
├── package.json # 依赖和脚本
├── tests/ # 测试
│ ├── nemesys-auth.spec.js # 身份验证测试
│ ├── nemesys-mcp.spec.js # MCP测试
│ ├── nemesys-bdd-mcp.spec.js # BDD和MCP测试
│ └── auto-generated-tests.spec.js # 自动生成的测试
├── screenshots/ # 测试截图
├── test-results/ # 测试报告
└── README.md # 此文件
项目包括特定配置以模拟巴西用户并绕过NEMESYS的地理位置限制:
npm run test:geolocation
此命令检查配置是否有效,并确认登录字段是否可用。
MCP系统现在包括一个自动场景生成器,它:
MCP服务器提供以下工具:
nemesys-auth.spec.js)nemesys-mcp.spec.js)nemesys-bdd-mcp.spec.js)auto-generated-tests.spec.js)MCP系统支持基于自然语言指令的测试执行:
# 执行BDD测试
npm run mcp:bdd
指令定义在bdd-instructions.txt文件中:
# 导航
CLICK: .sidebar-menu-item:Users
CLICK: .submenu-item:Register User
WAIT: 2000
# 表单
FILL: input[name="name"]:João Silva
FILL: input[name="email"]:joao@email.com
SELECT: select[name="role"]:Administrator
CLICK: button[type="submit"]
# 验证
VERIFY: .success-message:User registered successfully
VERIFY: .error-message
VERIFY: input[name="email"]:invalid
# 截图
SCREENSHOT: user-registered.png
管道配置在一个文件中:
azure-pipelines.yml:完整的管道,执行所有测试测试生成多种格式的报告:
连接错误
config.js中的凭证登录字段不可用
npm run test:geolocation以检查地理定位找不到元素
测试超时
playwright.config.js中增加超时时间# 以详细日志执行
DEBUG=pw:api npm test
# 以调试模式执行
npm run test:debug
要添加新的测试:
tests/目录下创建新文件*.spec.js命名规则config.js中的配置MIT许可 - 详情参见LICENSE文件。
对于疑问或问题: