const { chromium } = require('playwright'); async function comprehensiveNavigationTest() { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); const page = await context.newPage(); const testResults = []; // Test pages to check const testPages = [ { name: 'Dashboard', url: '/trainer/dashboard/' }, { name: 'Certificate Reports', url: '/trainer/certificate-reports/' }, { name: 'Generate Certificates', url: '/trainer/generate-certificates/' }, { name: 'Event Manage', url: '/trainer/event/manage/' }, { name: 'Venue List', url: '/trainer/venue/list/' }, { name: 'Venue Manage', url: '/trainer/venue/manage/' }, { name: 'Organizer List', url: '/trainer/organizer/list/' }, { name: 'Organizer Manage', url: '/trainer/organizer/manage/' }, { name: 'Profile View', url: '/trainer/profile/' }, { name: 'Profile Edit', url: '/trainer/profile/edit/' }, ]; try { console.log('๐Ÿ” Logging in as test_trainer...'); await page.goto('https://upskill-staging.measurequick.com/training-login/'); // Fill login form await page.fill('input[name="log"]', 'test_trainer'); await page.fill('input[name="pwd"]', 'TestTrainer123!'); await page.click('button[type="submit"]'); // Wait for dashboard await page.waitForTimeout(3000); console.log('๐Ÿงช Testing all trainer pages...\n'); for (const testPage of testPages) { console.log(`๐Ÿ“„ Testing ${testPage.name}...`); try { await page.goto(`https://upskill-staging.measurequick.com${testPage.url}`); await page.waitForTimeout(2000); // Check for new WordPress menu const newMenuExists = await page.locator('.hvac-trainer-menu-wrapper').count() > 0; // Check for old navigation elements const oldNavigationMenu = await page.locator('text="NAVIGATION MENU"').count(); const oldGreenButtons = await page.locator('.ast-button:has-text("DASHBOARD"), .ast-button:has-text("GENERATE CERTIFICATES"), .ast-button:has-text("CREATE EVENT")').count(); // Check for specific old navigation patterns const navigationMenuDropdown = await page.locator('.ast-button:has-text("NAVIGATION MENU")').count(); const greenNavButtons = await page.locator('.ast-button.ast-button-secondary:has-text("Dashboard"), .ast-button.ast-button-secondary:has-text("Generate Certificates")').count(); // Check for page content (not blank) const hasContent = await page.locator('body').innerText(); const isBlank = hasContent.trim().length < 100; // Check for errors const hasError = await page.locator('text="Error", text="404", text="Not Found"').count() > 0; const result = { page: testPage.name, url: testPage.url, newMenuExists, oldNavigationMenu, oldGreenButtons, navigationMenuDropdown, greenNavButtons, isBlank, hasError, status: 'tested' }; // Determine overall status if (hasError) { result.status = 'โŒ ERROR'; } else if (isBlank) { result.status = 'โšช BLANK'; } else if (oldNavigationMenu > 0 || navigationMenuDropdown > 0 || greenNavButtons > 0) { result.status = '๐Ÿ”ถ HYBRID NAV'; } else if (!newMenuExists) { result.status = 'โ“ NO MENU'; } else { result.status = 'โœ… FIXED'; } testResults.push(result); console.log(` Status: ${result.status}`); console.log(` New menu: ${newMenuExists ? 'โœ“' : 'โœ—'}`); console.log(` Old nav elements: ${oldNavigationMenu + navigationMenuDropdown + greenNavButtons}`); // Take screenshot if there are issues if (result.status !== 'โœ… FIXED') { await page.screenshot({ path: `issue-${testPage.name.toLowerCase().replace(/\s+/g, '-')}.png`, fullPage: true }); console.log(` ๐Ÿ“ธ Screenshot saved for ${testPage.name}`); } } catch (error) { testResults.push({ page: testPage.name, url: testPage.url, status: 'โŒ ERROR', error: error.message }); console.log(` Status: โŒ ERROR - ${error.message}`); } console.log(''); } // Generate summary report console.log('๐ŸŽฏ COMPREHENSIVE TEST RESULTS:'); console.log('====================================='); const fixed = testResults.filter(r => r.status === 'โœ… FIXED').length; const hybridNav = testResults.filter(r => r.status === '๐Ÿ”ถ HYBRID NAV').length; const blank = testResults.filter(r => r.status === 'โšช BLANK').length; const errors = testResults.filter(r => r.status === 'โŒ ERROR').length; const noMenu = testResults.filter(r => r.status === 'โ“ NO MENU').length; console.log(`โœ… Fixed: ${fixed}/${testPages.length}`); console.log(`๐Ÿ”ถ Hybrid Navigation: ${hybridNav}`); console.log(`โšช Blank Pages: ${blank}`); console.log(`โŒ Errors: ${errors}`); console.log(`โ“ No Menu: ${noMenu}`); console.log(''); // Detail issues that need fixing const issuePages = testResults.filter(r => r.status !== 'โœ… FIXED'); if (issuePages.length > 0) { console.log('๐Ÿ”ง PAGES NEEDING FIXES:'); issuePages.forEach(page => { console.log(` ${page.status} ${page.page} (${page.url})`); }); } } catch (error) { console.error('โŒ Test Error:', error.message); await page.screenshot({ path: 'comprehensive-test-error.png', fullPage: true }); } finally { await browser.close(); } } comprehensiveNavigationTest();