Files
Arch1Panel/apps/playwright/README.md
2025-08-30 19:32:42 +08:00

313 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Playwright
现代 Web 应用自动化测试环境,基于 Microsoft Playwright 构建。支持 Chromium、Firefox 和 WebKit 浏览器,提供完整的端到端测试解决方案。
![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/Playwright.png)
![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white)
## ✨ 核心特性
- **🚀 快速可靠**:使用 Microsoft 官方 Playwright v1.55.0 镜像
- **🌐 多浏览器支持**:支持 Chromium、Firefox 和 WebKit
- **🎯 精确测试**Web-first 断言,自动等待和重试
- **📊 丰富报告**HTML 测试报告,支持跟踪和截图
- **🔧 高度可配置**:灵活的测试配置和环境设置
- **🛡️ 安全稳定**:遵循官方安全最佳实践
## 📋 系统要求
- Docker 环境
- 1Panel 控制面板
- 至少 2GB 可用内存
## 🚀 快速开始
### 1Panel 部署
1. 在 1Panel 应用商店中搜索 "Playwright"
2. 点击安装并配置以下参数:
- **端口**Web 服务访问端口默认3000
- **浏览器类型**:选择默认浏览器引擎
- **无头模式**:是否启用无头模式运行
- **视窗尺寸**:浏览器视窗的宽度和高度
- **用户代理**:自定义浏览器用户代理字符串
- **用户/组 ID**:容器运行的用户和组标识符
3. 点击确认安装
### 访问服务
安装完成后,您可以通过以下方式访问:
- **管理界面**`http://your-server-ip:port/`
- **测试报告**`http://your-server-ip:port/test-results/`
- **测试文件**`http://your-server-ip:port/tests/`
## ⚙️ 配置说明
### 浏览器类型
- **Chromium**Google Chrome 内核,推荐选择
- **Firefox**Mozilla Firefox 引擎
- **WebKit**Safari 内核,适合移动端测试
### 运行模式
- **有头模式**:显示浏览器界面,适合调试和开发
- **无头模式**:后台运行,适合 CI/CD 和生产环境
### 安全配置
- **用户 ID**:建议使用非 root 用户默认1000
- **组 ID**对应的用户组默认1000
- 应用自动配置安全沙箱和权限
## 🧪 使用指南
### 创建测试
1. 访问管理界面
2. 点击 "Generate Example Test" 生成示例测试
3. 编辑 `/app/tests/` 目录下的测试文件
4. 使用 TypeScript 或 JavaScript 编写测试
### 示例测试代码
```typescript
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('https://playwright.dev/');
// 检查页面标题
await expect(page).toHaveTitle(/Playwright/);
// 点击链接
const getStarted = page.getByRole('link', { name: 'Get started' });
await getStarted.click();
// 验证URL变化
await expect(page).toHaveURL(/.*intro/);
});
```
### 运行测试
1. 在管理界面点击 "Run All Tests"
2. 或使用命令行:`npx playwright test`
3. 查看生成的 HTML 报告
### 配置文件
应用会自动生成 `playwright.config.ts` 配置文件:
```typescript
export default defineConfig({
testDir: './tests',
fullyParallel: true,
retries: 2,
reporter: [['html', { outputFolder: './test-results' }]],
use: {
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
projects: [
{ name: 'chromium', use: devices['Desktop Chrome'] },
{ name: 'firefox', use: devices['Desktop Firefox'] },
{ name: 'webkit', use: devices['Desktop Safari'] },
],
});
```
## 📁 目录结构
```
/app/
├── tests/ # 测试文件目录
├── test-results/ # 测试报告和结果
├── config/ # 配置文件
├── projects/ # 项目文件
├── playwright.config.ts # Playwright 配置
├── package.json # Node.js 依赖
└── server.js # Web 管理界面
```
## 🔧 高级功能
### 并行测试
- 支持多浏览器并行执行
- 自动分配测试工作负载
- CI/CD 环境优化
### 测试跟踪
- 自动生成测试执行跟踪
- 可视化测试步骤和时间线
- 失败时自动截图
### 自定义配置
- 支持自定义 Playwright 配置
- 灵活的项目设置
- 环境变量配置
### 🔄 自定义脚本执行
应用采用了配置文件分离设计,您可以轻松替换和自定义执行脚本:
#### 配置文件位置
所有应用配置文件位于 `config/` 目录:
```
config/
├── package.json # Node.js 依赖配置
├── playwright.config.ts # Playwright 测试配置
├── server.js # Web 管理界面服务器
└── start.sh # 应用启动脚本
```
#### 替换自定义脚本
1. **替换启动脚本**
```bash
# 编辑启动脚本
vi config/start.sh
```
2. **替换 Web 服务器**
```bash
# 编辑或替换服务器脚本
vi config/server.js
```
3. **添加自定义脚本**
```bash
# 在 config 目录添加自定义脚本
vi config/my-custom-script.js
```
4. **修改启动逻辑**
编辑 `config/start.sh` 来调用您的自定义脚本:
```bash
#!/bin/bash
echo "🎭 Setting up Playwright Test Environment..."
# 确保目录存在
mkdir -p tests test-results
# 安装依赖
echo "📦 Installing dependencies..."
npm install
# 安装 Playwright 浏览器
echo "🌐 Installing Playwright browsers..."
npx playwright install
# 运行您的自定义脚本
echo "🔧 Running custom script..."
node my-custom-script.js
# 启动服务器(可选)
echo "🚀 Starting Playwright server..."
node server.js
```
#### 应用更改
修改配置文件后,重启容器以应用更改:
```bash
# 在 1Panel 中重启应用
# 或使用 Docker Compose 命令
docker-compose restart playwright
```
#### 自定义脚本示例
创建一个简单的自定义测试脚本 `config/my-test.js`
```javascript
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
console.log('页面标题:', await page.title());
await browser.close();
})();
```
然后在 `start.sh` 中调用:
```bash
# 运行自定义测试
echo "🧪 Running custom test..."
node my-test.js
```
#### 注意事项
- 所有自定义脚本必须放在 `config/` 目录中
- 修改后需要重启容器才能生效
- 保持脚本文件的可执行权限
- 遵循 Playwright 安全最佳实践
## 🐛 故障排除
### 常见问题
1. **容器启动失败**
- 检查内存是否充足至少2GB
- 确认端口未被占用
- 查看容器日志
2. **测试运行失败**
- 检查浏览器配置
- 验证测试文件语法
- 确认网络连接
3. **权限问题**
- 调整用户ID和组ID配置
- 检查文件系统权限
- 确认数据卷挂载
### 日志查看
```bash
# 查看容器日志
docker logs playwright
# 实时跟踪日志
docker logs -f playwright
```
## 📚 学习资源
- [Playwright 官方文档](https://playwright.dev/docs/intro)
- [测试最佳实践](https://playwright.dev/docs/best-practices)
- [API 参考](https://playwright.dev/docs/api/class-playwright)
- [示例和模式](https://playwright.dev/docs/test-runners)
## 🔗 相关链接
- [官方网站](https://playwright.dev/)
- [GitHub 仓库](https://github.com/microsoft/playwright)
- [社区讨论](https://github.com/microsoft/playwright/discussions)
- [1Panel 文档](https://1panel.cn/docs/)
## 📄 许可证
本项目遵循 Playwright 的开源许可证。详细信息请参考 [官方仓库](https://github.com/microsoft/playwright)。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request 来帮助改进这个应用配置。