chore(frontend): fehlende testids an Dashboard, Sidebar, Toast und Personenliste ergaenzen #260

Closed
opened 2026-07-06 21:50:33 +02:00 by niboer · 2 comments
Owner

Beschreibung

An mehreren Stellen im Frontend fehlen data-testid-Attribute, die von E2E-Tests verwendet werden koennten. Diese sollen nachgeruestet werden.

Betroffene Bereiche

Dashboard (/app/dashboard)

Element testid-Vorschlag
Ueberschrift "Naechste Feier" heading-next-event
Ueberschrift "Offene RSVPs" heading-open-rsvps
Ueberschrift "Personen" (Dashboard-Widget) heading-persons

Sidebar (+layout.svelte)

Element testid-Vorschlag
Logout-Link btn-logout
User-Name text-sidebar-name
User-Email text-sidebar-email
User-Rolle text-sidebar-role
Session-Zeit text-sidebar-session

Toast/Success-Meldungen

Element testid-Vorschlag
Success-Toast nach Aktion toast-success

Personenliste — Gruppen-Header

Gruppen-Namen und Mitglieder-Counts in der gruppierten Personen-Ansicht haben keine testids. Dies ermoeglicht stabilere E2E-Selektoren als die aktuellen text=-Selektoren.

Abgrenzung

Nicht in diesem Issue:

  • Event-Seiten und Guests — bereits vollstaendig mit testids versehen
  • ActionMenu — bereits vollstaendig
  • Consent-Dialog — bereits vollstaendig
  • Personen-Anlegen/Bearbeiten Modal — bereits vollstaendig

Checkliste

  • Dashboard-Widget-Ueberschriften mit data-testid versehen
  • Sidebar: Logout, Userinfo, Session mit data-testid versehen
  • Toast-Komponente mit data-testid fuer Success-Texte versehen
  • Personenliste: Gruppen-Header mit data-testid versehen
  • npm run lint erfolgreich
  • scripts/check-testid.mjs erfolgreich
## Beschreibung An mehreren Stellen im Frontend fehlen `data-testid`-Attribute, die von E2E-Tests verwendet werden koennten. Diese sollen nachgeruestet werden. ## Betroffene Bereiche ### Dashboard (`/app/dashboard`) | Element | testid-Vorschlag | |---------|-----------------| | Ueberschrift "Naechste Feier" | `heading-next-event` | | Ueberschrift "Offene RSVPs" | `heading-open-rsvps` | | Ueberschrift "Personen" (Dashboard-Widget) | `heading-persons` | ### Sidebar (`+layout.svelte`) | Element | testid-Vorschlag | |---------|-----------------| | Logout-Link | `btn-logout` | | User-Name | `text-sidebar-name` | | User-Email | `text-sidebar-email` | | User-Rolle | `text-sidebar-role` | | Session-Zeit | `text-sidebar-session` | ### Toast/Success-Meldungen | Element | testid-Vorschlag | |---------|-----------------| | Success-Toast nach Aktion | `toast-success` | ### Personenliste — Gruppen-Header Gruppen-Namen und Mitglieder-Counts in der gruppierten Personen-Ansicht haben keine testids. Dies ermoeglicht stabilere E2E-Selektoren als die aktuellen `text=`-Selektoren. ## Abgrenzung Nicht in diesem Issue: - Event-Seiten und Guests — bereits vollstaendig mit testids versehen - ActionMenu — bereits vollstaendig - Consent-Dialog — bereits vollstaendig - Personen-Anlegen/Bearbeiten Modal — bereits vollstaendig ## Checkliste - [ ] Dashboard-Widget-Ueberschriften mit `data-testid` versehen - [ ] Sidebar: Logout, Userinfo, Session mit `data-testid` versehen - [ ] Toast-Komponente mit `data-testid` fuer Success-Texte versehen - [ ] Personenliste: Gruppen-Header mit `data-testid` versehen - [ ] `npm run lint` erfolgreich - [ ] `scripts/check-testid.mjs` erfolgreich
Author
Owner

Blockiert #261 (E2E-Tests auf getByTestId umstellen).

Blockiert #261 (E2E-Tests auf getByTestId umstellen).
Author
Owner

Implementierungsplan (naechster Schritt)

Nach Analyse und Besprechung ergibt sich folgender Plan:

Neue Komponente: Toast

frontend/src/lib/components/toast.svelte ersetzt sowohl die bisherigen Inline-Success-Banner als auch error-alert.svelte.

