内容
# 🤖 AI 驱动的 Playwright 测试自动化框架 (Python)






---
# 📌 项目概述
该存储库演示了一个 **AI 辅助的端到端 QA 自动化框架**,该框架使用 **Python**、**Playwright** 和 **Pytest** 构建。
与手动编写自动化脚本不同,该框架利用 **GitHub Copilot 代理模式** 和 **Playwright 模型上下文协议(MCP)** 来自动化整个软件测试生命周期:
- 读取Scrum用户故事
- 生成测试计划
- 执行探索性测试
- 生成 Playwright Python 测试
- 执行自动化测试
- 自我修复测试失败
- 生成专业的 QA 报告
该项目遵循现代 QA 工程实践,包括 **页面对象模型(POM)**、可重用的夹具、环境驱动的配置、CI/CD 准备和 AI 辅助开发。
---
# 🚀 主要功能
- ✅ AI 辅助测试规划
- ✅ Playwright MCP 浏览器探索
- ✅ 页面对象模型(POM)
- ✅ Python Playwright 自动化
- ✅ Pytest 框架
- ✅ 跨浏览器测试
- ✅ 自动截图捕获
- ✅ Playwright 跟踪收集
- ✅ HTML 和 JUnit 报告
- ✅ 自我修复测试工作流
- ✅ 基于环境的配置
- ✅ GitHub Actions 就绪
- ✅ 生产质量项目结构
---
# 🧠 AI 代理工作流
该框架使用代理工作流,其中每个 AI 代理都有特定的责任。
```mermaid
graph TD
A[SCRUM 用户故事]
B[规划代理]
C[测试计划]
D[浏览器代理]
E[探索性测试]
F[测试生成器]
G[Python Playwright 测试]
H[执行代理]
I[修复代理]
J[报告代理]
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I
I --> J
```
---
# 🏗️ 工作流
## 1. 规划代理
读取Scrum用户故事并生成:
- 功能测试场景
- 负面测试用例
- 边缘案例
- 验收标准映射
- 探索性测试检查清单
输出:
```
plans/test_plan.md
```
---
## 2. 浏览器代理
使用 Playwright MCP:
- 启动浏览器
- 登录
- 探索应用程序
- 验证验收标准
- 捕获截图
- 记录观察结果
输出:
```
observations/
screenshots/
```
---
## 3. 测试生成代理
使用以下工具生成生产就绪的 Python Playwright 测试:
- pytest
- 页面对象模型
- 可重用夹具
- 显式断言
- 显式等待
输出:
```
tests/
```
---
## 4. 执行代理
运行自动化套件。
生成:
- HTML 报告
- JUnit XML
- 截图
- Playwright 跟踪
---
## 5. 修复代理
自动分析和修复:
- 损坏的定位器
- 无效的断言
- 时间问题
- 不稳定的测试
---
## 6. 报告代理
生成专业的 QA 文档:
- 测试总结
- 缺陷报告
- 覆盖率报告
- 建议
---
# 📁 项目结构
```text
AI-Playwright-MCP/
│
├── .github/
│ ├── agents/
│ └── workflows/
│
├── .vscode/
│ └── mcp.json
│
├── fixtures/
│
├── pages/
│
├── plans/
│
├── prompts/
│
├── reports/
│
├── screenshots/
│
├── observations/
│
├── test-results/
│
├── tests/
│
├── user-stories/
│
├── utils/
│
├── conftest.py
├── README.md
├── requirements.txt
└── main.py
```
---
# ⚙️ 技术栈
| 技术 | 目的 |
|------------|----------|
| Python 3.11+ | 编程语言 |
| Playwright | 浏览器自动化 |
| Pytest | 测试框架 |
| pytest-playwright | Playwright 集成 |
| pytest-html | HTML 报告 |
| pytest-xdist | 并行执行 |
| python-dotenv | 环境变量 |
| GitHub Copilot 代理 | AI 代码生成 |
| Playwright MCP | 浏览器控制 |
| GitHub Actions | CI/CD |
---
# 🛠️ 安装
## 克隆仓库
```bash
git clone <repository-url>
cd AI-Playwright-MCP
```
---
## 创建虚拟环境
### Windows
```bash
python -m venv venv
venv\Scripts\activate
```
### Linux / macOS
```bash
python3 -m venv venv
source venv/bin/activate
```
---
## 安装依赖
```bash
pip install -r requirements.txt
```
---
## 安装 Playwright 浏览器
```bash
playwright install
```
---
## 配置环境
创建 `.env` 文件。
```env
BASE_URL=https://www.saucedemo.com
USERNAME=standard_user
PASSWORD=secret_sauce
```
---
# ▶️ 运行测试
运行所有测试:
```bash
pytest -v
```
运行特定测试:
```bash
pytest tests/test_login.py
```
运行带有 HTML 报告:
```bash
pytest --html=reports/report.html --self-contained-html
```
运行带有 Allure 结果:
```bash
pytest --alluredir=reports/allure-results
```
生成 Allure HTML 报告:
```bash
allure generate reports/allure-results -o reports/allure-report --clean
```
在以下位置打开报告:
```bash
reports/allure-report/index.html
```
在 Chromium 中运行:
```bash
pytest --browser chromium
```
在 Firefox 中运行:
```bash
pytest --browser firefox
```
在 WebKit 中运行:
```bash
pytest --browser webkit
```
---
# SCRUM-101 最终报告
## 执行摘要
本报告总结了 SCRUM-101 的测试结果:E-commerce Checkout Process on https://www.saucedemo.com.
该项目包括基于 Playwright 的自动化框架、环境驱动的配置、Chromium/Firefox/WebKit 的跨浏览器支持以及通过 `pytest-xdist` 的并行执行。
核心结账工作流的探索性验证和自动化覆盖已经完成,框架现在支持自动捕获轨迹、截图和视频工件。
## 要求
- 验证Sauce Demo的结账流程,从登录到订单确认。
- 确保购物车审查、结账信息输入、订单概述和订单完成流程正确。
- 支持验证和处理结账所需的字段。
- 为桌面浏览器和未来的移动设备覆盖实现自动化的 Playwright 测试。
- 生成测试工件和报告以用于CI执行。
## 验收标准
- AC1:购物车审查 — 购物车中的商品显示正确的信息、总额和结账选项。
- AC2:结账信息输入 — 结账表单字段是必填项,对于缺失的值会出现验证错误。
- AC3:订单概述 — 有效的结账数据会导致显示包含付款、运费、子总额、税额和总额的订单摘要页面。
- AC4:订单完成 — 点击“完成”会导航到一个包含成功消息和“返回首页”按钮的确认页面。
- AC5:错误处理 — 无效或不完整的数据必须阻止结账继续并显示适当的错误。
## 测试计划
测试计划涵盖了结账流程的自动化和手动活动。
主要关注的领域包括:
- 从库存到订单确认的快乐路径流程。
- 结账信息所需的字段验证。
- 订单概述的准确性和最终订单确认。
- Chromium、Firefox 和 WebKit 的浏览器覆盖。
- 并行执行、日志记录和工件捕获。
### 测试用例
1. TC-AC1-01:购物车审查 — 验证商品、描述、定价和结账按钮。
2. TC-AC2-01:结账信息 — 验证结账表单上的必填字段。
3. TC-AC2-02:结账信息无效输入 — 验证无效/边缘情况输入的行为。
4. TC-AC3-01:订单概述 — 验证订单摘要、成本和控件。
5. TC-AC4-01:订单完成 — 验证成功页面和购物车重置。
6. TC-AC5-01:取消结账 — 验证取消返回购物车。
7. TC-NAV-01:后退按钮行为 — 验证整个结账过程的导航一致性。
## 探索性发现
对主要结账工作流执行了手动探索性测试。
发现包括:
- 登录成功,使用`standard_user`并重定向到库存。
- 物品可以添加到购物车,购物车页面正确显示它们。
- 结账信息页面显示“名”、“姓”和“邮政编码/邮政编码”字段。
- 空字段提交产生验证错误反馈。
- 订单概述显示商品摘要、付款信息、运费、子总额、税额和总额。
- 订单完成导航到一个包含成功消息和“返回首页”的确认页面。
- 在观察到的流程中,购物车在订单完成后被清空。
- 在探索性测试期间,页面上出现了控制台错误;它们没有阻止结账路径,但应该被审查。
- 移动响应性和多浏览器探索性覆盖在本次会议中未完成。
## 自动化结果
使用现有的 Playwright 框架对核心结账场景执行自动化。
当前结果显示:
- 为登录、购物车审查、结账验证、订单概述、订单完成和无效输入处理实现了自动化测试。
- 框架现在为每个测试记录 Playwright 跟踪并将它们保存在`traces/`下。
- 日志指示在 Chromium 上成功生成这些测试的跟踪:
- `test_cart_review[chromium].zip`
- `test_checkout_information_validation[chromium].zip`
- `test_order_overview_displays_totals[chromium].zip`
- `test_login_success[chromium].zip`
- `test_finish_order_clears_cart[chromium].zip`
- `test_invalid_input_shows_error[chromium].zip`
- 跨浏览器支持在`pyproject.toml`和 CI 工作流中配置,设置为 Chromium/Firefox/WebKit 的自动执行。
## 发现的错误
在当前的执行过程中,在主要的结账自动化路径中没有观察到功能性缺陷。
然而,注意到了以下问题:
- 在探索性测试期间,在库存页面上观察到页面控制台错误。
- 移动响应性和浏览器特定的验证在当前运行中没有完全执行。
这些项目是后续调查的候选者,而不是确认的功能性错误。
## 修复动作
在工作中对项目进行了以下修复和稳定措施:
- 在`utils/config.py`中集中配置基 URL、凭证和工件目录。
- 为`pytest-xdist`兼容性添加了特定于工作线程的工件目录。
- 在`pyproject.toml`中用`--browser chromium --browser firefox --browser webkit`标准化浏览器执行选项。
- 更新了`README.md`以反映跨浏览器运行命令和执行说明。
- 为失败的测试实现了 Playwright 跟踪、截图和视频捕获支持。
- 添加了日志记录和重试支持,以实现更稳定的自动化执行。
## 最终状态
核心 SCRUM-101 结账工作流已在 Chromium 上自动化和验证。
该框架支持跨浏览器执行和并行运行,并启用了工件捕获。
一些探索性覆盖仍然需要完成 Firefox/WebKit 和移动视口验证。
总体而言,该项目已实现自动化、文档和工件生成的首要完成定义。
## 覆盖率
- AC1:通过探索性验证和自动化的购物车审查测试覆盖。
- AC2:通过探索性测试和自动化的结账验证覆盖。
- AC3:通过探索性验证和自动化的订单概述断言覆盖。
- AC4:通过探索性和自动化的订单完成测试覆盖。
- AC5:部分通过探索性空字段验证和自动化的无效输入验证覆盖。
自动化覆盖状态:
- 桌面结账流程:已实施。
- 必需字段验证:已实施。
- 多浏览器执行:已配置并就绪,Chromium 已验证。
- 移动/响应式覆盖:推荐下一步。
## 建议
1. 在 Chromium、Firefox 和 WebKit 上执行完整的浏览器矩阵,以确认跨浏览器行为。
2. 添加显式移动视口和设备模拟测试,以验证结账的响应性。
3. 调查和分类在探索性测试期间观察到的控制台错误。
4. 扩展负面验证测试,以验证特殊字符和边缘情况表单输入。
5. 添加 Allure 或 HTML 测试报告,以总结跨浏览器运行的结果。
6. 继续记录和审查 CI 中的任何间歇性失败。
---
生成于 2026-07-03,适用于 SCRUM-101。
---
# 📊 报告
生成的工件包括:
```
reports/
```
- HTML 报告
- JUnit XML
- Markdown 摘要
- Allure 结果文件 (`reports/allure-results/`)
- Allure HTML 报告 (`reports/allure-report/`)
```
screenshots/
```
- 失败截图
```
test-results/
```
- Playwright 跟踪
- 视频(可选)
---
# 📈 测试覆盖率
该框架验证了完整的 SauceDemo 结账工作流程:
- 用户登录
- 产品选择
- 购物车
- 结账信息
- 结账概述
- 订单完成
- 表单验证
- 导航流程
- 负面场景
---
# 🤖 AI 开发工作流
该项目使用以下工具开发:
- GitHub Copilot 代理模式
- Playwright MCP 服务器
- AI 生成的测试计划
- AI 生成的页面对象
- AI 辅助调试
- AI 驱动的自我修复
- AI 生成的 QA 报告
---
# 🔄 持续集成
该项目支持 GitHub Actions,用于:
- 依赖安装
- Playwright 浏览器安装
- 测试执行
- HTML 报告上传
- JUnit 结果
- 截图收集
---
# 📌 未来改进
- Allure 报告
- 数据驱动测试
- API 测试集成
- 无障碍测试
- 性能测试
- 视觉回归测试
- BrowserStack 集成
- Sauce Labs 集成
- Docker 支持
- AI 缺陷分类
---
# 📷 演示工作流
```
Scrum 用户故事
│
▼
规划代理
│
▼
测试计划
│
▼
浏览器代理(MCP)
│
▼
探索性测试
│
▼
测试生成器
│
▼
Python Playwright 测试
│
▼
Pytest 执行
│
▼
修复代理
│
▼
报告代理
│
▼
最终 QA 报告
```
---
# 📄 许可证
该项目在 MIT 许可证下发布。
---
# 👨💻 作者
**Avijit Chowdhury**
QA 自动化工程师 | AI 辅助测试 | Playwright | Python | GitHub Copilot | MCP