2
0

playwright.config.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { defineConfig, devices } from '@playwright/test';
  2. export default defineConfig({
  3. testDir: './specs',
  4. fullyParallel: true,
  5. forbidOnly: !!process.env.CI,
  6. retries: process.env.CI ? 2 : 0,
  7. workers: process.env.CI ? 1 : 4,
  8. // 缩短默认超时时间(Playwright 默认 30000ms),加快测试失败反馈
  9. timeout: 60000, // E2E 测试需要更长时间(多个下拉框操作)
  10. reporter: [
  11. ['html'],
  12. ['list'],
  13. ['junit', { outputFile: 'test-results/junit.xml' }]
  14. ],
  15. use: {
  16. baseURL: process.env.E2E_BASE_URL || 'http://localhost:8080',
  17. trace: 'on-first-retry',
  18. screenshot: 'only-on-failure',
  19. video: 'retain-on-failure',
  20. },
  21. projects: [
  22. {
  23. name: 'chromium',
  24. use: { ...devices['Desktop Chrome'] },
  25. },
  26. {
  27. name: 'firefox',
  28. use: { ...devices['Desktop Firefox'] },
  29. },
  30. {
  31. name: 'webkit',
  32. use: { ...devices['Desktop Safari'] },
  33. },
  34. {
  35. name: 'Mobile Chrome',
  36. use: { ...devices['Pixel 5'] },
  37. },
  38. {
  39. name: 'Mobile Safari',
  40. use: { ...devices['iPhone 12'] },
  41. },
  42. ],
  43. webServer: {
  44. command: 'npm run dev',
  45. url: 'http://localhost:8080',
  46. reuseExistingServer: !process.env.CI,
  47. timeout: 120000,
  48. },
  49. });