- Playwright config for local browsers (Firefox by default) and Docker Chrome - docker-compose.chrome.yml for browserless/chrome container (arm64) - 4 connectivity smoke tests (home, contact, blog pages) - 3 auth tests (redirect, login, logout) with auth helpers - Custom fixtures with remote CDP connect support - Shell scripts for start/stop/full Docker Chrome workflow - Makefile targets: playwright, playwright-docker, playwright-full
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { defineConfig, devices } from "@playwright/test";
|
|
|
|
// Default Playwright e2e configuration.
|
|
//
|
|
// Uses Firefox by default (Playwright Chromium crashes on macOS 15
|
|
// due to Crashpad permission restrictions).
|
|
//
|
|
// ## Usage
|
|
//
|
|
// make playwright # run with default browser (Firefox)
|
|
// PLAYWRIGHT_BROWSER=chromium make playwright
|
|
// PLAYWRIGHT_BROWSER=webkit make playwright
|
|
//
|
|
// # Run a single test file:
|
|
// PLAYWRIGHT_BROWSERS_PATH=assets/node_modules/playwright-core/.local-browsers \
|
|
// npx playwright test --config=playwright.config.ts test/e2e/smoke.spec.ts
|
|
//
|
|
// ## Docker Chrome (alternative)
|
|
//
|
|
// Use playwright.docker.config.ts instead of this config:
|
|
//
|
|
// docker compose -f docker-compose.chrome.yml up -d
|
|
// npx playwright test --config=playwright.docker.config.ts
|
|
|
|
const browserEnv = process.env.PLAYWRIGHT_BROWSER || "firefox";
|
|
|
|
const deviceFor = (name: string) => {
|
|
switch (name) {
|
|
case "chromium": return devices["Desktop Chrome"];
|
|
case "firefox": return devices["Desktop Firefox"];
|
|
case "webkit": return devices["Desktop Safari"];
|
|
default:
|
|
console.warn(`Unknown browser "${name}", falling back to Firefox`);
|
|
return devices["Desktop Firefox"];
|
|
}
|
|
};
|
|
|
|
export default defineConfig({
|
|
testDir: "./test/e2e",
|
|
fullyParallel: true,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: process.env.CI ? 2 : 0,
|
|
workers: process.env.CI ? 1 : undefined,
|
|
reporter: "list",
|
|
|
|
use: {
|
|
baseURL: process.env.PLAYWRIGHT_BASE_URL || "http://localhost:8056",
|
|
trace: "on-first-retry",
|
|
headless: process.env.PLAYWRIGHT_HEADLESS !== "false",
|
|
},
|
|
|
|
projects: [
|
|
{
|
|
name: browserEnv,
|
|
use: { ...deviceFor(browserEnv) },
|
|
},
|
|
],
|
|
}); |