Files
bscscore/playwright.config.ts
Frank Schwenk 65aaa92359 Add Playwright E2E testing with recorded workflows
- Add @playwright/test as dev dependency
- Create playwright.config.ts with Chrome-only testing config
- Add npm scripts: test:record, test:e2e, test:replay
- Create 13 test recordings covering:
  - 2-player and 3-player games
  - 8-ball, 9-ball, and 10-ball game types
  - Various race-to values (1, 3, 5, 7, 9) and "endlos" mode
  - Both wechselbreak (alternating) and winnerbreak rules
- Fix Infinity handling in gameService.ts and NewGameScreen.tsx
  - Parse "endlos" and "Infinity" strings as Infinity number
  - Properly serialize Infinity as string in form data
- Increase GameDetail score font size from 20vh to 40vh
- Update README.md with testing documentation:
  - Quick start guide for recording and running tests
  - Move E2E testing from "Future Improvements" (now implemented)
- Add comprehensive tests/recordings/README.md documentation

Purpose: Establishes browser automation testing infrastructure with
real workflow recordings, enabling regression testing and interaction
documentation for all game configuration combinations.
2025-10-31 14:41:36 +01:00

65 lines
1.6 KiB
TypeScript

import { defineConfig, devices } from '@playwright/test';
/**
* Playwright configuration for BSC Score browser automation
* Configured to work with local dev server on port 3000
*/
export default defineConfig({
// Test directory - where your recorded scripts live
testDir: './tests/recordings',
// Match all .ts files in the recordings directory (not just .test.ts or .spec.ts)
testMatch: '**/*.ts',
// Maximum time one test can run for
timeout: 30 * 1000,
// Test execution settings
fullyParallel: false, // Run tests sequentially to avoid conflicts
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: 1, // Run one at a time for recordings
// Reporter configuration
reporter: 'html',
// Shared settings for all tests
use: {
// Base URL for tests
baseURL: 'http://localhost:3000',
// Browser context options
trace: 'on-first-retry',
screenshot: 'only-on-failure',
// Viewport size
viewport: { width: 1280, height: 720 },
},
// Configure projects for different browsers
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
// Uncomment to add more browsers
// {
// name: 'firefox',
// use: { ...devices['Desktop Firefox'] },
// },
// {
// name: 'webkit',
// use: { ...devices['Desktop Safari'] },
// },
],
// Web server configuration - starts dev server automatically if needed
// webServer: {
// command: 'npm run dev',
// url: 'http://localhost:3000',
// reuseExistingServer: !process.env.CI,
// timeout: 120 * 1000,
// },
});