mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-12 09:12:40 +02:00
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
|
|
import { defineConfig, devices } from "@playwright/test";
|
||
|
|
|
||
|
|
const PORT = process.env.PORT || "3000";
|
||
|
|
const BACKEND_PORT = process.env.BACKEND_PORT || "8000";
|
||
|
|
const baseURL = process.env.PLAYWRIGHT_BASE_URL || `http://localhost:${PORT}`;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Playwright configuration for SurfSense web E2E tests.
|
||
|
|
*
|
||
|
|
* Tests live under `tests/` and are NEVER bundled into the production Next.js
|
||
|
|
* build (`.next/standalone/`) or the Electron desktop build, because:
|
||
|
|
* - This file and `tests/` are listed in `.dockerignore`.
|
||
|
|
* - `electron-builder.yml` only ships `.next/standalone/`, not source files.
|
||
|
|
* - `@playwright/test` is a `devDependency`, so production `pnpm install`
|
||
|
|
* with `--prod` skips it entirely.
|
||
|
|
*
|
||
|
|
* @see https://playwright.dev/docs/test-configuration
|
||
|
|
*/
|
||
|
|
export default defineConfig({
|
||
|
|
testDir: "./tests",
|
||
|
|
timeout: 30_000,
|
||
|
|
expect: { timeout: 5_000 },
|
||
|
|
fullyParallel: true,
|
||
|
|
forbidOnly: !!process.env.CI,
|
||
|
|
retries: process.env.CI ? 2 : 0,
|
||
|
|
workers: process.env.CI ? 1 : undefined,
|
||
|
|
reporter: process.env.CI
|
||
|
|
? [["html", { open: "never" }], ["github"], ["list"]]
|
||
|
|
: [["html", { open: "on-failure" }], ["list"]],
|
||
|
|
use: {
|
||
|
|
baseURL,
|
||
|
|
trace: "on-first-retry",
|
||
|
|
screenshot: "only-on-failure",
|
||
|
|
video: "retain-on-failure",
|
||
|
|
extraHTTPHeaders: {
|
||
|
|
"x-playwright-test": "true",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
projects: [
|
||
|
|
{
|
||
|
|
name: "setup",
|
||
|
|
testMatch: /.*\.setup\.ts/,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "chromium",
|
||
|
|
dependencies: ["setup"],
|
||
|
|
use: {
|
||
|
|
...devices["Desktop Chrome"],
|
||
|
|
storageState: "playwright/.auth/user.json",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
webServer: process.env.PLAYWRIGHT_NO_WEB_SERVER
|
||
|
|
? undefined
|
||
|
|
: {
|
||
|
|
command: "pnpm dev",
|
||
|
|
url: `http://localhost:${PORT}`,
|
||
|
|
reuseExistingServer: !process.env.CI,
|
||
|
|
timeout: 120_000,
|
||
|
|
env: {
|
||
|
|
NEXT_PUBLIC_FASTAPI_BACKEND_URL: `http://localhost:${BACKEND_PORT}`,
|
||
|
|
NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: "LOCAL",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|