feat(frontend+e2e): Dynamische row-testid fuer DataTable-Zeilen #252
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner#252
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
E2E-Tests, die auf bestimmte Tabellenzeilen zugreifen muessen (z. B. um ein ActionMenu in einer bestimmten Zeile zu oeffnen), haben derzeit keine stabile Selektionsmoeglichkeit:
getByRole('row').filter({ hasText: 'Name' })) koppelt an Anzeigenamen, ist anfaellig fuer i18n-Aenderungen, Umlaut-Probleme und doppelte Namen.nth(N)) ist zerbrechlich bei Sortierung oder wechselnder Reihenfolge.locator('..')greift nur das<td>, nicht die ganze<tr>— dadurch wird das ActionMenu in einer separaten Zelle nicht gefundenKonkret aufgetreten in #251: Der invoice-recipient E2E-Test musste von
.locator('..')aufgetByRole('row').filter({ hasText })umgestellt werden, weil der ActionMenu-Button in einer anderen Tabellenzelle liegt.Loesungsvorschlag
1. DataTable-Komponente erweitern
Neues Prop
rowIdKey(string, optional) — gibt den Feldnamen der ID an:Im
<tr>wird daraus ein stabiler data-testid generiert:2. Nutzung in allen 7 Seiten mit DataTable
groups/[groupId](2x)GroupMemberWithPersonpersonIdgroups/+pageGroupgroupIdpersons/+pagePersonpersonIdevents/+pageEventeventIdevents/[eventId](4x)EventGuest,EventRolepersonId,roleIdtemplates/+pageTemplatetemplateIddeletion-requests/+pageAdminDeletionRequestrequestId3. Nutzung in E2E-Tests
4. Dokumentation
AGENTS.md: Regel fuer row-testid in DataTables ergaenzen (analog zur bestehenden ActionMenu-Regel)docs/design/04-frontend-architektur.md:rowIdKey-Prop dokumentierenVorteile
Dateien
frontend/src/lib/components/data-table.svelte<tr>AGENTS.mddocs/design/04-frontend-architektur.mdfeat(e2e+frontend): Dynamische row-testid fuer DataTable-Zeilento feat(frontend+e2e): Dynamische row-testid fuer DataTable-Zeilen