Props:
  message   (string, required)
  details   (string?, optional)
  variant   ("success" | "primary" | "error", default "success")
  onRetry   (() => void?, optional, nur bei error)

data-testid:
  - "toast-success" fuer variant success/primary
  - "toast-error"   fuer variant error

error-alert.svelte wird zum Re-Export-Wrapper auf <Toast variant="error"> umgestellt, damit bestehende Imports nicht brechen.

Betroffene Dateien (15 Aenderungen + 1 neue)

Neue Komponente:

  • frontend/src/lib/components/toast.svelte

Frontend-Komponenten:

  • frontend/src/lib/components/error-alert.svelte — Wrapper auf Toast
  • frontend/src/lib/components/sidebar.svelte — text-sidebar-name, -email, -role, -session

Seiten (testids + Banner -> Toast):

  • dashboard/+page.svelte — heading-next-event, -open-rsvps, -persons
  • persons/+page.svelte — heading-group-* + member-count
  • persons/[personId]/+page.svelte
  • events/[eventId]/+page.svelte — 2x heading-group-* + 21 Banner
  • account/+page.svelte — 8 Banner/Status
  • groups/+page.svelte
  • groups/[groupId]/+page.svelte
  • templates/+page.svelte
  • deletion-requests/+page.svelte

E2E-Tests:

  • base.spec.ts — getByTestId fuer headings + sidebar
  • persons.max.mustermann.spec.ts — getByTestId fuer toast-success
  • group-create.spec.ts — getByTestId fuer toast-success

Git-Commits

  1. feat(frontend): Toast-Komponente mit success/primary/error-variant
  2. chore(frontend): testids an Dashboard, Sidebar, Gruppen-Header
  3. refactor(frontend): saemtliche Inline-Banner durch Toast-Komponente ersetzen
  4. test(e2e): testids in base, persons und group-create E2E-Tests nutzen
  5. chore: PROJECT_STATE.md aktualisiert

Dokumentation

Die Toast-Komponente wird in docs/design/04-frontend-architektur.md im Abschnitt "App-Template-Komponenten" dokumentiert.

## Implementierungsplan (naechster Schritt) Nach Analyse und Besprechung ergibt sich folgender Plan: ### Neue Komponente: Toast `frontend/src/lib/components/toast.svelte` ersetzt sowohl die bisherigen Inline-Success-Banner als auch `error-alert.svelte`. ``` Props: message (string, required) details (string?, optional) variant ("success" | "primary" | "error", default "success") onRetry (() => void?, optional, nur bei error) data-testid: - "toast-success" fuer variant success/primary - "toast-error" fuer variant error ``` `error-alert.svelte` wird zum Re-Export-Wrapper auf `<Toast variant="error">` umgestellt, damit bestehende Imports nicht brechen. ### Betroffene Dateien (15 Aenderungen + 1 neue) **Neue Komponente:** - `frontend/src/lib/components/toast.svelte` **Frontend-Komponenten:** - `frontend/src/lib/components/error-alert.svelte` — Wrapper auf Toast - `frontend/src/lib/components/sidebar.svelte` — text-sidebar-name, -email, -role, -session **Seiten (testids + Banner -> Toast):** - `dashboard/+page.svelte` — heading-next-event, -open-rsvps, -persons - `persons/+page.svelte` — heading-group-* + member-count - `persons/[personId]/+page.svelte` - `events/[eventId]/+page.svelte` — 2x heading-group-* + 21 Banner - `account/+page.svelte` — 8 Banner/Status - `groups/+page.svelte` - `groups/[groupId]/+page.svelte` - `templates/+page.svelte` - `deletion-requests/+page.svelte` **E2E-Tests:** - `base.spec.ts` — getByTestId fuer headings + sidebar - `persons.max.mustermann.spec.ts` — getByTestId fuer toast-success - `group-create.spec.ts` — getByTestId fuer toast-success ### Git-Commits 1. `feat(frontend): Toast-Komponente mit success/primary/error-variant` 2. `chore(frontend): testids an Dashboard, Sidebar, Gruppen-Header` 3. `refactor(frontend): saemtliche Inline-Banner durch Toast-Komponente ersetzen` 4. `test(e2e): testids in base, persons und group-create E2E-Tests nutzen` 5. `chore: PROJECT_STATE.md aktualisiert` ### Dokumentation Die Toast-Komponente wird in `docs/design/04-frontend-architektur.md` im Abschnitt "App-Template-Komponenten" dokumentiert.
Sign in to join this conversation.
No description provided.