import { test, expect } from '@playwright/test'; /** * API Integration Tests * * Tests API calls and network requests */ test.describe('API Integration', () => { test('should handle API errors gracefully', async ({ page }) => { // Capture console logs const logs: string[] = []; page.on('console', (msg) => { logs.push(`[${msg.type()}] ${msg.text()}`); console.log(`[BROWSER ${msg.type()}]:`, msg.text()); }); // Capture network errors const networkErrors: any[] = []; page.on('response', (response) => { if (response.status() >= 400) { networkErrors.push({ url: response.url(), status: response.status(), statusText: response.statusText(), }); console.log(`[NETWORK ERROR] ${response.status()} ${response.url()}`); } }); await page.goto('/login'); await page.waitForLoadState('networkidle'); // Log results console.log(`\n=== Test Results ===`); console.log(`Total console logs: ${logs.length}`); console.log(`Network errors: ${networkErrors.length}`); if (networkErrors.length > 0) { console.log('\nNetwork Errors:'); networkErrors.forEach((err) => { console.log(` - ${err.status} ${err.url}`); }); } console.log(`===================\n`); }); test('should log all network requests', async ({ page }) => { const requests: any[] = []; page.on('request', (request) => { requests.push({ method: request.method(), url: request.url(), headers: request.headers(), }); console.log(`[→ REQUEST] ${request.method()} ${request.url()}`); }); page.on('response', async (response) => { const request = response.request(); console.log(`[← RESPONSE] ${response.status()} ${request.method()} ${request.url()}`); // Log response body for API calls (not assets) if (request.url().includes('/api/')) { try { const body = await response.text(); console.log(`[RESPONSE BODY] ${body.substring(0, 200)}${body.length > 200 ? '...' : ''}`); } catch (e) { // Can't read body for some responses } } }); await page.goto('/login'); await page.waitForLoadState('networkidle'); console.log(`\n=== Network Summary ===`); console.log(`Total requests: ${requests.length}`); console.log(`===================\n`); }); });