upskill-event-manager/comprehensive-navigation-test.js
bengizmo 993a820a84 feat: Add comprehensive development artifacts to repository
- Add 26 documentation files including test reports, deployment guides, and troubleshooting documentation
- Include 3 CSV data files for trainer imports and user registration tracking
- Add 43 JavaScript test files covering mobile optimization, Safari compatibility, and E2E testing
- Include 18 PHP utility files for debugging, geocoding, and data analysis
- Add 12 shell scripts for deployment verification, user management, and database operations
- Update .gitignore with whitelist patterns for development files, documentation, and CSV data

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 12:26:11 -03:00

154 lines
No EOL
6.7 KiB
JavaScript

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();