import { test, expect } from '@playwright/test'; test.beforeEach(async ({ page }) => { // Trusted-header login runs automatically when Login mounts. // networkidle zaručí, že fetch('/api/data') byl dokončen. await page.goto('/'); await page.waitForLoadState('networkidle'); }); test('zobrazí mock datum 10.01.2025', async ({ page }) => { // MOCK_DATA=true pins today to 2025-01-10 await expect(page.locator('text=10.01')).toBeVisible({ timeout: 10_000 }); }); test('zobrazí čtyři restaurační karty z mock dat', async ({ page }) => { // Každá restaurace je obalena v .restaurant-card const cards = page.locator('.restaurant-card'); await expect(cards).toHaveCount(4, { timeout: 10_000 }); }); test('zobrazí alespoň jedno jídlo v menu každé restaurace', async ({ page }) => { await expect(page.locator('.restaurant-card').first()).toBeVisible({ timeout: 10_000 }); // Každá karta musí mít aspoň jeden řádek v .food-table const cards = page.locator('.restaurant-card'); const count = await cards.count(); for (let i = 0; i < count; i++) { const card = cards.nth(i); const rows = card.locator('.food-table tr'); expect(await rows.count()).toBeGreaterThan(0); } }); test('zobrazí volbu stravování před menu', async ({ page }) => { // Sekce .choice-section obsahuje select pro výběr stravování const choiceSection = page.locator('.choice-section'); await expect(choiceSection).toBeVisible({ timeout: 10_000 }); await expect(choiceSection.locator('select').first()).toBeVisible(); });