chore(frontend+e2e): fehlende testids an Dashboard, Sidebar, Toast und Personenliste ergaenzt #264

Merged
niboer merged 7 commits from issue-260 into main 2026-07-08 17:40:18 +02:00
Owner

Allgemein

Issue #260 — Fehlende testids an Dashboard, Sidebar, Toast und Personenliste ergaenzen
Issue #261 — Dashboard headings + Sidebar userinfo ersetzt
Branch: issue-260 (7 Commits)

Altes Verhalten

  • Dashboard-Ueberschriften ("Naechste Feier", "Offene RSVPs", "Personen") hatten keine data-testid, E2E-Tests nutzten getByRole('heading')
  • Sidebar-Userinfo (Name, Email, Rolle, Session) nur via getByText erreichbar
  • 30+ duplizierte Inline-Success-/Error-Banner (border-success, border-destructive) ohne data-testid, verteilt ueber 9 Seiten
  • Personen- und Event-Gruppen-Header ohne testid fuer E2E-Selektoren
  • error-alert.svelte wurde direkt in 11 Dateien importiert

Neues Verhalten

  • Toast-Komponente ($lib/components/toast.svelte) mit 3 Varianten:
    • success — border-success/50 bg-success/10 (data-testid: toast-success)
    • primary — border-primary/50 bg-primary/10 (data-testid: toast-success)
    • error — border-destructive/50 bg-destructive/10 inkl. Icon + onRetry (data-testid: toast-error)
  • Saemtliche 30+ Inline-Banner durch <Toast> ersetzt, error-alert.svelte ist interner Wrapper
  • Dashboard: heading-next-event, heading-open-rsvps, heading-persons
  • Sidebar: text-sidebar-name, text-sidebar-email, text-sidebar-role, text-sidebar-session
  • Personen/Events: heading-group-{slug}, text-member-count-{id} auf Gruppen-Headern
  • E2E-Tests: getByTestId statt getByText/getByRole in base, persons.max.mustermann, group-create

Begruendung

Stabilere E2E-Selektoren, konsistente Darstellung von Erfolgs-/Fehlermeldungen, Eliminierung von dupliziertem Inline-Markup.

Commit-Uebersicht

Commit Scope Aenderung
32bee86 feat(frontend) Toast-Komponente mit success/primary/error, error-alert als Wrapper
47ddcc4 chore(frontend) testids an Dashboard, Sidebar, Gruppen-Header
8f055eb refactor(frontend) Alle Inline-Banner durch Toast ersetzt (9 Seiten)
16b1163 test(e2e) E2E-Tests auf getByTestId umgestellt
af9e2b2 chore PROJECT_STATE.md aktualisiert
b15b1a3 refactor(frontend) ErrorAlert-Imports durch direkte Toast-Nutzung ersetzt
b90a58f docs(frontend) AGENTS.md Komponentenliste ergaenzt

Test-Hinweise

  • npm run test im Frontend: 925 Tests, alle gruen
  • npm run lint im Frontend: eslint + check-testid pass
  • Integrationstests via npm run test:integration:parallel: erfolgreich (alle passed)

Checkliste

  • Lint erfolgreich
  • scripts/check-testid.mjs erfolgreich
  • Unit-Tests gruen (925/925)
  • Integrationstests gruen
