playwright.config.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. // 全局 setup / teardown
  42. globalSetup: './global-setup.ts',
  43. globalTeardown: './global-teardown.ts',
  44. // Web 服务器(可选,也可手动启动)
  45. webServer: process.env.START_SERVER
  46. ? [
  47. {
  48. command: 'npx tsx server/src/app.ts',
  49. port: 3000,
  50. timeout: 30000,
  51. reuseExistingServer: true,
  52. },
  53. {
  54. command: 'npm run dev:h5',
  55. cwd: 'my-uniapp-vue3',
  56. port: 5173,
  57. timeout: 30000,
  58. reuseExistingServer: true,
  59. },
  60. ]
  61. : undefined,
  62. });