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

7.6 KiB
Raw Permalink Blame History

Playwright

现代 Web 应用自动化测试环境,基于 Microsoft Playwright 构建。支持 Chromium、Firefox 和 WebKit 浏览器,提供完整的端到端测试解决方案。

核心特性

  • 🚀 快速可靠:使用 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/

⚙️ 配置说明

浏览器类型

  • ChromiumGoogle Chrome 内核,推荐选择
  • FirefoxMozilla Firefox 引擎
  • WebKitSafari 内核,适合移动端测试

运行模式

  • 有头模式:显示浏览器界面,适合调试和开发
  • 无头模式:后台运行,适合 CI/CD 和生产环境

安全配置

  • 用户 ID:建议使用非 root 用户默认1000
  • 组 ID对应的用户组默认1000
  • 应用自动配置安全沙箱和权限

🧪 使用指南

创建测试

  1. 访问管理界面
  2. 点击 "Generate Example Test" 生成示例测试
  3. 编辑 /app/tests/ 目录下的测试文件
  4. 使用 TypeScript 或 JavaScript 编写测试

示例测试代码

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 配置文件:

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. 替换启动脚本

    # 编辑启动脚本
    vi config/start.sh
    
  2. 替换 Web 服务器

    # 编辑或替换服务器脚本
    vi config/server.js
    
  3. 添加自定义脚本

    # 在 config 目录添加自定义脚本
    vi config/my-custom-script.js
    
  4. 修改启动逻辑

    编辑 config/start.sh 来调用您的自定义脚本:

    #!/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
    

应用更改

修改配置文件后,重启容器以应用更改:

# 在 1Panel 中重启应用
# 或使用 Docker Compose 命令
docker-compose restart playwright

自定义脚本示例

创建一个简单的自定义测试脚本 config/my-test.js

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 中调用:

# 运行自定义测试
echo "🧪 Running custom test..."
node my-test.js

注意事项

  • 所有自定义脚本必须放在 config/ 目录中
  • 修改后需要重启容器才能生效
  • 保持脚本文件的可执行权限
  • 遵循 Playwright 安全最佳实践

🐛 故障排除

常见问题

  1. 容器启动失败

    • 检查内存是否充足至少2GB
    • 确认端口未被占用
    • 查看容器日志
  2. 测试运行失败

    • 检查浏览器配置
    • 验证测试文件语法
    • 确认网络连接
  3. 权限问题

    • 调整用户ID和组ID配置
    • 检查文件系统权限
    • 确认数据卷挂载

日志查看

# 查看容器日志
docker logs playwright

# 实时跟踪日志
docker logs -f playwright

📚 学习资源

🔗 相关链接

📄 许可证

本项目遵循 Playwright 的开源许可证。详细信息请参考 官方仓库

🤝 贡献

欢迎提交 Issue 和 Pull Request 来帮助改进这个应用配置。