-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaywright.config.ts
More file actions
133 lines (111 loc) · 3.12 KB
/
Copy pathplaywright.config.ts
File metadata and controls
133 lines (111 loc) · 3.12 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
131
132
133
import { defineConfig, devices } from '@playwright/test'
/**
* Playwright Configuration for Boreas Landing Page E2E Tests
* Focuses on critical user flows and performance testing
*/
export default defineConfig({
// Test directory
testDir: './tests/e2e',
// Run tests in files in parallel
fullyParallel: true,
// Fail the build on CI if you accidentally left test.only in the source code
forbidOnly: !!process.env.CI,
// Retry on CI only
retries: process.env.CI ? 2 : 0,
// Opt out of parallel tests on CI
workers: process.env.CI ? 1 : undefined,
// Reporter to use
reporter: [
['html'],
['json', { outputFile: 'test-results/results.json' }],
['junit', { outputFile: 'test-results/results.xml' }]
],
// Shared settings for all the projects below
use: {
// Base URL to use in actions like `await page.goto('/')`
baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:3000',
// Collect trace when retrying the failed test
trace: 'on-first-retry',
// Take screenshot on failure
screenshot: 'only-on-failure',
// Record video on failure
video: 'retain-on-failure',
},
// Configure projects for major browsers
projects: [
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
// Enable performance monitoring
launchOptions: {
args: ['--enable-precise-memory-info']
}
},
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
// Mobile Testing
{
name: 'Mobile Chrome',
use: { ...devices['Pixel 5'] },
},
{
name: 'Mobile Safari',
use: { ...devices['iPhone 12'] },
},
// Performance Testing Project
{
name: 'performance',
use: {
...devices['Desktop Chrome'],
launchOptions: {
args: [
'--enable-precise-memory-info',
'--disable-backgrounding-occluded-windows',
'--disable-features=TranslateUI',
'--disable-background-timer-throttling',
'--disable-renderer-backgrounding'
]
}
},
testMatch: '**/performance/**/*.test.ts',
},
],
// Global setup and teardown
globalSetup: require.resolve('./tests/e2e/global-setup.ts'),
globalTeardown: require.resolve('./tests/e2e/global-teardown.ts'),
// Test match patterns
testMatch: [
'**/e2e/**/*.test.ts',
'**/e2e/**/*.spec.ts'
],
// Ignore these files
testIgnore: [
'**/node_modules/**',
'**/.next/**',
'**/coverage/**'
],
// Timeout settings
timeout: 30 * 1000, // 30 seconds per test
expect: {
timeout: 10 * 1000, // 10 seconds for assertions
},
// Web server configuration
webServer: {
command: 'npm run dev',
url: 'http://localhost:3000',
reuseExistingServer: !process.env.CI,
timeout: 120 * 1000, // 2 minutes for server to start
},
// Output directory for test results
outputDir: 'test-results/',
// Maximum number of failed tests to keep in output directory
maxFailures: process.env.CI ? 5 : 100,
})