import { test, expect, Page } from '@playwright/test'; async function login(page: Page) { await page.goto('/login'); await page.fill('input[name="password"]', 'admin123'); await page.click('button[type="submit"]'); await expect(page).toHaveURL(/\/dashboard/); } test.describe('Dashboard', () => { test.beforeEach(async ({ page }) => { await login(page); }); test('prikazuje statistike po proizvodu', async ({ page }) => { await expect(page.locator('h1')).toHaveText('Dashboard'); await expect(page.locator('.stats-grid')).toBeVisible(); // Treba da postoje kartice za proizvode const statCards = page.locator('.stat-card'); await expect(statCards).toHaveCount(3); // ESIR, ARV, LIGHT_TICKET }); test('prikazuje tabelu poslednje aktivnosti', async ({ page }) => { await expect(page.locator('h2', { hasText: 'Poslednja aktivnost' })).toBeVisible(); await expect(page.locator('table').last()).toBeVisible(); }); test('navbar ima ispravne linkove', async ({ page }) => { await expect(page.locator('.nav-brand')).toHaveText('DAL License Server'); await expect(page.locator('a[href="/dashboard"]')).toBeVisible(); await expect(page.locator('a[href="/licenses"]')).toBeVisible(); await expect(page.locator('a[href="/audit"]')).toBeVisible(); }); test('odjava funkcionise', async ({ page }) => { await page.click('button:has-text("Odjava")'); await expect(page).toHaveURL(/\/login/); // Posle odjave ne moze na dashboard await page.goto('/dashboard'); await expect(page).toHaveURL(/\/login/); }); test('root preusmerava na dashboard', async ({ page }) => { await page.goto('/'); await expect(page).toHaveURL(/\/dashboard/); }); });