🔄 Build → Test → Release Workflow¶
Kompletter Ablauf von Code-Änderung bis zum fertigen Installer.
Übersicht¶
1. Bauen → Server + Client + Jury-Portal kompilieren
2. Testen → Server-Tests, Client-Tests, E2E-Tests
3. Installer → Setup-Exe mit Inno Setup erstellen
1. Bauen¶
Voraussetzungen¶
- Node.js 18+ installiert
- PostgreSQL läuft (für Server-Integration-Tests)
- Dependencies installiert:
npm installinserver/undclient/
Kompilieren¶
Das führt nacheinander aus:
1. Server: TypeScript → JavaScript (server/dist/)
2. Client: React → Static Files (client/dist/)
3. Jury Portal: React → Static Files (jury-portal/dist/)
Einzeln bauen (optional)¶
# Nur Server
cd newWebBased\server
npm run build
# Nur Client
cd newWebBased\client
npm run build
# Nur Jury Portal
cd newWebBased\jury-portal
npm run build
2. Testen¶
2a. Server-Tests (Jest)¶
- ~44 Test-Suites, ~1.309 Tests
- Unit-Tests (Business-Logik, Utilities, Middleware)
- Integration-Tests (alle API-Endpunkte gegen Test-Datenbank)
- Voraussetzung: PostgreSQL läuft, Test-DB wird automatisch erstellt
# Mit Coverage-Report
npm test -- --coverage
# Nur Unit-Tests
npm test -- tests/unit
# Nur Integration-Tests
npm test -- tests/integration
2b. Client-Tests (Vitest)¶
- ~30 Test-Dateien, ~786 Tests
- Component-Tests, Hook-Tests, Utility-Tests
- Integration-Tests mit MSW (Mock Service Worker)
- Keine laufenden Server nötig
2c. E2E-Tests (Playwright)¶
Voraussetzung: Server UND Client müssen laufen!
# Terminal 1: Server starten
cd newWebBased\server
npm run dev
# Terminal 2: Client starten
cd newWebBased\client
npm run dev
# Terminal 3: Tests ausführen
cd newWebBased\client
npx playwright test
- 18 Spec-Dateien + 3 Setup-Dateien = 284 Tests
- Setup erstellt Testdaten (Event A via API, Event B via GymNet-Import)
- Tests prüfen alle kritischen Workflows
- Teardown räumt automatisch auf
# Nur bestimmte Tests
npx playwright test e2e/tests/score-entry.spec.ts
# Mit sichtbarem Browser
npx playwright test --headed
# Interaktiver Debug-Modus
npx playwright test --debug
# HTML-Report öffnen
npx playwright show-report
E2E Test-Kategorien¶
| Kategorie | Tests | Beschreibung |
|---|---|---|
| Navigation | 16 | Smoke-Tests aller Routen |
| Stammdaten (6×) | 64 | CRUD für Regionen, Vereine, etc. |
| Event-Management | 13 | Events, Wettkämpfe, Teilnehmer |
| Wettbewerbe | 12 | Wettkämpfe, Riegen, Zuordnung |
| Import | 17 | GymNet-Import, DB-Wizard, Seeding |
| Score-Eingabe | 11 | Wertungseingabe Damen/Herren |
| Ergebnisse | 14 | Rankings, Medaillenspiegel |
| Platzierungen | 17 | Tie-Breaking, Score-Änderungen |
| Statistik | 19 | Score-Counts, Duplikate, Isolation |
| Jury-Portal | 26 | Navigation, Scores, Live-Updates |
| Status | 19 | Riegen-/Wettkampfstatus-Workflows |
| PDF-Export | 13 | PDF-Generierung für 6 Seiten |
| Lasttests | 17 | Concurrent Writes, Benchmarks |
2d. Alle Tests auf einmal¶
# Schritt 1: Server-Tests
cd newWebBased\server
npm test
# Schritt 2: Client-Tests
cd ..\client
npx vitest run
# Schritt 3: E2E-Tests (Server + Client müssen laufen)
npx playwright test
Tipp: Server- und Client-Tests können parallel laufen (verschiedene Terminals). E2E-Tests brauchen laufende Dev-Server.
3. Installer bauen¶
Voraussetzungen¶
- Inno Setup 6 installiert
- Anwendung gebaut (Schritt 1)
- Tests bestanden (Schritt 2)
Installer erstellen¶
Optionen¶
# Nur Installer, ohne erneuten Build
.\build-installer.ps1 -SkipBuild
# Nur Installer, ohne Downloads (wenn bereits vorhanden)
.\build-installer.ps1 -SkipBuild -SkipDownload
# Mit spezifischer Node.js-Version
.\build-installer.ps1 -NodeVersion "20.11.1"
Output¶
Beispiel: TurnFix-Setup-2.0.0-build42-a1b2c3d.exe
Siehe Installer-Build-Anleitung für alle Details.
Kompletter Release-Ablauf (Checkliste)¶
☐ 1. Code-Änderungen committen
☐ 2. npm run build:all (im server-Verzeichnis)
☐ 3. npm test (Server-Tests)
☐ 4. npx vitest run (Client-Tests)
☐ 5. Dev-Server starten (server + client)
☐ 6. npx playwright test (E2E-Tests)
☐ 7. cd setup\installer
☐ 8. .\build-installer.ps1 -SkipBuild (Installer erstellen)
☐ 9. Output-Datei testen (Installation auf sauberem System)
☐ 10. Git-Tag erstellen: git tag v2.x.x
Aktuelle Testzahlen¶
| Bereich | Dateien | Tests |
|---|---|---|
| Server (Jest) | ~44 | ~1.309 |
| Client (Vitest) | ~30 | ~786 |
| E2E (Playwright) | 21 | 284 |
| Gesamt | ~95 | ~2.380 |
Fehlerbehebung¶
Server-Tests schlagen fehl mit Prisma-Lock-Error¶
Der Server darf nicht gleichzeitig laufen, wenn Server-Tests ausgeführt werden (beide nutzen die gleiche Prisma-Engine-DLL).
# Server stoppen, dann Tests
Get-Process -Name "node" -ErrorAction SilentlyContinue | Stop-Process -Force
cd newWebBased\server
npm test
E2E-Tests brauchen Setup-Daten¶
Wenn E2E-Tests mit "state file not found" fehlschlagen, wurde der Setup-Schritt nicht ausgeführt:
Port 3001 blockiert¶
Nach einem Serverabsturz kann der Port blockiert sein: