import { defineConfig, devices } from "@playwright/test"; /** * 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") }); dotenv.config({ path: path.resolve(__dirname, "../backend/.env") }); export default defineConfig({ testDir: "./src/tests", /* Global setup file that runs before all tests */ globalSetup: "./src/tests/global-setup.ts", /* 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 ? 1 : 0, /* use more workers on CI. */ workers: process.env.CI ? 4 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ reporter: [["list"], ["html", { open: "never" }]], /* 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: "http://localhost:3000/", /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ screenshot: "only-on-failure", bypassCSP: true, /* Helps debugging failures */ trace: "retain-on-failure", video: "retain-on-failure", /* Auto-accept cookies in all tests to prevent banner interference */ storageState: { cookies: [], origins: [ { origin: "http://localhost:3000", localStorage: [ { name: "autogpt_cookie_consent", value: JSON.stringify({ hasConsented: true, timestamp: Date.now(), analytics: true, monitoring: true, }), }, ], }, ], }, }, /* Maximum time one test can run for */ timeout: 25000, /* Configure web server to start automatically (local dev only) */ webServer: { command: "pnpm start", url: "http://localhost:3000", reuseExistingServer: true, }, /* Configure projects for major browsers */ projects: [ { name: "chromium", use: { ...devices["Desktop Chrome"], channel: "chromium" }, }, ], });