import { chromium } from 'playwright'; (async () => { console.log('=== Verifying Servers Download Fix ===\n'); const browser = await chromium.launch({ headless: false, slowMo: 300 }); const context = await browser.newContext(); const page = await context.newPage(); let serverDownloadSuccess = false; const errors = []; page.on('console', msg => { const text = msg.text(); if (text.includes('servers')) { console.log(`[APP] ${text}`); } if (text.includes('ERROR') || text.includes('šŸ”“') || msg.type() === 'error') { if (text.includes('_JsonMap') || text.includes('subtype') || text.includes('List')) { errors.push(text); console.log('āŒ TYPE ERROR:', text); } } }); page.on('response', async response => { if (response.url().includes('/configuration/servers')) { const status = response.status(); console.log(`šŸ“„ Server response: ${status}`); if (status === 200) { try { const body = await response.text(); console.log(`āœ… Got servers data (${body.length} bytes)`); serverDownloadSuccess = true; } catch (e) { console.log('āš ļø Could not read body'); } } } }); try { console.log('1. Login...'); await page.goto('http://100.81.138.77:8081/', { waitUntil: 'networkidle', timeout: 60000 }); await page.waitForTimeout(2000); await page.keyboard.press('Tab'); await page.keyboard.type('admin', { delay: 50 }); await page.keyboard.press('Tab'); await page.keyboard.type('admin123', { delay: 50 }); await page.keyboard.press('Enter'); await page.waitForTimeout(4000); console.log('\n2. Navigate to servers...'); await page.goto('http://100.81.138.77:8081/#/servers', { waitUntil: 'networkidle', timeout: 60000 }); await page.waitForTimeout(2000); console.log('\n3. Trigger download (Tab Tab Tab Enter)...'); await page.keyboard.press('Tab'); await page.waitForTimeout(500); await page.keyboard.press('Tab'); await page.waitForTimeout(500); await page.keyboard.press('Tab'); await page.waitForTimeout(500); await page.keyboard.press('Enter'); console.log(' Waiting for download...'); await page.waitForTimeout(6000); console.log('\n' + '='.repeat(60)); console.log('RESULTS'); console.log('='.repeat(60)); if (errors.length > 0) { console.log('\nāŒ Type errors detected:'); errors.forEach(err => console.log(' -', err)); } else if (serverDownloadSuccess) { console.log('\nāœ… SUCCESS! Servers downloaded without type errors'); } else { console.log('\nāš ļø Download button might not have been clicked'); } } catch (error) { console.error('Test error:', error.message); } await page.waitForTimeout(2000); await browser.close(); console.log('\n=== Test Complete ==='); })();