44 lines
1.9 KiB
TypeScript
44 lines
1.9 KiB
TypeScript
|
|
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();
|
||
|
|
});
|
||
|
|
});
|