import { test, expect } from '@playwright/test'; test.beforeEach(async ({ page, request }) => { // Naseedujeme 5 uživatelů pro dnešní den – GenerateQrModal pracuje se stávajícími choices await request.post('/api/dev/generate', { data: { dayIndex: 4, count: 5 } }); // Přednastavíme bankovní účet v localStorage (SettingsContext čte z LS při inicializaci) await page.goto('/'); await page.evaluate(() => { localStorage.setItem('bank_account_number', '2400000000/2010'); localStorage.setItem('bank_account_holder_name', 'Test User'); }); // Reload tak, aby SettingsContext načetl nové hodnoty z localStorage await page.reload(); await page.waitForLoadState('networkidle'); }); test('Nastavení ukládají číslo účtu a jméno do localStorage', async ({ page }) => { // Otevření nastavení await page.locator('#basic-nav-dropdown').click(); await page.locator('text=Nastavení').click(); // Modal musí být viditelný await expect(page.locator('.modal-title')).toContainText('Nastavení', { timeout: 5_000 }); // Změníme číslo účtu const accountInput = page.getByPlaceholder('123456-1234567890/1234'); await accountInput.clear(); await accountInput.fill('1234567890/5500'); // Změníme jméno const nameInput = page.getByPlaceholder('Jan Novák'); await nameInput.clear(); await nameInput.fill('Nové Jméno'); // Uložíme await page.locator('.modal-footer button', { hasText: 'Uložit' }).click(); // Ověříme v localStorage const bankAccount = await page.evaluate(() => localStorage.getItem('bank_account_number')); const holderName = await page.evaluate(() => localStorage.getItem('bank_account_holder_name')); expect(bankAccount).toBe('1234567890/5500'); expect(holderName).toBe('Nové Jméno'); }); test('otevře modal Generování QR kódů pokud je nastaven účet', async ({ page }) => { // Otevření dropdown menu await page.locator('#basic-nav-dropdown').click(); await page.locator('text=Generování QR kódů').click(); // Modal se otevře await expect(page.locator('.modal')).toBeVisible({ timeout: 5_000 }); // Modal musí obsahovat seznam uživatelů nebo prázdný stav await expect(page.locator('.modal-body')).toBeVisible(); }); test('upozorní pokud není nastaven bankovní účet', async ({ page }) => { // Odebereme nastavení účtu await page.evaluate(() => { localStorage.removeItem('bank_account_number'); localStorage.removeItem('bank_account_holder_name'); }); await page.reload(); await page.waitForLoadState('networkidle'); // Dialog místo modalu page.on('dialog', async dialog => { expect(dialog.message()).toContain('číslo účtu'); await dialog.accept(); }); await page.locator('#basic-nav-dropdown').click(); await page.locator('text=Generování QR kódů').click(); // Modal se NESMÍ otevřít await expect(page.locator('.modal')).not.toBeVisible({ timeout: 3_000 }); });