diff --git a/gerbil-manager-web/e2e/stammbaum.spec.ts b/gerbil-manager-web/e2e/stammbaum.spec.ts index fa624d9..2eac21b 100644 --- a/gerbil-manager-web/e2e/stammbaum.spec.ts +++ b/gerbil-manager-web/e2e/stammbaum.spec.ts @@ -54,6 +54,23 @@ test('unbekanntes Tier zeigt den deutschen Nicht-gefunden-Zustand', async ({ pag await expect(page.getByText(t.notFound).or(page.getByText(de.api.errors.notFound))).toBeVisible() }) +test('Ahnen-Namen sind Links zur Tier-Detailseite (STAMMBAUM-OPEN)', async ({ page }) => { + skipUnlessMock() + await page.goto('/rennmaeuse/kruemel/stammbaum') + await expect(page.locator('.pedigree-card').first()).toBeVisible() + + // Fridolin ist Vater von Krümel — sein Name-Link soll /rennmaeuse/fridolin öffnen + const nameLink = page.getByRole('link', { name: 'Fridolin' }) + await expect(nameLink).toBeVisible() + // href korrekt gesetzt + await expect(nameLink).toHaveAttribute('href', '/rennmaeuse/fridolin') + // Tastatur-Navigation (umgeht Toolbar-Überlappung im SVG-Canvas, testet zugl. Accessibility) + await nameLink.focus() + await page.keyboard.press('Enter') + await expect(page.getByRole('heading', { name: 'Fridolin' })).toBeVisible() + await expect(page).toHaveURL(/\/rennmaeuse\/fridolin$/) +}) + test('Namenloser Ahne zeigt Platzhalter in der Stammbaum-Karte (UI-POLISH-2)', async ({ page }) => { skipUnlessMock() await page.goto('/rennmaeuse/nameless-stub/stammbaum') diff --git a/gerbil-manager-web/src/pages/StammbaumPage.tsx b/gerbil-manager-web/src/pages/StammbaumPage.tsx index 7543eda..437b93d 100644 --- a/gerbil-manager-web/src/pages/StammbaumPage.tsx +++ b/gerbil-manager-web/src/pages/StammbaumPage.tsx @@ -377,7 +377,13 @@ function PedigreeCard({
- {g.name || de.pages.gerbils.nameless} + e.stopPropagation()} + > + {g.name || de.pages.gerbils.nameless} +
{farbschlag && (