import { test, expect } from '@playwright/test'; /** * Navigation Tests * * Tests the main navigation and routing functionality */ test.describe('Navigation', () => { test('should redirect to login when not authenticated', async ({ page }) => { // Listen to console logs page.on('console', (msg) => { console.log(`[BROWSER ${msg.type()}]:`, msg.text()); }); // Listen to page errors page.on('pageerror', (error) => { console.error('[BROWSER ERROR]:', error.message); }); await page.goto('/dashboard'); // Should redirect to login await expect(page).toHaveURL(/\/login/); }); test('should show login page', async ({ page }) => { // Listen to all logs page.on('console', (msg) => { console.log(`[BROWSER ${msg.type()}]:`, msg.text()); }); page.on('pageerror', (error) => { console.error('[BROWSER ERROR]:', error.message); }); // Listen to network requests page.on('request', (request) => { console.log(`[REQUEST] ${request.method()} ${request.url()}`); }); page.on('response', (response) => { console.log(`[RESPONSE] ${response.status()} ${response.url()}`); }); await page.goto('/login'); // Check for login elements await expect(page.locator('text=VIP Coordinator')).toBeVisible(); }); test('should have no console errors on login page', async ({ page }) => { const errors: string[] = []; page.on('pageerror', (error) => { errors.push(error.message); console.error('[PAGE ERROR]:', error.message); }); page.on('console', (msg) => { if (msg.type() === 'error') { errors.push(msg.text()); console.error('[CONSOLE ERROR]:', msg.text()); } }); await page.goto('/login'); await page.waitForLoadState('networkidle'); // Report any errors found if (errors.length > 0) { console.log('\n=== ERRORS FOUND ==='); errors.forEach((error, i) => { console.log(`${i + 1}. ${error}`); }); console.log('===================\n'); } expect(errors.length).toBe(0); }); });