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>
71 lines
2.1 KiB
TypeScript
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",
|
|
});
|