fix: Navigation aufteilen, statt sie weiter zu dehnen

Mit dem dreizehnten Eintrag verschluckte die Leiste erneut Punkte am
rechten Rand — nach M6 zum zweiten Mal. Das Problem ist nicht die Breite,
sondern die Vermischung: Einrichtung und Verwaltung sucht man nicht beim
Arbeiten. Alltag bleibt in der Leiste, alles andere liegt hinter "Mehr".

Ein <details> statt eines Menues aus Skript: Es klappt ohne JavaScript
auf und braucht keine Zustandsverwaltung.

Zurueckgezogene Tokens stehen jetzt unten. Was noch Zugang hat, ist das,
wonach man sucht.

Zwei E2E-Tests greifen den neuen Weg ueber "Mehr" auf. Ein dritter wartet
das Neuladen ab, bevor er navigiert — die Meldung kommt frueher als die
fertige Liste, und Chromium bricht die Navigation sonst ab.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-12 18:52:35 +02:00
co-authored by Claude Opus 5
parent 2e57713a8e
commit 7919149879
4 changed files with 78 additions and 11 deletions
+7 -1
View File
@@ -50,7 +50,11 @@ test.describe('Anmeldung', () => {
await page.getByRole('button', { name: 'Mit Passwort anmelden' }).click()
await expect(page.getByRole('heading', { name: /Guten Tag/ })).toBeVisible()
// exact, weil die Startseite zusätzlich einen Link "Bereiche verwalten" hat.
// Alltagspunkte stehen in der Leiste, Einrichtung liegt hinter "Mehr".
await expect(page.getByRole('link', { name: 'Aufgaben', exact: true })).toBeVisible()
await expect(page.getByRole('link', { name: 'Bereiche', exact: true })).toBeHidden()
await page.getByText('Mehr', { exact: true }).click()
await expect(page.getByRole('link', { name: 'Bereiche', exact: true })).toBeVisible()
await page.getByTitle('Abmelden').click()
@@ -64,6 +68,8 @@ test.describe('Anmeldung', () => {
await page.getByRole('button', { name: 'Mit Passwort anmelden' }).click()
await expect(page.getByRole('heading', { name: /Guten Tag/ })).toBeVisible()
// Das Protokoll liegt hinter "Mehr" – aufklappen, dann hin.
await page.getByText('Mehr', { exact: true }).click()
await page.getByRole('link', { name: 'Protokoll' }).click()
await expect(page.getByRole('heading', { name: 'Protokoll' })).toBeVisible()
})
+4
View File
@@ -52,6 +52,10 @@ test.describe('Aufgaben', () => {
await zeile.getByLabel('Einsortieren nach').selectOption(bereich!.id)
await expect(page.getByText(`liegt jetzt in ${bereich!.name}`)).toBeVisible()
// Die Meldung kommt, bevor das Neuladen der Liste fertig ist. Wer jetzt
// navigiert, bricht es ab — und Chromium meldet ERR_ABORTED.
await page.waitForLoadState('networkidle')
// Aus der Inbox ist sie damit verschwunden.
await page.goto('/inbox')
await expect(page.locator('li').filter({ hasText: titel })).toHaveCount(0)