157 lines
3.3 KiB
Markdown
157 lines
3.3 KiB
Markdown
# Playwright E2E Testing Framework
|
||
|
||
本项目是基于Playwright的端到端测试框架,用于自动化测试Web应用的功能和性能。
|
||
|
||
## 项目架构
|
||
|
||
```
|
||
playwright/
|
||
├── src/
|
||
│ ├── controllers/ # 控制器层,负责测试流程控制
|
||
│ ├── pages/ # 页面对象层,封装页面操作
|
||
│ └── services/ # 服务层,处理数据和业务逻辑
|
||
├── tests/
|
||
│ └── e2e/ # 端到端测试用例
|
||
├── .env.dev # 开发环境配置
|
||
└── playwright.config.js # Playwright配置文件
|
||
```
|
||
|
||
## 配置管理
|
||
|
||
项目采用分层的配置管理方式,确保配置的统一性和可维护性:
|
||
|
||
### 1. 环境变量配置 (.env.dev)
|
||
|
||
环境变量配置文件包含所有可配置项,按功能分类:
|
||
|
||
```ini
|
||
# 基础配置
|
||
BASE_URL=https://ibp-dev.longi.com
|
||
|
||
# 测试配置
|
||
TEST_DATA_DIR=test-data
|
||
TEST_BATCH_SIZE=5
|
||
TEST_RETRY_COUNT=3
|
||
TEST_BATCH_INTERVAL=1000
|
||
TEST_MAX_RETRY_DELAY=5000
|
||
|
||
# 超时配置
|
||
MENU_TIME_OUT=30000
|
||
EXPECT_TIMEOUT=30000
|
||
|
||
# 浏览器配置
|
||
BROWSER_HEADLESS=false
|
||
BROWSER_SLOW_MO=50
|
||
BROWSER_TIMEOUT=30000
|
||
VIEWPORT_WIDTH=1920
|
||
VIEWPORT_HEIGHT=1080
|
||
|
||
# 数据目录配置
|
||
MENU_DATA_FILE_PATH=test-data/menu-data.json
|
||
TEST_PROGRESS_FILE_PATH=test-data/test-progress.json
|
||
```
|
||
|
||
### 2. Playwright配置 (playwright.config.js)
|
||
|
||
Playwright配置文件统一管理所有浏览器相关的配置:
|
||
|
||
- 浏览器设置(headless模式、视窗大小等)
|
||
- 测试超时设置
|
||
- 并发和重试策略
|
||
- 测试报告配置
|
||
|
||
### 3. 测试控制器配置 (TestController)
|
||
|
||
测试控制器只管理测试流程相关的配置:
|
||
|
||
- 批次大小
|
||
- 重试次数
|
||
- 批次间隔
|
||
- 最大重试延迟
|
||
|
||
## 主要功能
|
||
|
||
1. **菜单遍历测试**
|
||
- 自动收集菜单数据
|
||
- 批量执行菜单点击测试
|
||
- 支持断点续测
|
||
- 提供测试进度跟踪
|
||
|
||
2. **智能重试机制**
|
||
- 支持失败重试
|
||
- 使用指数退避策略
|
||
- 可配置最大重试次数和延迟
|
||
|
||
3. **灵活的配置系统**
|
||
- 所有配置项可通过环境变量覆盖
|
||
- 提供合理的默认值
|
||
- 配置项分类清晰
|
||
|
||
## 使用说明
|
||
|
||
1. **安装依赖**
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
2. **配置环境变量**
|
||
- 复制 `.env.dev` 到 `.env`
|
||
- 根据需要修改配置项
|
||
|
||
3. **运行测试**
|
||
```bash
|
||
npm test
|
||
```
|
||
|
||
4. **查看报告**
|
||
```bash
|
||
npm run show-report
|
||
```
|
||
|
||
## 最佳实践
|
||
|
||
1. **配置管理**
|
||
- 所有配置统一在 `.env` 文件中管理
|
||
- 不同环境使用不同的 `.env` 文件
|
||
- 避免在代码中硬编码配置值
|
||
|
||
2. **测试用例编写**
|
||
- 使用页面对象模式
|
||
- 保持测试用例独立性
|
||
- 合理使用断言和超时设置
|
||
|
||
3. **错误处理**
|
||
- 实现合理的重试机制
|
||
- 记录详细的错误日志
|
||
- 提供清晰的错误信息
|
||
|
||
## 注意事项
|
||
|
||
1. 确保环境变量配置正确
|
||
2. 注意浏览器配置只在 `playwright.config.js` 中管理
|
||
3. 测试用例应该是独立和可重复的
|
||
4. 定期检查和清理测试数据
|
||
|
||
## 常见问题
|
||
|
||
1. **测试运行失败**
|
||
- 检查网络连接
|
||
- 验证环境变量配置
|
||
- 查看错误日志
|
||
|
||
2. **配置不生效**
|
||
- 确认环境变量文件位置正确
|
||
- 检查配置项拼写
|
||
- 重启测试进程
|
||
|
||
## 贡献指南
|
||
|
||
1. Fork 项目
|
||
2. 创建特性分支
|
||
3. 提交变更
|
||
4. 发起 Pull Request
|
||
|
||
## 许可证
|
||
|
||
MIT
|