feat(frontend+e2e): Dynamische row-testid fuer DataTable-Zeilen #255

Merged
niboer merged 1 commit from issue-252 into main 2026-07-06 19:14:11 +02:00
Owner

Allgemein

Altes Verhalten

E2E-Tests hatten keine stabile Moeglichkeit, einzelne DataTable-Zeilen zu selektieren. Verwendet wurden instabile Methoden wie .nth(), .first(), .last() oder textbasierte .filter({hasText}) — anfaellig fuer Sortierung, i18n-Aenderungen und doppelte Namen.

Neues Verhalten

DataTable akzeptiert optionales rowIdKey-Prop. Ist es gesetzt, erhaelt jedes <tr> ein data-testid="row-{uuid}". Der {#each}-Key wechselt vom Index auf row[rowIdKey] fuer stabileres DOM-Merging. Alle 11 DataTable-Instanzen in 7 Seiten uebergeben rowIdKey. E2E-Tests in 7 Spec-Dateien nutzen getByTestId("row-...") statt instabiler Selektoren.

Begruendung

Stabile Selektoren fuer Tabellenzeilen sind Voraussetzung fuer robuste E2E-Tests, insbesondere wenn ActionMenus in separaten Zellen liegen (Problem aus #251).

Test-Hinweise

  • npm run test (Frontend-Unit-Tests): 924 Tests bestanden
  • Vollstaendiger Integrationstest (Docker-Stack + Playwright): 56 E2E-Tests bestanden
  • Neue rowIdKey-Tests in frontend/src/tests/data-table.test.ts (4 Tests)

Checkliste

  • Korrespondierender E2E-Test in e2e/specs/ aktualisiert
### Allgemein - closes #252 ### Altes Verhalten E2E-Tests hatten keine stabile Moeglichkeit, einzelne DataTable-Zeilen zu selektieren. Verwendet wurden instabile Methoden wie `.nth()`, `.first()`, `.last()` oder textbasierte `.filter({hasText})` — anfaellig fuer Sortierung, i18n-Aenderungen und doppelte Namen. ### Neues Verhalten DataTable akzeptiert optionales `rowIdKey`-Prop. Ist es gesetzt, erhaelt jedes `<tr>` ein `data-testid="row-{uuid}"`. Der `{#each}`-Key wechselt vom Index auf `row[rowIdKey]` fuer stabileres DOM-Merging. Alle 11 DataTable-Instanzen in 7 Seiten uebergeben `rowIdKey`. E2E-Tests in 7 Spec-Dateien nutzen `getByTestId("row-...")` statt instabiler Selektoren. ### Begruendung Stabile Selektoren fuer Tabellenzeilen sind Voraussetzung fuer robuste E2E-Tests, insbesondere wenn ActionMenus in separaten Zellen liegen (Problem aus #251). ### Test-Hinweise - `npm run test` (Frontend-Unit-Tests): 924 Tests bestanden - Vollstaendiger Integrationstest (Docker-Stack + Playwright): 56 E2E-Tests bestanden - Neue rowIdKey-Tests in `frontend/src/tests/data-table.test.ts` (4 Tests) ### Checkliste - [x] Korrespondierender E2E-Test in `e2e/specs/` aktualisiert
feat(frontend+e2e): Dynamische row-testid fuer DataTable-Zeilen
All checks were successful
CI Backend / lint-backend (pull_request) Successful in 51s
CI Frontend / lint-frontend (pull_request) Successful in 1m10s
CI Meta / conventional-commit (pull_request) Successful in 1s
CI Backend / test-backend (pull_request) Successful in 1m47s
CI Frontend / test-frontend (pull_request) Successful in 42s
E2E / e2e (pull_request) Successful in 2m45s
fa91605659
closes #252

Aktuelles: E2E-Tests hatten keine stabile Moeglichkeit,
einzelne DataTable-Zeilen zu selektieren. Verwendet wurden
instabile Methoden wie .nth(), .first(), .last() oder
textbasierte .filter({hasText}) — anfaellig fuer
Sortierung, i18n-Aenderungen und doppelte Namen.

Neu: DataTable akzeptiert optionales rowIdKey-Prop. Ist es
gesetzt, erhaelt jedes <tr> ein data-testid='row-{uuid}'.
Der #each-Key wechselt vom Index auf row[rowIdKey] fuer
stabileres DOM-Merging. Alle 11 DataTable-Instanzen in 7
Seiten uebergeben rowIdKey. E2E-Tests in 7 Spec-Dateien
nutzen getByTestId('row-...') statt instabiler Selektoren.

Wichtige Aenderungen:
- data-table.svelte: +rowIdKey-Prop +data-testid +besseres Keying
- 7 Seiten: rowIdKey uebergeben
- AGENTS.md + 04-frontend-architektur.md: row-testid-Regel
- data-table.test.ts: rowIdKey-Tests ergaenzt
- 7 E2E-Specs: getByTestId('row-...') statt nth/first/last/filter
niboer merged commit 68a8a47490 into main 2026-07-06 19:14:11 +02:00
niboer deleted branch issue-252 2026-07-06 19:14:11 +02:00
Sign in to join this conversation.
No description provided.