CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 27s
CI / Build server (push) Successful in 31s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m50s
CI / Build and push Docker image (push) Successful in 1m1s
CI / Notify (push) Successful in 2s
40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
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í tř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(3, { 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();
|
|
});
|