playwright.config.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { defineConfig, devices } from '@playwright/test';
  2. const BASE_URL = 'http://127.0.0.1:3000';
  3. const FRONTEND_URL = process.env.FRONTEND_URL || 'http://127.0.0.1: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. name: 'root-singles',
  47. testDir: '.',
  48. testMatch: /(example-rotation|page-cleanup-screenshot|textarea-size)\.spec\.ts$/,
  49. use: { ...devices['Desktop Chrome'] },
  50. },
  51. ],
  52. // 全局 setup / teardown
  53. globalSetup: './global-setup.ts',
  54. globalTeardown: './global-teardown.ts',
  55. // Web 服务器(可选,也可手动启动)
  56. webServer: process.env.START_SERVER
  57. ? [
  58. {
  59. command: 'npx tsx server/src/app.ts',
  60. port: 3000,
  61. timeout: 30000,
  62. reuseExistingServer: true,
  63. },
  64. {
  65. command: 'npm run dev:h5',
  66. cwd: 'my-uniapp-vue3',
  67. port: 5173,
  68. timeout: 30000,
  69. reuseExistingServer: true,
  70. },
  71. ]
  72. : undefined,
  73. });