playwright.config.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { defineConfig, devices } from '@playwright/test';
  2. const BASE_URL = 'http://localhost:3000';
  3. const FRONTEND_URL = process.env.FRONTEND_URL || 'http://localhost:5173';
  4. export default defineConfig({
  5. // 测试目录(项目根 tests/ 下)
  6. testDir: '.',
  7. // 全局超时
  8. timeout: 120000,
  9. expect: { timeout: 15000 },
  10. // 失败重试
  11. retries: process.env.CI ? 1 : 0,
  12. // 并行数
  13. workers: process.env.CI ? 2 : 1,
  14. // 报告配置(含 AI 可读的 Markdown 摘要)
  15. reporter: [
  16. ['list'],
  17. ['json', { outputFile: 'test-results/results.json' }],
  18. ['html', { outputFolder: 'test-results/report', open: 'never' }],
  19. ['./helpers/reporter.ts'],
  20. ],
  21. // 全局设置
  22. use: {
  23. baseURL: BASE_URL,
  24. trace: 'retain-on-failure',
  25. screenshot: 'on',
  26. video: 'retain-on-failure',
  27. },
  28. // 项目配置:冒烟测试 & 回归测试 & 关键旅程
  29. projects: [
  30. {
  31. name: 'smoke',
  32. testDir: './smoke',
  33. use: { ...devices['Desktop Chrome'] },
  34. },
  35. {
  36. name: 'regression',
  37. testDir: './regression',
  38. use: { ...devices['Desktop Chrome'] },
  39. },
  40. {
  41. name: 'critical-journeys',
  42. testDir: './e2e/ui/critical-journeys',
  43. use: { ...devices['Desktop Chrome'] },
  44. },
  45. ],
  46. // 全局 setup / teardown
  47. globalSetup: './global-setup.ts',
  48. globalTeardown: './global-teardown.ts',
  49. // Web 服务器(可选,也可手动启动)
  50. webServer: process.env.START_SERVER
  51. ? [
  52. {
  53. command: 'npx tsx server/src/app.ts',
  54. port: 3000,
  55. timeout: 30000,
  56. reuseExistingServer: true,
  57. },
  58. {
  59. command: 'npm run dev:h5',
  60. cwd: 'my-uniapp-vue3',
  61. port: 5173,
  62. timeout: 30000,
  63. reuseExistingServer: true,
  64. },
  65. ]
  66. : undefined,
  67. });