| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { defineConfig, devices } from '@playwright/test';
- const BASE_URL = 'http://127.0.0.1:3000';
- const FRONTEND_URL = process.env.FRONTEND_URL || 'http://127.0.0.1:5173';
- export default defineConfig({
- // 测试目录(项目根 tests/ 下)
- testDir: '.',
- // 全局超时
- timeout: 120000,
- expect: { timeout: 15000 },
- // 失败重试
- retries: process.env.CI ? 1 : 0,
- // 并行数
- workers: process.env.CI ? 2 : 1,
- // 报告配置(含 AI 可读的 Markdown 摘要)
- reporter: [
- ['list'],
- ['json', { outputFile: 'test-results/results.json' }],
- ['html', { outputFolder: 'test-results/report', open: 'never' }],
- ['./helpers/reporter.ts'],
- ],
- // 全局设置
- use: {
- baseURL: BASE_URL,
- trace: 'retain-on-failure',
- screenshot: 'on',
- video: 'retain-on-failure',
- },
- // 项目配置:冒烟测试 & 回归测试 & 关键旅程 & 根目录散件
- projects: [
- {
- name: 'smoke',
- testDir: './smoke',
- use: { ...devices['Desktop Chrome'] },
- },
- {
- name: 'regression',
- testDir: './regression',
- use: { ...devices['Desktop Chrome'] },
- },
- {
- name: 'critical-journeys',
- testDir: './e2e/ui/critical-journeys',
- use: { ...devices['Desktop Chrome'] },
- },
- {
- // 核心业务 E2E:书籍 大纲→内容→音频 完整链路
- // 每次修改 book-generator / 发布上线前必跑
- name: 'core-business',
- testDir: './e2e/core-business',
- use: { ...devices['Desktop Chrome'] },
- // 单个 describe 内串行,因为所有断言共享同一本书的 bookId
- fullyParallel: false,
- workers: 1,
- // 单测超时:8 分钟(LLM + TTS 真实调用)
- timeout: 480_000,
- },
- {
- name: 'root-singles',
- testDir: '.',
- testMatch: /(example-rotation|page-cleanup-screenshot|textarea-size)\.spec\.ts$/,
- use: { ...devices['Desktop Chrome'] },
- },
- ],
- // 全局 setup / teardown
- globalSetup: './global-setup.ts',
- globalTeardown: './global-teardown.ts',
- // Web 服务器(可选,也可手动启动)
- webServer: process.env.START_SERVER
- ? [
- {
- command: 'npx tsx server/src/app.ts',
- port: 3000,
- timeout: 30000,
- reuseExistingServer: true,
- },
- {
- command: 'npm run dev:h5',
- cwd: 'my-uniapp-vue3',
- port: 5173,
- timeout: 30000,
- reuseExistingServer: true,
- },
- ]
- : undefined,
- });
|