-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaywright.config.ts
More file actions
130 lines (104 loc) · 2.43 KB
/
playwright.config.ts
File metadata and controls
130 lines (104 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { defineConfig, devices } from '@playwright/test';
/**
* Playwright Configuration for E2E Tests
*/
export default defineConfig({
// Test directory
testDir: './e2e',
// Test file pattern
testMatch: '**/*.spec.ts',
// Run tests in parallel
fullyParallel: true,
// Fail the build on CI if you accidentally left test.only in the source code
forbidOnly: !!process.env.CI,
// Retry failed tests
retries: process.env.CI ? 2 : 0,
// Limit parallel workers on CI
workers: process.env.CI ? 1 : undefined,
// Reporter configuration
reporter: [
['html', { outputFolder: 'playwright-report' }],
['list'],
['json', { outputFile: 'test-results/e2e-results.json' }],
],
// Global test timeout
timeout: 60000,
// Expect timeout
expect: {
timeout: 10000,
},
// Shared settings for all projects
use: {
// Base URL for tests
baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:5173',
// Collect trace when retrying
trace: 'on-first-retry',
// Screenshot on failure
screenshot: 'only-on-failure',
// Video recording
video: 'on-first-retry',
// Viewport size
viewport: { width: 1280, height: 720 },
// Action timeout
actionTimeout: 15000,
// Navigation timeout
navigationTimeout: 30000,
// Ignore HTTPS errors in development
ignoreHTTPSErrors: true,
},
// Configure projects for major browsers
projects: [
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
channel: 'chrome',
},
},
{
name: 'firefox',
use: {
...devices['Desktop Firefox'],
},
},
{
name: 'webkit',
use: {
...devices['Desktop Safari'],
},
},
// Mobile viewports
{
name: 'Mobile Chrome',
use: {
...devices['Pixel 5'],
},
},
{
name: 'Mobile Safari',
use: {
...devices['iPhone 12'],
},
},
// Branded browsers
{
name: 'Microsoft Edge',
use: {
...devices['Desktop Edge'],
channel: 'msedge',
},
},
],
// Run local dev server before tests
webServer: {
command: 'pnpm dev',
url: 'http://localhost:5173',
reuseExistingServer: !process.env.CI,
timeout: 120000,
},
// Output directory for test artifacts
outputDir: 'test-results',
// Global setup and teardown
globalSetup: undefined,
globalTeardown: undefined,
});