import { defineConfig, devices } from "@playwright/test" import { FRONTEND_INTEGRATION_PORT, FRONTEND_INTEGRATION_URL, FRONTEND_MOCK_PORT, FRONTEND_MOCK_URL, MOCK_API_URL, } from "./tests/e2e/support/config" export default defineConfig({ testDir: "./tests/e2e/specs", fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: 1, reporter: "html", use: { actionTimeout: 10_000, screenshot: "only-on-failure", trace: "on-first-retry", }, projects: [ { name: "chromium", testIgnore: /\.integration\./, use: { ...devices["Desktop Chrome"], baseURL: FRONTEND_MOCK_URL, }, }, { name: "integration", testMatch: /\.integration\./, use: { ...devices["Desktop Chrome"], baseURL: FRONTEND_INTEGRATION_URL, }, }, ], webServer: [ { command: "bun --bun tests/e2e/support/mock-api.ts", url: `${MOCK_API_URL}/api/ping/`, reuseExistingServer: !process.env.CI, }, { command: `NEXT_PUBLIC_API_URL=${MOCK_API_URL} NEXT_TEST_DIR=.next-test bun dev --port ${FRONTEND_MOCK_PORT}`, url: FRONTEND_MOCK_URL, reuseExistingServer: !process.env.CI, }, { command: `bun dev --port ${FRONTEND_INTEGRATION_PORT}`, url: FRONTEND_INTEGRATION_URL, reuseExistingServer: true, }, ], })