- 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.
65 lines
1.6 KiB
TypeScript
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,
|
|
// },
|
|
});
|
|
|