-
Notifications
You must be signed in to change notification settings - Fork 118
Expand file tree
/
Copy pathconfig-e2e.ts
More file actions
89 lines (83 loc) · 2.53 KB
/
config-e2e.ts
File metadata and controls
89 lines (83 loc) · 2.53 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
import { defineConfig, devices, type PlaywrightTestConfig } from "@playwright/test";
import { getAppPort, getInspectorPort, type AppName } from "./apps";
export function configurePlaywright(
app: AppName,
{
// Do we run on CI?
isCI = Boolean(process.env.CI),
// Do we run on workers (`wrangler dev`) or on Node (`next dev`)
isWorker = true,
// Tests with multiple browsers
multipleBrowsers = false,
// Whether to run tests in single file in parallel
parallel = true,
// Use the turbopack runtime
useTurbopack = false,
} = {}
): PlaywrightTestConfig {
const port = getAppPort(app, { isWorker });
const inspectorPort = getInspectorPort(app);
const baseURL = `http://localhost:${port}`;
let command: string;
let timeout: number;
if (isWorker) {
// Do not build on CI - there is a preceding build step
command = isCI ? "" : `pnpm ${useTurbopack ? "build:worker-turbopack" : "build:worker"} && `;
const env = app === "r2-incremental-cache" ? "--env e2e" : "";
command += `pnpm preview:worker -- --port ${port} --inspector-port ${inspectorPort} ${env}`;
timeout = 800_000;
} else {
timeout = 100_000;
command = `pnpm dev --port ${port}`;
}
const projects = [
{
name: `${app} - chromium`,
use: { ...devices["Desktop Chrome"] },
},
{
name: `${app} - firefox`,
use: { ...devices["Desktop Firefox"] },
},
{
name: `${app} - webkit`,
use: { ...devices["Desktop Safari"] },
},
];
if (!multipleBrowsers) {
projects.length = 1;
}
/**
* See https://playwright.dev/docs/test-configuration.
*/
return defineConfig({
testDir: "./",
/* ignore runtime specific tests */
testIgnore: isWorker ? "*next.spec.ts" : "*cloudflare.spec.ts",
/* Run tests in files in parallel */
fullyParallel: parallel,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: isCI,
/* Retry on CI only */
retries: isCI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: isCI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: "html",
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
baseURL,
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: "on-first-retry",
},
projects,
/* Run your local dev server before starting the tests */
webServer: {
command,
url: baseURL,
reuseExistingServer: !isCI,
timeout,
},
});
}