### Allgemein Issue #260 — Fehlende testids an Dashboard, Sidebar, Toast und Personenliste ergaenzen Issue #261 — Dashboard headings + Sidebar userinfo ersetzt Branch: `issue-260` (7 Commits) ### Altes Verhalten - Dashboard-Ueberschriften ("Naechste Feier", "Offene RSVPs", "Personen") hatten keine `data-testid`, E2E-Tests nutzten `getByRole('heading')` - Sidebar-Userinfo (Name, Email, Rolle, Session) nur via `getByText` erreichbar - 30+ duplizierte Inline-Success-/Error-Banner (border-success, border-destructive) ohne data-testid, verteilt ueber 9 Seiten - Personen- und Event-Gruppen-Header ohne testid fuer E2E-Selektoren - `error-alert.svelte` wurde direkt in 11 Dateien importiert ### Neues Verhalten - **Toast-Komponente** (`$lib/components/toast.svelte`) mit 3 Varianten: - `success` — border-success/50 bg-success/10 (data-testid: `toast-success`) - `primary` — border-primary/50 bg-primary/10 (data-testid: `toast-success`) - `error` — border-destructive/50 bg-destructive/10 inkl. Icon + onRetry (data-testid: `toast-error`) - Saemtliche 30+ Inline-Banner durch `<Toast>` ersetzt, `error-alert.svelte` ist interner Wrapper - Dashboard: `heading-next-event`, `heading-open-rsvps`, `heading-persons` - Sidebar: `text-sidebar-name`, `text-sidebar-email`, `text-sidebar-role`, `text-sidebar-session` - Personen/Events: `heading-group-{slug}`, `text-member-count-{id}` auf Gruppen-Headern - E2E-Tests: `getByTestId` statt `getByText`/`getByRole` in base, persons.max.mustermann, group-create ### Begruendung Stabilere E2E-Selektoren, konsistente Darstellung von Erfolgs-/Fehlermeldungen, Eliminierung von dupliziertem Inline-Markup. ### Commit-Uebersicht | Commit | Scope | Aenderung | |--------|-------|-----------| | `32bee86` | feat(frontend) | Toast-Komponente mit success/primary/error, error-alert als Wrapper | | `47ddcc4` | chore(frontend) | testids an Dashboard, Sidebar, Gruppen-Header | | `8f055eb` | refactor(frontend) | Alle Inline-Banner durch Toast ersetzt (9 Seiten) | | `16b1163` | test(e2e) | E2E-Tests auf getByTestId umgestellt | | `af9e2b2` | chore | PROJECT_STATE.md aktualisiert | | `b15b1a3` | refactor(frontend) | ErrorAlert-Imports durch direkte Toast-Nutzung ersetzt | | `b90a58f` | docs(frontend) | AGENTS.md Komponentenliste ergaenzt | ### Test-Hinweise - `npm run test` im Frontend: 925 Tests, alle gruen - `npm run lint` im Frontend: eslint + check-testid pass - Integrationstests via `npm run test:integration:parallel`: erfolgreich (alle passed) ### Checkliste - [x] Lint erfolgreich - [x] `scripts/check-testid.mjs` erfolgreich - [x] Unit-Tests gruen (925/925) - [x] Integrationstests gruen
refs #260

Aktuelles: Erfolgs- und Fehlermeldungen als dupliziertes Inline-Markup
Neu: Toast.svelte mit 3 Varianten (success/primary/error), data-testid
fuer E2E-taugliche Selektoren. error-alert.svelte wird zum Wrapper.

Wichtige Aenderung: error-alert.svelte importiert nun Toast
intern und delegiert an variant=error.
refs #260

Aktuelles: h3-Ueberschriften, Sidebar-Userinfo und Gruppen-Header
ohne data-testid
Neu: heading-next-event, heading-open-rsvps, heading-persons im
Dashboard; text-sidebar-name, -email, -role, -session in der Sidebar;
heading-group-* und text-member-count-* an Personen- und
Event-Gruppen-Headern
refs #260

Aktuelles: 30+ duplizierte Inline-Banner mit border-success/error
Klassen, ohne data-testid
Neu: Einheitliche Toast-Komponente mit data-testid an allen
Stellen. account-Seite nutzt variant=primary fuer
Stammdaten/Kontaktdaten/Sicherheits-Aktionen.
Alle error-Banner via Toast variant=error (oder ErrorAlert-Wrapper)
refs #260

Aktuelles: Dashboard-Ueberschriften und Sidebar-Userinfo via
unzuverlaessigen getByRole/getByText-Selektoren
Neu: getByTestId fuer heading-next-event, -open-rsvps, -persons,
text-sidebar-name, -email, -role, -session.
Erfolgsmeldungen via getByTestId('toast-success') statt text="
refs #260

Aktuelles: Fehlende testid-Eintraege
Neu: Issue #260 als done mit Toast-Komponente und testids
refs #260

Aktuelles: 11 Svelte-Dateien importierten error-alert.svelte (Wrapper)
Neu: Alle Imports und Usages durch Toast variant=error ersetzt.
error-alert.svelte bleibt als Wrapper fuer Kompatibilitaet bestehen.
Unit-Tests auf Toast-Import aktualisiert.
docs(frontend): AGENTS.md Komponentenliste um Toast ergaenzt
All checks were successful
CI Backend / lint-backend (pull_request) Successful in 54s
CI Frontend / lint-frontend (pull_request) Successful in 1m12s
CI Meta / conventional-commit (pull_request) Successful in 1s
E2E / e2e (pull_request) Successful in 3m33s
CI Backend / test-backend (pull_request) Successful in 1m49s
CI Frontend / test-frontend (pull_request) Successful in 42s
b90a58fb67
refs #260

Aktuelles: error-alert in App-Template-Komponenten aufgefuehrt
Neu: toast ersetzt error-alert in der Auflistung.
error-alert.svelte existiert noch als interner Wrapper.
niboer merged commit 49904f11af into main 2026-07-08 17:40:18 +02:00
niboer deleted branch issue-260 2026-07-08 17:40:18 +02:00
Sign in to join this conversation.
No description provided.