import { test, expect } from '@playwright/test'; import { clearActiveProfile, setActiveProfile, HENDRIK_ID } from './fixtures/profile'; test.describe('Wunschliste-Seite', () => { test('laedt Header + Sort-Tabs', async ({ page }) => { await setActiveProfile(page, HENDRIK_ID); await page.goto('/wishlist'); await expect(page.getByRole('heading', { level: 1, name: 'Wunschliste' })).toBeVisible(); for (const label of ['Meist gewünscht', 'Neueste', 'Älteste']) { await expect(page.getByRole('tab', { name: label })).toBeVisible(); } }); test('Badge im Header stimmt mit Anzahl Eintraegen ueberein', async ({ page, request }) => { await setActiveProfile(page, HENDRIK_ID); await page.goto('/wishlist'); // Die API zaehlt die Wunschlisten-Rezepte — der Header-Badge sollte // die gleiche Zahl zeigen. const res = await request.get('/api/wishlist?sort=popular'); const body = (await res.json()) as { entries: unknown[] }; const expected = body.entries.length; if (expected === 0) { // Kein Badge bei Null — der Link hat dann gar keine Zahl. return; } const badge = page.locator('a[href="/wishlist"]').first(); await expect(badge).toContainText(String(expected)); }); test('requireProfile zeigt Custom-Message "um mitzuwuenschen"', async ({ page }) => { await clearActiveProfile(page); await page.goto('/wishlist'); // Erster "Ich will das auch"-Button eines beliebigen Eintrags. // Falls Wunschliste leer ist, ueberspringen. const btn = page.getByRole('button', { name: /Ich will das auch/i }).first(); const count = await btn.count(); test.skip(count === 0, 'Wunschliste leer — Custom-Message-Test uebersprungen'); await btn.click(); await expect(page.getByText('Kein Profil gewählt')).toBeVisible(); await expect(page.getByText('um mitzuwünschen')).toBeVisible(); }); });