39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
/// <reference types="node" />
|
|
import { defineConfig, type ReporterDescription } from '@playwright/test';
|
|
import { BASE_URL as baseURL } from './tests/api/paths';
|
|
|
|
/**
|
|
* Playwright config for the API integration suite (tests/api).
|
|
*
|
|
* The suite only uses the `request` fixture — no browser is launched. It expects
|
|
* a running umami server (normally started by scripts/test-api.ts via
|
|
* docker-compose.test.yml) at PLAYWRIGHT_BASE_URL or http://localhost:3100.
|
|
*/
|
|
|
|
const reporters: ReporterDescription[] = [['list'], ['./tests/api/coverage/reporter.ts']];
|
|
|
|
if (process.env.CI) {
|
|
reporters.push(['html', { open: 'never', outputFolder: 'playwright-report/api' }]);
|
|
}
|
|
|
|
export default defineConfig({
|
|
testDir: './tests/api',
|
|
testMatch: '**/*.spec.ts',
|
|
outputDir: 'test-results/api',
|
|
// Specs share one seeded database and a few mutable globals (the shared users,
|
|
// the global 2FA requirement toggled by admin.spec.ts), so they must run serially.
|
|
fullyParallel: false,
|
|
workers: 1,
|
|
// Specs are deterministic and share coverage state; retries would only hide flakes.
|
|
retries: 0,
|
|
forbidOnly: !!process.env.CI,
|
|
timeout: 30_000,
|
|
globalSetup: './tests/api/global-setup.ts',
|
|
reporter: reporters,
|
|
use: {
|
|
baseURL,
|
|
trace: 'off',
|
|
},
|
|
projects: [{ name: 'api' }],
|
|
});
|