upskill-event-manager/test-safari-headless.js
Ben 89872ec998 fix: resolve registration form display and event edit issues
- 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>
2025-08-24 08:27:17 -03:00

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