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.
This commit is contained in:
Frank Schwenk
2025-10-31 14:41:36 +01:00
parent 9175d505c2
commit 65aaa92359
22 changed files with 757 additions and 12 deletions
+1 -1
View File
@@ -120,7 +120,7 @@
color: #222;
}
.score {
font-size: 20vh;
font-size: 40vh;
font-weight: 900;
margin: 20px 0 30px 0;
line-height: 1;
+5 -3
View File
@@ -63,10 +63,12 @@ export default function NewGameScreen({
onCreateGame(finalData as any);
};
const handleRaceToNext = (raceTo: string) => {
const finalData = { ...data, raceTo };
const handleRaceToNext = (raceTo: string | number) => {
// Convert to string, handling Infinity case explicitly
const raceToStr = raceTo === Infinity ? 'Infinity' : String(raceTo);
const finalData = { ...data, raceTo: raceToStr };
// After race to, go to break rule selection
onDataChange({ raceTo });
onDataChange({ raceTo: raceToStr });
onStepChange('breakRule');
};