import { test, expect } from '@playwright/test'; test.describe('Login', () => { test.beforeEach(async ({ page }) => { await page.goto('/auth/login'); }); test('deve mostrar o formulário de login', async ({ page }) => { await expect(page.locator('h1, h2')).toContainText('Login'); await expect(page.getByLabel(/email/i)).toBeVisible(); await expect(page.getByLabel(/senha/i)).toBeVisible(); await expect(page.getByRole('button', { name: /entrar|login/i })).toBeVisible(); }); test('deve mostrar erro com credenciais inválidas', async ({ page }) => { await page.getByLabel(/email/i).fill('naoexiste@teste.com'); await page.getByLabel(/senha/i).fill('senhaerrada'); await page.getByRole('button', { name: /entrar|login/i }).click(); // Deve mostrar mensagem de erro ou redirecionar para login await expect(page).toHaveURL(/\/auth\/login/); }); test('deve redirecionar para dispatcher após login bem-sucedido', async ({ page }) => { // TODO: Criar usuário de teste antes de executar // await page.getByLabel(/email/i).fill('admin@teste.com'); // await page.getByLabel(/senha/i).fill('123456'); // await page.getByRole('button', { name: /entrar|login/i }).click(); // await expect(page).toHaveURL(/\/dispatcher/); }); test('deve redirecionar para login se tentar acessar rota protegida', async ({ page }) => { await page.goto('/admin/dashboard'); await expect(page).toHaveURL(/\/auth\/login/); }); }); test.describe('Navbar - Estado Autenticado', () => { test('não autenticado: mostra Home, Cadastro, Login', async ({ page }) => { await page.goto('/'); const nav = page.locator('nav ul'); await expect(nav.getByRole('link', { name: 'Home' })).toBeVisible(); await expect(nav.getByRole('link', { name: 'Cadastro' })).toBeVisible(); await expect(nav.getByRole('button', { name: 'Login' })).toBeVisible(); await expect(nav.getByRole('link', { name: 'Dashboard' })).not.toBeVisible(); }); test('autenticado: mostra Home, Dashboard, Logout (esconde Cadastro)', async ({ page }) => { // TODO: Fazer login primeiro // await page.goto('/auth/login'); // await page.getByLabel(/email/i).fill('admin@teste.com'); // await page.getByLabel(/senha/i).fill('123456'); // await page.getByRole('button', { name: /entrar|login/i }).click(); // await page.waitForURL(/\/dispatcher|\/dashboard/); // await page.goto('/'); // const nav = page.locator('nav ul'); // await expect(nav.getByRole('link', { name: 'Home' })).toBeVisible(); // await expect(nav.getByRole('link', { name: 'Cadastro' }).not.toBeVisible(); // await expect(nav.getByRole('link', { name: 'Dashboard' })).toBeVisible(); // await expect(nav.getByRole('button', { name: /logout|sair/i })).toBeVisible(); }); });