-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathplaywright.config.ts
More file actions
78 lines (76 loc) · 2.81 KB
/
Copy pathplaywright.config.ts
File metadata and controls
78 lines (76 loc) · 2.81 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
import { defineConfig, devices } from '@playwright/test'
import { buildBrowserLocalStackCommand, resolveBrowserLocalWebMode } from './scripts/browser-stack-config.js'
const browserStack = process.env['BILIG_BROWSER_STACK']
const useComposeBrowserStack = browserStack === 'compose'
const useManagedBrowserStack = process.env['BILIG_E2E_MANAGED_STACK'] === '1'
const fuzzBrowserMode = process.env['BILIG_FUZZ_BROWSER'] === '1'
const webGpuBrowserMode = process.env['BILIG_BROWSER_WEBGPU'] === '1'
const localNoCompose = process.env['BILIG_DEV_DISABLE_COMPOSE'] === '1'
const remoteSyncEnabled = process.env['BILIG_E2E_REMOTE_SYNC'] !== '0'
const ciContainerMode = process.platform === 'linux' && (process.env['CI'] === '1' || process.env['CI'] === 'true')
const browserHost = process.env['BILIG_E2E_HOST'] ?? '127.0.0.1'
const browserWebPort = process.env['BILIG_E2E_WEB_PORT'] ?? '4180'
const browserAppPort = process.env['BILIG_E2E_SYNC_SERVER_PORT'] ?? '54422'
const browserZeroPort = process.env['BILIG_E2E_ZERO_PORT'] ?? '54849'
const browserPostgresPort = process.env['BILIG_E2E_POSTGRES_PORT'] ?? '55433'
const browserBaseUrl = process.env['BILIG_E2E_BASE_URL'] ?? `http://${browserHost}:${browserWebPort}`
const browserReadyUrl =
process.env['BILIG_E2E_READY_URL'] ?? (remoteSyncEnabled ? `${browserBaseUrl}/zero/keepalive` : `${browserBaseUrl}/runtime-config.json`)
const browserLocalStackCommand = buildBrowserLocalStackCommand({
browserWebPort,
browserAppPort,
browserPostgresPort,
browserZeroPort,
disableCompose: localNoCompose,
remoteSyncEnabled,
webMode: resolveBrowserLocalWebMode(process.env),
})
const localWebGpuLaunchArgs = ['--enable-unsafe-webgpu', '--ignore-gpu-blocklist']
const ciBaseLaunchArgs = ['--no-sandbox', '--disable-dev-shm-usage']
const ciWebGpuLaunchArgs = [
...ciBaseLaunchArgs,
'--headless=new',
'--enable-unsafe-webgpu',
'--ignore-gpu-blocklist',
'--use-angle=vulkan',
'--enable-features=Vulkan',
'--disable-vulkan-surface',
]
const chromiumLaunchArgs = ciContainerMode
? webGpuBrowserMode
? ciWebGpuLaunchArgs
: [...ciBaseLaunchArgs, '--disable-gpu']
: localWebGpuLaunchArgs
export default defineConfig({
testDir: './e2e/tests',
testMatch: '**/web-shell*.pw.ts',
fullyParallel: false,
retries: 0,
timeout: fuzzBrowserMode ? 600_000 : 60_000,
reporter: 'list',
use: {
baseURL: browserBaseUrl,
trace: 'retain-on-failure',
},
projects: [
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
launchOptions: {
args: chromiumLaunchArgs,
},
},
},
],
...(useComposeBrowserStack || useManagedBrowserStack
? {}
: {
webServer: {
command: browserLocalStackCommand,
url: browserReadyUrl,
reuseExistingServer: false,
timeout: 300_000,
},
}),
})