test(frontend): Coverage auf 70%+ heben (#274) #275

Merged
niboer merged 7 commits from issue-274 into main 2026-07-08 22:36:49 +02:00
Owner

closes #274

Altes Verhalten

Coverage bei 50.68% Statements, 52.33% Lines. 56 Testdateien mit 1103 Tests. Thresholds bei 45/30/33/47.

Neues Verhalten

Coverage durch 3 Phasen (A: generated.ts exkludieren, B/C: Route+Server-Tests, D: Event-Detail-Tests) auf 72.94% Statements, 77.77% Lines gesteigert. 72 Testdateien mit 1212 Tests. Thresholds auf 72/59/65/77 angehoben.

Aenderungen im Detail

  • generated.ts (Orval) aus Coverage ausgeschlossen
  • Landing-Page, App-Layout, App-Error server-seitig getestet
  • UI-Komponenten (select, table) getestet
  • Server-Actions fuer persons, groups, account, deletion-requests getestet
  • Event-Detail Server-Actions (17 Aktionen) getestet
  • Event-Detail Page (Tabs, Payment, Formular, Berechtigungen, Self-Service) erweitert getestet
  • fetch-client.ts getestet
  • auth.ts private Funktionen exportiert fuer bessere Testbarkeit

Checkliste

  • use:testid an neuen <button>, <a>, <form>-Elementen gesetzt? (keine neuen UI-Elemente)
  • Korrespondierender E2E-Test in e2e/specs/ angelegt? (keine neuen Routen)
closes #274 ### Altes Verhalten Coverage bei 50.68% Statements, 52.33% Lines. 56 Testdateien mit 1103 Tests. Thresholds bei 45/30/33/47. ### Neues Verhalten Coverage durch 3 Phasen (A: generated.ts exkludieren, B/C: Route+Server-Tests, D: Event-Detail-Tests) auf 72.94% Statements, 77.77% Lines gesteigert. 72 Testdateien mit 1212 Tests. Thresholds auf 72/59/65/77 angehoben. ### Aenderungen im Detail - `generated.ts` (Orval) aus Coverage ausgeschlossen - Landing-Page, App-Layout, App-Error server-seitig getestet - UI-Komponenten (select, table) getestet - Server-Actions fuer persons, groups, account, deletion-requests getestet - Event-Detail Server-Actions (17 Aktionen) getestet - Event-Detail Page (Tabs, Payment, Formular, Berechtigungen, Self-Service) erweitert getestet - fetch-client.ts getestet - auth.ts private Funktionen exportiert fuer bessere Testbarkeit ### Checkliste - [ ] `use:testid` an neuen `<button>`, `<a>`, `<form>`-Elementen gesetzt? (keine neuen UI-Elemente) - [ ] Korrespondierender E2E-Test in `e2e/specs/` angelegt? (keine neuen Routen)
refs #274

Aktuelles: Pages haben 0% Svelte-Template-Coverage (nur Server-Logik + statische Analyse getestet)
Neu: 5 Page-Component-Rendering-Tests (jsdom) als Proof-of-Concept + Hybrid-Utility

Phase 1a umfasst:
- Landing-Page (routes/+page.svelte): Login/Dashboard-Umschaltung, Backend-Health, Footer
- Event-Erstellung (events/new): Formularfelder, Fehleranzeige, PageHeader
- Template-Erstellung (templates/new): Formular, hidden input, Fehler
- Template-Bearbeitung (templates/[templateId]): Daten-Vorbefuellung, Fehler, Toast
- Error-Seite (app/+error): Status-Code, Fehlertext, Dashboard-Link

Neue Utility: renderPage(Component, { data, form? }) in test/helpers/render-page.ts
- Hybrider Ansatz: shared Helper + per-Test vi.mock() in der Testdatei
- Exportiert via test/index.ts
refs #274

Aktuelles: Phase 1b deckt 4 mittlere Pages ab
Neu: 34 Rendering-Tests fuer Dashboard, Events-Liste, Templates-Liste, Deletion-Requests

- Dashboard: Karten (Naechste Feier, Offene RSVPs, Personen), EmptyState, Fehler-Toast, Links
- Events-Liste: DataTable, Create-Button, Hinweistext, rowIdKey, error/empty-Zustaende
- Templates-Liste: DataTable, ActionMenu, Delete-Dialog, Erfolgs/Fehler-Toast, Feldzaehler
- Deletion-Requests: DataTable, StatusBadges, ActionMenu-Nur-bei-Pending, Confirm-Dialog, i18n-Mock

renderPage-Helper bleibt unveraendert (Hybrid-Ansatz)
refs #274

Aktuelles: Komplexe Pages mit i18n, .store, Dialogen, ActionMenus
Neu: 40 Rendering-Tests fuer 4 komplexe Pages

- Groups-Liste: CRUD-Dialoge, ActionMenu mit Permission-Check, DataTable
- Groups-Detail: Mitglieder-DataTable, Pending-Requests, Consent, Invoice-Badge, Dialoge
- Persons-Liste: Haushalts-Gruppierung, Filter-Buttons, Extended-View-Toggle, i18n
- Person-Detail: Eigenes/Delegiertes-Profil, Einladungen, Consent-Card, Archivierung

Muster fuer komplexe Pages etabliert:
- i18n-Mock via vi.hoisted() + vi.mock()
- .data.userPermissions via mutables Objekt
- Complexe Sub-Komponenten (PersonEditModal) werden automatisch mitgerendert
refs #274

Aktuelles: letzte 2 komplexe Pages des Issues abgedeckt
Neu: 19 Rendering-Tests

- Account-Page (275 Z): Stammdaten/Kontakt-Formulare, Consent-Trigger, Sicherheits-Buttons,
  Export, Deletion-Request, Sprachauswahl, i18n-Mock, mutable .data, ConsentDialog
- Event-Detail (1322 Z, komplex): PageHeader, Tab-Navigation, Status-Badge, Publish-Button,
  Guestlist mit Haushalts-Gruppierung, Error-State; .url-Mock via mutable Objekt

Phase 1c insgesamt: 59 Tests fuer 6 komplexe Pages
closes #274

Aktuelles: Coverage bei 50.68% Stmts, fehlende Tests in action-menu, data-table, auth.ts, form.ts, testid.ts, session, i18n
Neu: 40 neue Tests in 7 Dateien + 2 erweiterte. Coverage 63.54% Stmts. Thresholds auf 63/50/55/65 angehoben. auth.ts private Funktionen exportiert fuer Testbarkeit.
refs #274

Aktuelles: Coverage bei 67.68% Stmts. Fehlende Tests fuer Landing Page, App-Layout, Server-Actions (persons, groups, account, deletion-requests), UI-Komponenten (select, table).
Neu: 8 neue Testdateien mit 43 Tests. Coverage 69.87% Stmts. Thresholds auf 69/55/62/74 angehoben.
test(frontend): Coverage Phase D - Event-Detail-Tests und fetch-client (#274)
All checks were successful
CI Backend / lint-backend (pull_request) Successful in 53s
CI Docs Only / lint-backend (pull_request) Successful in 1s
CI Docs Only / test-backend (pull_request) Successful in 1s
CI Docs Only / lint-frontend (pull_request) Successful in 1s
CI Docs Only / test-frontend (pull_request) Successful in 2s
CI Docs Only / e2e (pull_request) Successful in 0s
CI Frontend / lint-frontend (pull_request) Successful in 1m12s
CI Meta / conventional-commit (pull_request) Successful in 2s
E2E / e2e (pull_request) Successful in 3m33s
CI Backend / test-backend (pull_request) Successful in 2m54s
CI Frontend / test-frontend (pull_request) Successful in 1m56s
4cc537d8fa
refs #274

Aktuelles: Coverage bei 69.87% Stmts. Fehlende Tests fuer Event-Detail Server-Actions, Event-Detail Page-Tabs (Payment, Formular, Berechtigungen, Self-Service), fetch-client.
Neu: 2 neue Testdateien + Event-Detail Component-Tests erweitert. Coverage 72.94% Stmts. Thresholds auf 72/59/65/77 angehoben.
niboer merged commit ccb5c3cb61 into main 2026-07-08 22:36:49 +02:00
niboer deleted branch issue-274 2026-07-08 22:36:49 +02:00
Sign in to join this conversation.
No description provided.