1. 安装 Playwright
使用 npm 安装
npm install -D @playwright/test
npx playwright install
使用 yarn 安装
yarn add -D @playwright/test
yarn playwright install
2. 项目配置
基础配置文件 (playwright.config.js)
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
// 测试目录
testDir: './tests',
// 并行运行测试
workers: process.env.CI ? 1 : undefined,
// 重试失败的测试
retries: process.env.CI ? 2 : 0,
// 超时设置
timeout: 30000,
// 报告配置
reporter: [
['html'],
['list']
],
webServer: {
command: 'npm run dev',
url: 'http://localhost:5173',
reuseExistingServer: !process.env.CI,
},
// 项目配置
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
],
// 全局设置
use: {
// 基础 URL
baseURL: 'http://localhost:5174',
// 截图设置
screenshot: 'only-on-failure',
// 视频设置
video: 'retain-on-failure',
// 追踪设置
trace: 'retain-on-failure',
env: {
NODE_ENV: process.env.NODE_ENV || 'development'
}
},
globalSetup: async ({ playwright }) => {
// 可以在这里添加全局的设置
},
globalTeardown: async ({ playwright }) => {
// 可以在这里添加全局的清理
},
});
package.json 配置
{
"scripts": {
"test": "playwright test",
"test:ui": "playwright test --ui",
"test:debug": "playwright test --debug",
"test:report": "playwright show-report"
}
}
3. 目录结构
demo/
├── tests/
│ ├── home.spec.js
│ ├── form.spec.js
│ ├── list.spec.js
│ └── playwright-guide.md
├── playwright.config.js
└── package.json
4. 环境变量配置
.env 文件
VITE_API_BASE_URL=http://localhost:3000
VITE_APP_TITLE=Demo App
PLAYWRIGHT_BASE_URL=http://localhost:5173
PLAYWRIGHT_HEADLESS=true
在配置文件中使用环境变量
export default defineConfig({
use: {
baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:5173',
},
});
5. 测试运行
运行所有测试
npm test
运行 UI 模式
npm run test:ui
运行调试模式
npm run test:debug
查看测试报告
npm run test:report
6. 常见问题解决
浏览器安装问题
npx playwright install
npx playwright install chromium
权限问题
chmod +x node_modules/.bin/playwright
代理设置
export default defineConfig({
use: {
proxy: {
server: 'http://myproxy.com:3128',
username: 'user',
password: 'pass'
}
}
});
7. CI/CD 集成
GitHub Actions 配置
name: Playwright Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v2
if: always()
with:
name: playwright-report
path: playwright-report/
8. 性能优化
配置优化
export default defineConfig({
workers: process.env.CI ? 1 : undefined,
timeout: 30000,
retries: process.env.CI ? 2 : 0,
expect: {
timeout: 5000
}
});
测试优化建议
- 使用
test.beforeEach() 进行测试准备
- 避免不必要的等待
- 使用适当的超时时间
- 合理使用并行测试
- 优化选择器性能
9. 调试技巧
使用 UI 模式
npm run test:ui
使用调试模式
npm run test:debug
使用断点
await page.pause();
查看追踪
npx playwright test --trace on
npx playwright show-trace trace.zip