1
0
Fork 0
polaris-task-force/playwright.config.ts
Z8MB1E 8135c9850b feat(test): run tests against a dedicated truncated database
Bootstrap a per-run test database (ensure, push schema, truncate, seed baselines, repair sequences), wire vitest/playwright globals, and gate schema push behind DB_PUSH. Serial test files share the one database.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-22 17:58:17 -04:00

71 lines
2.1 KiB
TypeScript

import { defineConfig, devices } from "@playwright/test";
/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
import "dotenv/config";
import { resolveTestDatabaseUri } from "./tests/test-db";
/**
* E2E runs against the dedicated test database, never the development one.
* The webServer (dev server) inherits DATABASE_URI pointed at the test DB;
* global setup guarantees it exists, is migrated and is empty.
*/
const testDatabaseUri = resolveTestDatabaseUri();
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: "./tests/e2e",
/* 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: process.env.CI ? 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: "http://localhost:3000",
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: "on-first-retry",
},
projects: [
{
name: "vivaldi",
use: {
...devices["Desktop Chrome"],
launchOptions: {
executablePath: "/usr/bin/vivaldi",
args: [
"--headless=new",
"--no-sandbox",
"--disable-gpu",
"--disable-dev-shm-usage",
"--no-first-run",
"--noerrdialogs",
"--ozone-platform=headless",
"--ozone-override-screen-size=1280,720",
"--use-angle=swiftshader-webgl",
],
},
},
},
],
webServer: {
command: "pnpm dev",
reuseExistingServer: true,
url: "http://localhost:3000",
env: {
...process.env,
DATABASE_URI: testDatabaseUri,
},
},
globalSetup: "./tests/e2e/global-setup.ts",
});