const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: false, slowMo: 400 }); const context = await browser.newContext({ viewport: { width: 1920, height: 1080 } // Desktop - controls visible > 900px }); const page = await context.newPage(); // Listen for console errors page.on('console', msg => { const text = msg.text(); const type = msg.type(); if (type === 'error' || text.toLowerCase().includes('error')) { console.log('āŒ CONSOLE ERROR:', text); } }); page.on('pageerror', error => console.log('āŒ PAGE EXCEPTION:', error.message)); console.log('šŸ“„ Loading page (desktop 1920px - controls visible)...'); await page.goto('http://localhost:1999/?lang=en'); await page.waitForLoadState('networkidle'); await page.waitForTimeout(1000); console.log('\nšŸ–±ļø TEST 1: Click desktop theme toggle...'); await page.locator('.selector-group').filter({ hasText: 'View' }).locator('label.icon-toggle').click(); await page.waitForTimeout(2000); console.log('āœ… Desktop toggle complete - No errors!'); console.log('\nšŸ–±ļø TEST 2: Click desktop theme toggle again (toggle back)...'); await page.locator('.selector-group').filter({ hasText: 'View' }).locator('label.icon-toggle').click(); await page.waitForTimeout(2000); console.log('āœ… Desktop toggle back complete - No errors!'); console.log('\nšŸ“± TEST 3: Resize to mobile and test menu sync...'); await page.setViewportSize({ width: 600, height: 800 }); await page.waitForTimeout(500); console.log('šŸ” Opening hamburger menu...'); await page.click('.hamburger-btn'); await page.waitForTimeout(500); console.log('šŸ” Checking mobile toggle state...'); const mobileChecked = await page.locator('#themeToggleMenu').isChecked(); const expectedState = false; // Should be default (not clean) console.log(` Mobile toggle checked: ${mobileChecked} (expected: ${expectedState})`); if (mobileChecked === expectedState) { console.log(' āœ… Toggles are SYNCED!'); } else { console.log(' āŒ Toggles are OUT OF SYNC!'); } console.log('\nāœ… All tests complete - Check for errors above'); await page.waitForTimeout(1000); await browser.close(); })();