Die Tiere-Liste (/rennmaeuse) filtert serverseitig auf isResident==true (eigener Clan = Bestand) und blendet externe Ahnen (nur für den Stammbaum erfasste Fremdtiere) standardmäßig aus — passend zu Julians Modell (Kleine Chaoten = Bestand, extern = stammbaum-only). - Neuer Schalter „Externe Ahnen einblenden“ (Default aus). An -> isResident- Filter entfällt, externe Tiere erscheinen mit. Serverseitig (Gridify), damit Paging und Trefferzahl korrekt bleiben. „Filter zurücksetzen“ setzt ihn zurück. - Subtile „Extern“-Markierung (gestricheltes Badge) auf externen Tieren in Liste UND Detailseite, mit Tooltip-Erläuterung. - Gerbil-Typ um isResident (optional bool) ergänzt; CreateGerbil ebenso. Deutsch via de.ts (LF), mobil + Laptop. e2e-Mock: gerbil()-Factory setzt isResident=true; Hilde & Max als externe Ahnen (isResident=false). Neue e2e bestand.spec (Default blendet aus; Toggle zeigt + Extern-Markierung). Gate grün: build, eslint, vitest 78, e2e 84. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
/** BESTAND-FILTER: die Tiere-Liste zeigt standardmäßig nur den eigenen Bestand. */
|
|
import { de, expect, gotoSection, skipUnlessMock, test } from './fixtures'
|
|
|
|
const t = de.pages.gerbils
|
|
|
|
test('Tiere-Liste blendet externe Ahnen standardmäßig aus', async ({ page }) => {
|
|
skipUnlessMock()
|
|
await gotoSection(page, de.nav.gerbils)
|
|
await expect(page.getByRole('heading', { name: t.title, exact: true })).toBeVisible()
|
|
|
|
// Bestand ist sichtbar …
|
|
await expect(page.locator('.gerbil-row', { hasText: 'Krümel' })).toBeVisible()
|
|
// … aber die externe Ahne „Max“ (isResident=false) nicht.
|
|
await expect(page.locator('.gerbil-row', { hasText: 'Max' })).toHaveCount(0)
|
|
})
|
|
|
|
test('Toggle „Externe Ahnen einblenden“ zeigt externe Tiere mit Extern-Markierung', async ({ page }) => {
|
|
skipUnlessMock()
|
|
await gotoSection(page, de.nav.gerbils)
|
|
await expect(page.locator('.gerbil-row', { hasText: 'Krümel' })).toBeVisible()
|
|
|
|
await page.getByRole('checkbox', { name: t.filters.showExternal }).check()
|
|
|
|
const maxRow = page.locator('.gerbil-row', { hasText: 'Max' })
|
|
await expect(maxRow).toBeVisible()
|
|
await expect(maxRow.getByText(t.externalBadge, { exact: true })).toBeVisible()
|
|
// Der Bestand bleibt weiterhin sichtbar.
|
|
await expect(page.locator('.gerbil-row', { hasText: 'Krümel' })).toBeVisible()
|
|
})
|