使用说明
集成MCP的测试自动化平台
企业级测试自动化平台,具有人工智能驱动的测试生成、自愈功能和全面的记录功能。
🚀 主要特点
核心能力
- 🤖 AI驱动的测试生成:使用GitHub Copilot Direct SDK生成Playwright测试脚本
- 🧠 基于RAG的流检索:用于智能测试上下文的ChromaDB嵌入的混合语义搜索
- 🔧 自我修复测试:使用AI和Playwright官方文档自动修复失败的定位器
- 📹 智能系统监控:使用丰富的元数据和DOM捕获记录用户交互
- 🔍 痕量:将记录的动作与Playwright跟踪进行比较,以诊断缺失的步骤
- 💾 向量数据库:使用RAG进行语义搜索、重新排序和智能上下文检索
- 📊 Excel集成:使用数据映射生成手动测试用例
MCP集成
- 📚 微软文档MCP:官方剧作家文档和代码示例(免费)
- 🐙 GitHub MCP:在存储库中搜索测试模式
- 📁 文件系统MCP:通过自动备份实现安全的文件操作
- 🎭 剧作家测试MCP:浏览器自动化和测试生成
GitHub Copilot Direct SDK
- 无需VS代码:适用于任何IDE或终端
- API直接访问:使用GitHub Copilot进行基于令牌的身份验证
- 多种型号:支持GPT-4、GPT-3.5涡轮增压、Claude Sonnet 4.5
- 简单设置:使用GitHub令牌进行5分钟配置
📋 先决条件
- Python 3.10+
- Node.js 18+ (适用于MCP服务器和前端)
- Git
- GitHub账号 使用Copilot订阅
- 剧作家浏览器 (通过脚本安装)
🛠️ 快速设置
1.克隆存储库
git clone <repository-url>
cd mcp_integration
2.设置Python环境
# Create virtual environment
python -m venv venv
# Activate (Windows)
.\\venv\\Scripts\\activate
# Install dependencies
pip install -r requirements.txt
3.设置MCP服务器
# Run the automated setup script
.\\setup_mcp.bat
此脚本将:
- 验证Node.js安装
- 安装所有MCP服务器
- 创建
.env从模板 - 验证MCP配置
4.配置环境变量
编辑 .env 并添加您的GitHub令牌:
# GitHub Copilot Direct SDK & GitHub MCP
# Get from: https://github.com/settings/tokens
# Required scopes: read:user, user:email (copilot access required)
GITHUB_TOKEN=your_github_personal_access_token
# Copilot Configuration
COPILOT_MODE=direct # Use Direct SDK (no VS Code needed)
获取您的GitHub令牌:
- 访问:https://github.com/settings/tokens
- 点击“生成新令牌(经典)”
- 姓名:
Copilot API Access - 选择范围:
read:user,user:email - 生成并复制令牌
- 增添
.env文件
快速设置指南: 看 docs/QUICKSTART_COPILOT_DIRECT.md 完成5分钟的设置
验证设置:
python check_health.py
5.安装Playwright浏览器
playwright install chromium
6.设置前端(可选)
cd frontend
npm install
cd ..
7.验证安装
python check_health.py
预期产量:
✅ MCP Client: OK
✅ Playwright MCP Recorder: Available: True
✅ Microsoft Docs MCP: OK
✅ GitHub MCP: OK
✅ Copilot Client: Direct SDK - Model: gpt-4
🎯 运行应用程序
启动后端
cd app/api
uvicorn main:app --reload --port 8001
后端运行时间:http://localhost:8001
启动前端
cd frontend
npm run dev
前端运行于:http://localhost:5173
📖 使用示例
1.记录用户流量
python -m app.recorder.run_playwright_recorder_v2 --url "https://example.com" --capture-dom --timeout 60
按 Ctrl+C 停止录制。输出保存到 recordings/<session-name>/
2.生成测试脚本
通过用户界面:
- 引导到http://localhost:5173
- 点击“开始录制”
- 在目标网站上执行操作
- 停止录制
- 生成自动化脚本或手动测试用例
3.自愈测试(运行时)
试运行期间自动自愈 -当XPath/定位器失败时:
from app.self_healing_with_mcp import SelfHealingExecutor
from pathlib import Path
# Initialize executor
executor = SelfHealingExecutor(framework_root=Path("./framework_repos/my-framework"))
# Run with automatic self-healing (up to 2 retries)
success, logs, healing_attempts = executor.run_trial_with_real_time_healing(
script_content=my_test_script,
test_url="https://app.com/page",
max_retries=2,
headed=False
)
if success:
print(f"✅ Test passed after {len(healing_attempts)} healing attempts")
运作原理:
- 测试失败 XPath/定位器不正确→ 自动检测
- 剧作家MCP捕捉 故障点的实际页面状态
- GitHub Copilot Direct SDK分析 使用Microsoft Docs MCP+生成的流进行失败与实际元素的比较
- 生成更好的定位器 (基于角色、testid、标签弹性模式)
- 自动检索 带有已修复的脚本→ 测试通过✅
- 保存已修复的脚本 以备后用
成本:包含在GitHub Copilot订阅中(不收取额外费用)
看: docs/RUNTIME_SELF_HEALING.md 获取完整指南
🧠 利用RAG实现人工智能的最大化
这个项目 最大化Gen AI概念 通过 RAG(检索增强生成):
为什么选择RAG?
传统的测试自动化使用静态JSON文件。对于RAG:
- 🎯 语义搜索:“登录流”自动查找“用户身份验证”步骤
- 🚀 亚秒级检索:矢量嵌入可跨1000多个流进行即时搜索
- 🧠 上下文感知LLM:AI通过相关示例生成更好的测试
- 🔄 混合方法:结合精确匹配+模糊语义搜索
RAG如何在这里工作
┌──────────────────────────────────────────────────────┐
│ RECORD → EMBED → STORE → QUERY → RETRIEVE → GENERATE │
└──────────────────────────────────────────────────────┘
1. Record browser actions → .refined.json with metadata
2. Embed steps with ChromaDB → 384-dimensional vectors
3. Store in vector database → Semantic index created
4. Query with natural language → "Create supplier flow"
5. Retrieve relevant steps → Hybrid search + reranking
6. Generate test script → LLM + retrieved context = ✨
RAG功能
✅ 语义检索:查找概念上相似的流,而不仅仅是关键字
✅ 混合搜索:结合了精确的元数据匹配+嵌入相似性
✅ 智能重新排名:按相关性(动作/导航/数据匹配)对步骤进行评分
✅ 回退策略:如果矢量数据库为空,则基于磁盘加载
✅ 多流上下文:从多个相关流中检索步骤
✅ MCP集成:结合RAG+官方剧作家文档以获得最佳效果
快速入门:
# 1. Ingest a flow into vector DB
python -m app.ingest_refined_flow --file "app\\generated_flows\\my_flow.refined.json" --flow-name "Create Supplier"
# 2. Query semantically
python -m app.core.vector_db query "create supplier automation" --top-k 10
# 3. Generate test (RAG runs automatically)
# Via API at http://localhost:8001/api/generate/preview
完整指南: docs/RAG_ARCHITECTURE.md
快速参考: docs/RAG_QUICK_REFERENCE.md
6.跟踪分析(诊断缺失动作)
将录制的动作与Playwright跟踪进行比较 识别缺失的步骤:
# 1. Record with trace enabled (default)
python -m app.recorder.run_playwright_recorder_v2 --url "https://example.com" --timeout 60
# 2. Analyze the recording
python -m app.recorder.trace_analyzer recordings/<session_name>
# 3. View trace in Playwright Inspector
playwright show-trace recordings/<session_name>/trace.zip
样本输出:
📊 Summary:
- Trace events: 45
- Recorded actions: 42
- Missing events: 3
- Coverage: 93.3%
❌ Missing Events:
1. Type: click → Selector: button[data-testid="submit"]
2. Type: fill → Selector: input#email
3. Type: check → Selector: input[type="checkbox"]#terms
看: docs/TRACE_ANALYSIS.md 获取完整指南
5.基于RAG的语义搜索
使用RAG的矢量数据库进行智能流量检索:
# Ingest a recorded flow into vector DB for RAG
python -m app.ingest_refined_flow --file "app\\generated_flows\\my_flow.refined.json" --flow-name "Create Supplier"
# Query flows semantically (embedding-based similarity)
python -m app.core.vector_db query "Create Supplier" --top-k 5
# List all ingested flows
python -m app.core.vector_db list --limit 50
RAG的工作原理:
- 记录 用户流→ 产生
.refined.json具有丰富的元数据 - 摄取 进入ChromaDB→ 为每个步骤创建语义嵌入
- 查询 用自然语言→ 混合搜索(语义+元数据)
- 检索 相关步骤→ AI根据相关性得分重新排序
- 生成 测试脚本→ LLM使用检索到的上下文
优点:
- 🎯 语义匹配:“登录流”查找“用户身份验证”步骤
- 🔄 自动重新银行:优先考虑最相关的步骤
- 🚀 快速检索:矢量嵌入支持亚秒级搜索
- 💡 上下文感知:法学硕士获得精确、相关的例子
🔧 MCP集成详细信息
微软文档MCP
目的: 官方剧作家文档和代码示例
from app.core.mcp_client import get_microsoft_docs_mcp
docs_mcp = get_microsoft_docs_mcp()
# Search documentation
results = docs_mcp.search_docs("Playwright locators")
# Get code samples
samples = docs_mcp.search_code_samples("getByRole", language="typescript")
自愈架构
目的: 使用GitHub Copilot Direct SDK进行自动测试修复
该系统结合了:
- 微软文档MCP:官方剧作家最佳实践(免费)
- GitHub Copilot Direct SDK:人工智能定位器生成
- 剧作家MCP:实时DOM状态捕获
- UI爬网数据:当前页面结构分析
结果:智能、有弹性的定位器生成,无需手动干预。
GitHub MCP
目的: 存储库管理和代码搜索
from app.core.mcp_client import get_github_mcp
github = get_github_mcp()
# Search code
code_results = github.search_code("playwright locators")
# Clone repository
github.clone_repository(repo_url, target_path)
看 MCP_INTEGRATION.md 以获取完整的文档。
🏗️ 项目结构
mcp_integration/
├── app/ # Core application
│ ├── api/ # FastAPI backend
│ ├── core/ # Core utilities
│ │ ├── llm_client_direct.py # GitHub Copilot Direct SDK
│ │ ├── mcp_client.py # MCP server clients
│ │ ├── vector_db.py # RAG Vector DB (ChromaDB)
│ │ └── browser_utils.py # Browser utilities
│ ├── generators/ # Test generation with RAG
│ │ └── agentic_script_agent.py # AI script generation + RAG
│ ├── recorder/ # Recording module
│ │ ├── run_playwright_recorder_v2.py
│ │ └── mcp_integration.py # Recorder MCP integration
│ ├── ingestion/ # RAG ingestion pipeline
│ │ └── ingest_refined_flow.py # Ingest flows to vector DB
│ └── services/ # Business logic
├── docs/ # Documentation
│ ├── COPILOT_DIRECT_SDK.md # Direct SDK guide
│ ├── QUICKSTART_COPILOT_DIRECT.md # 5-min setup
│ ├── MCP_INTEGRATION.md # MCP integration
│ ├── RUNTIME_SELF_HEALING.md # Self-healing guide
│ └── [30+ other guides] # Complete documentation
├── scripts/ # Setup & utility scripts
│ ├── setup_mcp.bat # MCP setup
│ ├── install_browsers.bat # Playwright installation
│ ├── quick_start.bat # One-command startup
│ └── [4 more scripts] # Other utilities
├── examples/ # Sample code
│ ├── locators/ # Example locator files
│ └── pages/ # Example page objects
├── generator/ # Legacy JS generators & prompts
│ ├── codeGenerator.js # JavaScript code generator
│ ├── COMPLETE_SYSTEM_PROMPT.md # AI prompts
│ └── [8 more files] # Prompt templates
├── templates/ # Code templates
├── frontend/ # React UI
├── tests/ # Test suite
├── framework_repos/ # Cloned test frameworks
├── vector_store/ # ChromaDB storage (RAG embeddings)
├── .vscode/
│ └── mcp.json # MCP server configuration
├── .env.template # Environment variables template
├── README.md # This file
├── requirements.txt # Python dependencies
└── package.json # Node.js dependencies (MCP)
🧪 运行测试
# Run all tests
python -m pytest -q
# Run specific test file
python -m pytest app/tests/test_vector_db.py -v
# Run with coverage
python -m pytest --cov=app --cov-report=html
📊 关键工作流程
工作流程1:录制→ RAG摄入→ 脚本生成
- 记录 具有丰富元数据的用户流
- 摄取 进入向量数据库进行语义搜索
- 查询 自然语言场景
- 检索 通过RAG(混合搜索+重新排名)执行相关步骤
- 生成 带有LLM+检索上下文的测试脚本
- 审查 并部署
RAG优势:AI通过从以前记录的流中学习来生成更准确的测试。
工作流程2:录制→ 手动测试用例
- 使用UI或CLI启动记录器
- 对目标应用程序执行操作
- 停止录制(元数据已保存)
- 点击“生成手动测试用例”
- 下载带有测试用例的Excel
工作流程3:RAG驱动的自动化生成
- 摄取 将多个相关流导入向量数据库
- 请求 场景:“创建供应商并验证”
- RAG搜索 查找所有与供应商相关的步骤
- 重排序 按相关性(创建+验证步骤优先)
- LLM生成 综合测试脚本
- 审查 在UI预览中
- 推 到Git存储库
与基于磁盘的主要区别:RAG智能地自动组合来自多个流的见解。
工作流程4:自愈失败测试
- 测试执行失败,出现定位器错误
- 系统捕获错误日志和DOM状态
- 剧作家MCP抓取当前页面结构
- Microsoft Docs MCP提供最佳实践
- GitHub Copilot Direct SDK生成弹性定位器
- 使用已修复的脚本自动重试测试
- 更新定位器缓存以备将来使用
包含在GitHub Copilot订阅中
🔍 故障排除
GitHub令牌身份验证失败
Error: Authentication failed. Please check your GITHUB_TOKEN
解决方案:
- 在以下位置验证令牌:https://github.com/settings/tokens
- 确保GitHub Copilot订阅处于活动状态
- 检查令牌具有所需的作用域:
read:user,user:email - 如果已过期,则生成新令牌
未找到MCP服务器
Error: npx: command not found
解决方案: 从以下位置安装Node.js 18+https://nodejs.org/
副驾驶率限制
Error: Rate limit exceeded. Please try again later.
解决方案: 等几分钟,检查你的副驾驶计划限制
导入错误
ModuleNotFoundError: No module named 'app.core.llm_client_direct'
解决方案:
- 激活虚拟环境:
.\venv\Scripts\activate - 安装依赖项:
pip install -r requirements.txt - 从项目根目录运行
📚 文档
快速开始
- 快速启动_复制_延迟.md -5分钟副驾驶设置⭐
- COPILOT_DIRECT_SDK.md -完整的Copilot SDK指南
- README.md -此文件
核心功能
API与开发
🎯 快速参考
运行时自愈命令
# Basic self-healing trial
from app.self_healing_with_mcp import SelfHealingExecutor
executor = SelfHealingExecutor(framework_root=Path("./my-framework"))
success, logs, attempts = executor.run_trial_with_real_time_healing(
script_content=test_script,
test_url="https://app.com",
max_retries=2
)
# Check if healing was successful
if success and attempts:
print(f"✅ Healed after {len(attempts)} attempts")
手动自愈(无自动重试)
from app.self_healing_executor import run_trial_with_self_healing
success, logs, attempts = run_trial_with_self_healing(
script_content=script,
framework_root=Path("./framework"),
max_retries=3,
headed=True # Show browser for debugging
)
MCP客户端使用情况
from app.core.mcp_client import (
get_microsoft_docs_mcp,
get_github_mcp,
get_filesystem_mcp
)
# Search official Playwright docs
docs_mcp = get_microsoft_docs_mcp()
results = docs_mcp.search_docs("getByRole selector")
# Find test patterns in GitHub
github_mcp = get_github_mcp()
patterns = github_mcp.search_code("microsoft/playwright", "page.getByRole")
# Safe file operations
fs_mcp = get_filesystem_mcp()
fs_mcp.safe_write_file(Path("test.spec.ts"), content, backup=True)
直接使用Copilot SDK
from app.core.llm_client_direct import DirectCopilotClient
# Initialize client
client = DirectCopilotClient(temperature=0.2, model="gpt-4")
# Generate test code
response = client.invoke("Generate a Playwright login test")
print(response.content)
# Self-healing
from app.core.llm_client_direct import ask_llm_to_self_heal
fixed_script = ask_llm_to_self_heal(failed_script, error_logs, ui_crawl_data)
🤝 贡献
- 分叉存储库
- 创建特征分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
该项目是企业使用的专有软件。
🙏 致谢
- 剧作家 -浏览器自动化框架
- GitHub Copilot -人工智能驱动的测试生成和自我修复
- 模型上下文协议(MCP) -AI代理集成
- 微软文档 -剧作家官方文件
- 快速API -后端框架
- 反应 -前端框架
🚀 入门指南
新用户: 从...开始 快速启动_复制_延迟.md 最快的设置!
完整文档: 看 docs/ 文件夹中包含综合指南。