|
1 | 1 | import { defineConfig, devices } from "@playwright/test"; |
2 | 2 |
|
| 3 | +const isCI = !!process.env.CI; |
| 4 | + |
| 5 | +const baseURL = process.env.BASE_URL || "https://ralphina.ethz.ch"; |
| 6 | + |
| 7 | +const ignoreHTTPSErrors = process.env.E2E_IGNORE_HTTPS_ERRORS === "true"; |
| 8 | + |
| 9 | +// Output locations (server will set these to mounted /artifacts/...) |
| 10 | +const outputDir = process.env.E2E_OUTPUT_DIR || "test-results"; |
| 11 | +const reportDir = process.env.E2E_REPORT_DIR || "playwright-report"; |
| 12 | + |
| 13 | +// Reporter behavior: |
| 14 | +// - Locally: html report (nice), but don’t auto-open |
| 15 | +// - CI/server: always html (so nginx can serve it) + also print line output for logs |
| 16 | +const reporters = isCI |
| 17 | + ? [["line"], ["html", { outputFolder: reportDir, open: "never" }]] |
| 18 | + : [["html", { outputFolder: reportDir, open: "never" }]]; |
| 19 | + |
3 | 20 | export default defineConfig({ |
4 | 21 | testDir: "tests/e2e", |
5 | 22 | fullyParallel: false, |
6 | | - forbidOnly: !!process.env.CI, |
7 | | - retries: process.env.CI ? 2 : 0, |
8 | | - workers: process.env.CI ? 1 : undefined, |
9 | | - reporter: process.env.CI ? "line" : "html", |
| 23 | + forbidOnly: isCI, |
| 24 | + retries: isCI ? 2 : 0, |
| 25 | + workers: isCI ? 1 : undefined, |
| 26 | + |
| 27 | + reporter: reporters, |
| 28 | + |
| 29 | + // This is where screenshots/videos/traces go |
| 30 | + outputDir, |
| 31 | + |
10 | 32 | use: { |
11 | | - baseURL: process.env.BASE_URL || "https://ralphina.ethz.ch", |
| 33 | + baseURL, |
12 | 34 | trace: "on", |
| 35 | + ignoreHTTPSErrors, |
13 | 36 | contextOptions: { |
14 | 37 | javaScriptEnabled: true, |
15 | 38 | }, |
16 | 39 | }, |
| 40 | + |
17 | 41 | projects: [ |
18 | 42 | { name: "chromium", use: { ...devices["Desktop Chrome"] } }, |
19 | 43 | { name: "firefox", use: { ...devices["Desktop Firefox"] } }, |
|
0 commit comments