-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathplaywright.config.ts
More file actions
92 lines (85 loc) · 2.77 KB
/
playwright.config.ts
File metadata and controls
92 lines (85 loc) · 2.77 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
import {defineConfig, devices} from "@playwright/test"
const usingTestRelay =
process.env.VITE_USE_TEST_RELAY === "true" || process.env.VITE_USE_TEST_RELAY === "1"
const usingBuiltDist =
process.env.IRIS_E2E_BUILT_DIST === "true" ||
process.env.IRIS_E2E_BUILT_DIST === "1" ||
process.env.IRIS_E2E_BUILT === "true" ||
process.env.IRIS_E2E_BUILT === "1"
// Default to local relay for E2E runs unless explicitly told to use the test relay.
const usingLocalRelay = !usingBuiltDist && !usingTestRelay
const vitePort = (() => {
const raw = process.env.IRIS_E2E_PORT
if (raw) {
const n = Number(raw)
if (Number.isFinite(n) && n > 0) return n
}
// Use a non-default port locally to avoid accidentally reusing a dev server.
return process.env.CI ? 5173 : 5175
})()
const baseURL = `http://127.0.0.1:${vitePort}`
// Avoid noisy Node warnings when Playwright forces colored output (NO_COLOR vs FORCE_COLOR).
const webServerEnv = {...process.env, FORCE_COLOR: "0"}
const relaySeedCount = (() => {
const raw = process.env.IRIS_RELAY_SEED_COUNT
if (raw) {
const n = Number(raw)
if (Number.isFinite(n) && n >= 0) return n
}
// Default to no seed to keep E2E fast and deterministic.
// Opt-in seeding: set IRIS_RELAY_SEED_COUNT=80000 (requires bzip2).
return 0
})()
export default defineConfig({
testDir: "./tests",
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: "100%",
reporter: "html",
use: {
baseURL,
trace: "on-first-retry",
video: "on-first-retry",
launchOptions: {
args: ["--enable-precise-memory-info"],
},
},
projects: [
{
name: "chromium",
use: {
...devices["Desktop Chrome"],
},
},
],
webServer: [
...(usingLocalRelay
? [
{
command: `pnpm relay:start -- --seed ${relaySeedCount} --port 7777`,
url: "http://127.0.0.1:7777/health",
reuseExistingServer: false,
timeout: 5 * 60 * 1000,
env: webServerEnv,
},
]
: []),
{
// Force a dedicated server for E2E (avoid reusing an unrelated local server).
// Release E2E runs use the already-built dist artifact that will be published.
command: usingBuiltDist
? `pnpm exec vite preview --host 127.0.0.1 --port ${vitePort} --strictPort`
: `pnpm exec vite --host 127.0.0.1 --port ${vitePort} --strictPort`,
url: baseURL,
reuseExistingServer: false,
env: {
...webServerEnv,
// Used in the app for small test-only layout affordances.
...(usingBuiltDist ? {} : {VITE_E2E: "true"}),
...(usingLocalRelay ? {VITE_USE_LOCAL_RELAY: "true"} : {}),
...(usingTestRelay ? {VITE_USE_TEST_RELAY: "true"} : {}),
},
},
],
})