import { createRequire } from "node:module"; import { defineConfig, devices } from "@playwright/test"; const require = createRequire(import.meta.url); const { shouldIncludeWebKit } = require("../scripts/playwrightHostDeps.cjs") as { shouldIncludeWebKit: () => boolean; }; const configuredWorkers = process.env.PLAYWRIGHT_WORKERS ? Number.parseInt(process.env.PLAYWRIGHT_WORKERS, 10) : undefined; const skipWebServer = process.env.PLAYWRIGHT_SKIP_WEBSERVER === "1" || process.env.PLAYWRIGHT_SKIP_WEBSERVER === "true"; const port = Number.parseInt(process.env.PORT ?? "5174", 10); const defaultBaseUrl = `http://127.0.0.1:${port}`; const baseURL = process.env.PLAYWRIGHT_BASE_URL || process.env.BASE_URL || defaultBaseUrl; const usePreviewServer = process.env.CI === "true" || process.env.PLAYWRIGHT_USE_PREVIEW === "true"; /** * Read environment variables from file. * https://github.com/motdotla/dotenv */ // import dotenv from 'dotenv'; // import path from 'path'; // dotenv.config({ path: path.resolve(__dirname, '.env') }); /** * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ testDir: "./tests", /* 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: configuredWorkers ?? (process.env.CI ? 1 : undefined), /* Reporter to use. See https://playwright.dev/docs/test-reporters */ reporter: [["html", { open: "never" }], ["list"]], /* 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", }, /* Configure projects for major browsers */ projects: [ { name: "chromium", use: { ...devices["Desktop Chrome"] }, }, { name: "firefox", use: { ...devices["Desktop Firefox"] }, }, ...(shouldIncludeWebKit() ? [ { name: "webkit", use: { ...devices["Desktop Safari"] }, }, ] : []), ], /* Run your local dev server before starting the tests */ webServer: skipWebServer ? undefined : { command: usePreviewServer ? `VITE_OIDC_AUTHORITY=http://localhost:5000/oidc ./node_modules/.bin/vite build && ./node_modules/.bin/vite preview --host 127.0.0.1 --strictPort --port ${port}` : `VITE_OIDC_AUTHORITY=http://localhost:5000/oidc ./node_modules/.bin/vite --host 127.0.0.1 --strictPort --port ${port}`, url: defaultBaseUrl, reuseExistingServer: !process.env.CI && !process.env.PORT, }, });