upskill-event-manager/test-nav-debug.js
Ben 4367f6a395 feat: implement professional navigation with smooth dropdowns and best practices
- Created hvac-navigation-enhanced.css with modern dropdown styles
  - Pure CSS hover dropdowns for desktop (no JS needed)
  - Smooth animations with 300ms transitions
  - Professional hover effects with bottom border animation
  - Proper z-index layering (z-index: 9999 for dropdowns)
  - Keyboard navigation support

- Added hvac-navigation-enhanced.js for enhanced UX
  - Mobile hamburger menu with smooth animations
  - Keyboard navigation (arrow keys, escape, enter)
  - Click outside to close
  - Accessibility improvements with ARIA attributes
  - Smooth scroll for anchor links

- Fixed menu toggle visibility issue
  - Removed conflicting Astra theme buttons
  - Using pure CSS :hover for desktop dropdowns
  - Better mobile responsive behavior

- Updated class-hvac-scripts-styles.php
  - Added new CSS and JS files to build pipeline
  - Proper dependency management

Best practices implemented:
- WCAG 2.1 AA compliant keyboard navigation
- Focus management for accessibility
- Smooth 300ms transitions for professional feel
- Mobile-first responsive design
- No JavaScript required for desktop dropdowns
2025-08-20 23:10:53 -03:00

116 lines
3.8 KiB
JavaScript

const { chromium } = require('playwright');
(async () => {
console.log('🔍 Debugging HVAC Navigation Menu');
console.log('===================================\n');
const browser = await chromium.launch({
headless: true // Use headless for debugging
});
const page = await browser.newPage();
try {
console.log('1. Navigating to dashboard...');
await page.goto('https://upskill-staging.measurequick.com/trainer/dashboard/', {
waitUntil: 'networkidle'
});
// Check what navigation elements exist
console.log('\n2. Checking for navigation elements...');
// Look for any button with "menu" in the text
const menuButtons = await page.locator('button').all();
console.log(` Found ${menuButtons.length} buttons total`);
for (const button of menuButtons) {
const text = await button.textContent();
if (text && text.toLowerCase().includes('menu')) {
console.log(` - Button found: "${text.trim()}"`);
}
}
// Check for navigation with class hvac-menu
const hvacNav = await page.locator('.hvac-menu-navigation').count();
console.log(` HVAC navigation elements: ${hvacNav}`);
// Check for hamburger icon
const hamburgerIcon = await page.locator('.hvac-menu-hamburger').count();
console.log(` Hamburger icons: ${hamburgerIcon}`);
// Check for menu lists
const menuLists = await page.locator('.hvac-menu-list').count();
console.log(` Menu lists: ${menuLists}`);
// Try different selectors for the menu toggle
console.log('\n3. Testing different menu selectors...');
const selectors = [
'button:has-text("Toggle menu")',
'.hvac-menu-hamburger',
'button.hvac-menu-hamburger',
'[aria-label*="menu"]',
'button[aria-expanded]'
];
for (const selector of selectors) {
const count = await page.locator(selector).count();
console.log(` "${selector}": ${count} element(s)`);
}
// Get the actual HTML of the navigation area
console.log('\n4. Navigation HTML structure:');
const navHTML = await page.locator('nav').first().innerHTML();
console.log(navHTML.substring(0, 500) + '...');
// Check CSS files loaded
console.log('\n5. Checking CSS files loaded:');
const styleSheets = await page.evaluate(() => {
return Array.from(document.styleSheets)
.map(sheet => sheet.href)
.filter(href => href && href.includes('hvac'));
});
styleSheets.forEach(sheet => {
const filename = sheet.split('/').pop();
console.log(` - ${filename}`);
});
// Check for JavaScript errors
console.log('\n6. Checking for JavaScript errors:');
page.on('pageerror', error => {
console.log(` ❌ JS Error: ${error.message}`);
});
// Try to trigger menu with JavaScript
console.log('\n7. Trying to trigger menu with JavaScript:');
const menuOpened = await page.evaluate(() => {
const button = document.querySelector('button');
if (button && button.textContent.includes('Toggle')) {
button.click();
return true;
}
return false;
});
if (menuOpened) {
console.log(' ✅ Menu triggered via JavaScript');
await page.waitForTimeout(1000);
// Check if menu items are visible
const menuVisible = await page.locator('.hvac-menu-list').isVisible();
console.log(` Menu list visible: ${menuVisible}`);
} else {
console.log(' ❌ Could not trigger menu');
}
// Take screenshot for manual inspection
await page.screenshot({ path: 'nav-debug.png', fullPage: false });
console.log('\n✅ Screenshot saved as nav-debug.png');
} catch (error) {
console.error('❌ Error:', error.message);
} finally {
await browser.close();
}
})();