/**
 * QA-2: Live-Modus-Smoke — läuft NUR gegen das echte Backend (E2E_BASE_URL).
 *
 * Lektion (aus dem Such-Bug): Mock-Tests spiegeln nur den Frontend-Code.
 * Ein Backend-Bug (falscher Filter, leere Antwort, fehlende Migration) bleibt
 * unsichtbar, wenn Live-Tests nur "Seite lädt" prüfen. Diese Tests assertieren
 * ERGEBNISSE: Liste nicht leer, Suche liefert Treffer, Detail zeigt Stammdaten
 * und Eltern-Links.
 *
 * Voraussetzung für den Eltern-Link-Test: Re-Import #2 durchgeführt
 * (322 Tiere, 882 Würfe live; mindestens ein Wurf hat beide Eltern).
 */
import { de, expect, gotoSection, skipUnlessLive, test } from './fixtures'

const t = de.pages.gerbils
const tl = de.pages.litters

test('Live: Tiere-Liste enthält nach Re-Import mindestens 10 Einträge', async ({ page }) => {
  skipUnlessLive()
  await gotoSection(page, de.nav.gerbils)
  await expect(page.getByRole('heading', { name: t.title, exact: true })).toBeVisible()
  // Leere Liste = Backend-Bug (falscher Filter, fehlende DB-Migration o. ä.)
  const rows = page.locator('.gerbil-row')
  await expect(rows.first()).toBeVisible()
  expect(await rows.count()).toBeGreaterThanOrEqual(10)
})

test('Live: Namenssuche gibt Treffer zurück — nicht nur HTTP 200', async ({ page }) => {
  skipUnlessLive()
  await gotoSection(page, de.nav.gerbils)
  await expect(page.getByRole('heading', { name: t.title, exact: true })).toBeVisible()
  // Kurzer Prefix: bei 322 Tieren mindestens 1 Treffer. Kein Treffer = Gridify-Bug.
  await page.getByPlaceholder(t.searchPlaceholder).first().fill('a')
  const rows = page.locator('.gerbil-row')
  await expect(rows.first()).toBeVisible({ timeout: 10_000 })
  expect(await rows.count()).toBeGreaterThanOrEqual(1)
})

test('Live: Wurf-Detail zeigt Elterntier-Links (mindestens Vater oder Mutter)', async ({
  page,
}) => {
  skipUnlessLive()
  // Direkt zu einem Wurf mit beiden Eltern navigieren (Re-Import #2.5, stabil).
  // Wurf (aus Diagramm) 2026-02-10 — fatherId + motherId beide gesetzt.
  // Kein nth()-Selektor mehr: bei 865 Würfen + Pager-Nav nicht deterministisch.
  await page.goto('/wuerfe/a1db02cf-48ff-4f3a-8eab-33f2360c27f0')

  // Detailseite: Elterntier-Abschnitt immer sichtbar (kein bedingtes Rendering)
  await expect(page.getByText(tl.detail.parents, { exact: true })).toBeVisible({ timeout: 8_000 })
  // Mindestens ein Link führt zu einem Tier — bei fehlendem Import fehlt dieser Link
  await expect(page.locator('a[href*="/rennmaeuse/"]').first()).toBeVisible({ timeout: 5_000 })
})
