diff --git a/gerbil-manager-web/e2e/tiere.spec.ts b/gerbil-manager-web/e2e/tiere.spec.ts
index 7fb571a..052b865 100644
--- a/gerbil-manager-web/e2e/tiere.spec.ts
+++ b/gerbil-manager-web/e2e/tiere.spec.ts
@@ -98,6 +98,35 @@ test('Detailseite zeigt Stammdaten + Tab-Inhalte (Gesundheit/Gewicht/Fotos)', as
await expect(page.getByText(/85\s*g/)).toBeVisible()
})
+test('Detailseite: Wurf-Feld ist ein Link zur Wurf-Detailseite (WURF-LINK)', async ({ page }) => {
+ skipUnlessMock()
+ await page.goto('/rennmaeuse/kruemel')
+ // Krümel hat litterId 'w-kruemel' → Name 'Wurf K' → Link /wuerfe/w-kruemel
+ const litterLink = page.getByRole('link', { name: 'Wurf K' })
+ await expect(litterLink).toBeVisible()
+ await litterLink.click()
+ await expect(page.getByRole('heading', { name: 'Wurf K' })).toBeVisible()
+})
+
+test('Detailseite: Herkunft zeigt originBreeder als Text wenn kein Kontakt (WURF-LINK-Addendum)', async ({ page }) => {
+ skipUnlessMock()
+ // Fridolin hat originContactId=null + originBreeder='Zoohandlung Meier' → plain text, kein Link
+ await page.goto('/rennmaeuse/fridolin')
+ await expect(page.getByRole('heading', { name: 'Fridolin' })).toBeVisible()
+ await expect(page.getByText('Zoohandlung Meier')).toBeVisible()
+ // Kein Link mit diesem Namen — es ist reiner Text
+ await expect(page.getByRole('link', { name: 'Zoohandlung Meier' })).toBeHidden()
+})
+
+test('Detailseite: Herkunft zeigt Kontaktlink wenn originContactId gesetzt (WURF-LINK-Addendum)', async ({ page }) => {
+ skipUnlessMock()
+ // Krümel hat originContactId='con-meier' → Link /kontakte/con-meier (Priorität vor originBreeder)
+ await page.goto('/rennmaeuse/kruemel')
+ const originLink = page.getByRole('link', { name: 'Zoohandlung Meier' })
+ await expect(originLink).toBeVisible()
+ await expect(originLink).toHaveAttribute('href', '/kontakte/con-meier')
+})
+
test('Tier bearbeiten — Notizen ändern', async ({ page }) => {
skipUnlessMock()
await page.goto('/rennmaeuse/kruemel/bearbeiten')
diff --git a/gerbil-manager-web/src/pages/GerbilDetailPage.tsx b/gerbil-manager-web/src/pages/GerbilDetailPage.tsx
index b8208e7..ad3dd66 100644
--- a/gerbil-manager-web/src/pages/GerbilDetailPage.tsx
+++ b/gerbil-manager-web/src/pages/GerbilDetailPage.tsx
@@ -173,8 +173,22 @@ export default function GerbilDetailPage() {
}
/>
-
-
+ {litterName.get(g.litterId)}
+ : lookup(litterName, g.litterId)
+ }
+ />
+ {contactName.get(g.originContactId)}
+ : (g.originBreeder || null)
+ }
+ />