- Fixed registration form not displaying due to missing HVAC_Security_Helpers dependency - Added require_once for dependencies in class-hvac-shortcodes.php render_registration() - Fixed event edit HTTP 500 error by correcting class instantiation to HVAC_Event_Manager - Created comprehensive E2E test suite with MCP Playwright integration - Achieved 70% test success rate with both issues fully resolved 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			110 lines
		
	
	
		
			No EOL
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			No EOL
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const { webkit } = require('playwright');
 | |
| 
 | |
| (async () => {
 | |
|     console.log('🧪 Testing Safari compatibility with headless WebKit...');
 | |
|     
 | |
|     const browser = await webkit.launch({
 | |
|         headless: true // headless to avoid CPU/display issues
 | |
|     });
 | |
| 
 | |
|     const context = await browser.newContext({
 | |
|         // Simulate Safari browser
 | |
|         userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15'
 | |
|     });
 | |
|     
 | |
|     const page = await context.newPage();
 | |
|     
 | |
|     // Track console messages and errors
 | |
|     page.on('console', msg => {
 | |
|         console.log(`[${msg.type().toUpperCase()}] ${msg.text()}`);
 | |
|     });
 | |
|     
 | |
|     page.on('pageerror', error => {
 | |
|         console.log(`[PAGE ERROR] ${error.message}`);
 | |
|     });
 | |
|     
 | |
|     console.log('📍 Navigating to find-a-trainer page...');
 | |
|     try {
 | |
|         await page.goto('https://upskill-staging.measurequick.com/find-a-trainer/', { 
 | |
|             waitUntil: 'networkidle',
 | |
|             timeout: 30000 
 | |
|         });
 | |
|         console.log('✅ Page loaded successfully');
 | |
|     } catch (error) {
 | |
|         console.log('⚠️ Page load error:', error.message);
 | |
|         
 | |
|         // Try to get current page state even if navigation failed
 | |
|         try {
 | |
|             const currentUrl = await page.url();
 | |
|             console.log('📍 Current URL:', currentUrl);
 | |
|         } catch (e) {
 | |
|             console.log('❌ Could not get page URL');
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     console.log('⏳ Waiting for page to stabilize...');
 | |
|     await page.waitForTimeout(3000);
 | |
|     
 | |
|     // Get comprehensive browser state
 | |
|     console.log('🔍 Analyzing browser state...');
 | |
|     const pageState = await page.evaluate(() => {
 | |
|         return {
 | |
|             url: window.location.href,
 | |
|             title: document.title,
 | |
|             readyState: document.readyState,
 | |
|             scriptsLoaded: Array.from(document.querySelectorAll('script')).length,
 | |
|             safariScriptBlocker: window.hvacSafariScriptBlocker ? 'active' : 'not found',
 | |
|             hvacErrors: window.hvacErrors || [],
 | |
|             bodyExists: !!document.body,
 | |
|             hasContent: document.body ? document.body.innerHTML.length > 1000 : false
 | |
|         };
 | |
|     });
 | |
|     
 | |
|     console.log('📊 Page state:', pageState);
 | |
|     
 | |
|     // Check Safari-specific scripts
 | |
|     console.log('🔍 Checking Safari script loading...');
 | |
|     const allScripts = await page.evaluate(() => {
 | |
|         return Array.from(document.querySelectorAll('script[src]'))
 | |
|             .map(script => ({
 | |
|                 src: script.src,
 | |
|                 isSafariCompatible: script.src.includes('safari-compatible'),
 | |
|                 isHVAC: script.src.includes('hvac') || script.src.includes('find-trainer')
 | |
|             }));
 | |
|     });
 | |
|     
 | |
|     console.log('📄 All scripts:', allScripts.length);
 | |
|     const hvacScripts = allScripts.filter(s => s.isHVAC);
 | |
|     const safariScripts = allScripts.filter(s => s.isSafariCompatible);
 | |
|     
 | |
|     console.log('🎯 HVAC scripts:', hvacScripts);
 | |
|     console.log('✅ Safari-compatible scripts:', safariScripts);
 | |
|     
 | |
|     // Test basic page functionality if content loaded
 | |
|     if (pageState.hasContent) {
 | |
|         console.log('🧪 Testing page functionality...');
 | |
|         try {
 | |
|             // Check if trainer cards exist
 | |
|             const trainerCards = await page.$$('.hvac-trainer-card');
 | |
|             console.log(`👥 Found ${trainerCards.length} trainer cards`);
 | |
|             
 | |
|             // Test if interactive elements are present
 | |
|             const interactiveElements = await page.evaluate(() => {
 | |
|                 return {
 | |
|                     modals: document.querySelectorAll('[id*="modal"]').length,
 | |
|                     buttons: document.querySelectorAll('button, .btn').length,
 | |
|                     forms: document.querySelectorAll('form').length,
 | |
|                     maps: document.querySelectorAll('[id*="map"]').length
 | |
|                 };
 | |
|             });
 | |
|             
 | |
|             console.log('🎯 Interactive elements:', interactiveElements);
 | |
|             
 | |
|         } catch (error) {
 | |
|             console.log('❌ Error testing functionality:', error.message);
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     console.log('🎉 Safari compatibility test completed');
 | |
|     await browser.close();
 | |
| })(); |