- 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>
144 lines
No EOL
8 KiB
JavaScript
144 lines
No EOL
8 KiB
JavaScript
const { chromium } = require('playwright');
|
|
|
|
async function testMasterTrainerSuccess() {
|
|
console.log('🔍 TESTING MASTER TRAINER SUCCESS - ERROR HANDLING FIXES');
|
|
console.log('================================================================================');
|
|
|
|
const browser = await chromium.launch({ headless: false });
|
|
const context = await browser.newContext();
|
|
const page = await context.newPage();
|
|
|
|
try {
|
|
// Login as master trainer
|
|
console.log('📝 Logging in as master trainer...');
|
|
await page.goto('https://upskill-staging.measurequick.com/wp-login.php');
|
|
await page.fill('#user_login', 'JoeMedosch@gmail.com');
|
|
await page.fill('#user_pass', 'JoeTrainer2025@');
|
|
await page.click('#wp-submit');
|
|
await page.waitForURL('**/master-trainer/master-dashboard/**', { timeout: 15000 });
|
|
console.log('✅ Master trainer login successful');
|
|
|
|
// Test the URL with error handling fixes
|
|
console.log('🔍 Testing master trainer profile edit with error handling...');
|
|
const testUrl = 'https://upskill-staging.measurequick.com/master-trainer/edit-trainer-profile?user_id=42';
|
|
await page.goto(testUrl);
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
const finalTestResult = await page.evaluate(() => {
|
|
return {
|
|
url: window.location.href,
|
|
title: document.title,
|
|
hasEditForm: document.querySelector('#hvac-master-profile-form') !== null,
|
|
hasTrainerFields: document.querySelectorAll('input, select, textarea').length,
|
|
hasCriticalError: document.body.innerText.includes('critical error'),
|
|
hasPermissionError: document.body.innerText.includes('must be a master trainer'),
|
|
hasUserNotFound: document.body.innerText.includes('User not found'),
|
|
hasNoProfile: document.body.innerText.includes('No trainer profile found'),
|
|
hasSystemUnavailable: document.body.innerText.includes('Profile management system is not available'),
|
|
hasProfileHeader: document.querySelector('.hvac-page-header h1') !== null,
|
|
profileHeaderText: document.querySelector('.hvac-page-header h1')?.textContent || 'none',
|
|
hasFormSections: document.querySelectorAll('.hvac-form-section').length,
|
|
formSectionTitles: [...document.querySelectorAll('.hvac-form-section h3')].map(h => h.textContent),
|
|
hasSaveButton: document.querySelector('button[type="submit"]') !== null,
|
|
saveButtonText: document.querySelector('button[type="submit"]')?.textContent || 'none',
|
|
contentPreview: document.body.innerText.slice(0, 500).replace(/\\s+/g, ' ').trim()
|
|
};
|
|
});
|
|
|
|
console.log('📊 Final test results:', finalTestResult);
|
|
|
|
if (finalTestResult.hasEditForm) {
|
|
console.log('🎉 COMPLETE SUCCESS! Master trainer profile edit is fully functional!');
|
|
|
|
// Test specific functionality
|
|
const functionalityTest = await page.evaluate(() => {
|
|
const form = document.querySelector('#hvac-master-profile-form');
|
|
if (!form) return { error: 'No form found' };
|
|
|
|
return {
|
|
hasNonceField: document.querySelector('input[name="hvac_profile_nonce"]') !== null,
|
|
hasUserIdField: document.querySelector('input[name="edit_user_id"]') !== null,
|
|
userIdValue: document.querySelector('input[name="edit_user_id"]')?.value || 'none',
|
|
hasProfileIdField: document.querySelector('input[name="profile_id"]') !== null,
|
|
profileIdValue: document.querySelector('input[name="profile_id"]')?.value || 'none',
|
|
certificationFields: {
|
|
status: document.querySelector('#certification_status') !== null,
|
|
type: document.querySelector('#certification_type') !== null,
|
|
date: document.querySelector('#date_certified') !== null
|
|
},
|
|
personalFields: {
|
|
firstName: document.querySelector('#trainer_first_name') !== null,
|
|
lastName: document.querySelector('#trainer_last_name') !== null,
|
|
displayName: document.querySelector('#trainer_display_name') !== null
|
|
},
|
|
locationFields: {
|
|
city: document.querySelector('#trainer_city') !== null,
|
|
state: document.querySelector('#trainer_state') !== null,
|
|
country: document.querySelector('#trainer_country') !== null
|
|
},
|
|
hasAutoSaveIndicator: document.querySelector('#hvac-autosave-indicator') !== null,
|
|
hasUnsavedIndicator: document.querySelector('#hvac-unsaved-indicator') !== null
|
|
};
|
|
});
|
|
|
|
console.log('⚙️ Functionality test results:', functionalityTest);
|
|
|
|
if (functionalityTest.userIdValue === '42') {
|
|
console.log('✅ Correct user data loaded (user_id=42)');
|
|
}
|
|
|
|
await page.screenshot({ path: 'master-trainer-edit-complete-success.png', fullPage: true });
|
|
|
|
} else if (finalTestResult.hasCriticalError) {
|
|
console.log('❌ Still has critical error after fixes');
|
|
} else if (finalTestResult.hasPermissionError) {
|
|
console.log('❌ Permission error - user may not have master trainer role');
|
|
} else if (finalTestResult.hasNoProfile) {
|
|
console.log('❌ No trainer profile found for user');
|
|
} else if (finalTestResult.hasSystemUnavailable) {
|
|
console.log('❌ Profile management system not available');
|
|
} else {
|
|
console.log('⚠️ Different issue - check content');
|
|
}
|
|
|
|
// Test dashboard integration
|
|
console.log('🔍 Testing complete dashboard integration...');
|
|
await page.goto('https://upskill-staging.measurequick.com/master-trainer/master-dashboard/');
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(3000); // Wait for AJAX
|
|
|
|
const dashboardIntegration = await page.evaluate(() => {
|
|
const trainerLinks = [...document.querySelectorAll('a[href*="edit-trainer-profile"]')];
|
|
return {
|
|
totalTrainerLinks: trainerLinks.length,
|
|
firstThreeLinks: trainerLinks.slice(0, 3).map(link => ({
|
|
text: link.textContent.trim(),
|
|
href: link.href
|
|
})),
|
|
hasTrainerTable: document.querySelector('table') !== null,
|
|
hasTrainerStats: document.body.innerText.includes('trainer') || document.body.innerText.includes('Trainer'),
|
|
statsText: document.body.innerText.match(/\d+\s+total\s+trainers?/i) || []
|
|
};
|
|
});
|
|
|
|
console.log('📊 Dashboard integration results:', dashboardIntegration);
|
|
|
|
if (dashboardIntegration.totalTrainerLinks > 0 && finalTestResult.hasEditForm) {
|
|
console.log('🎉 MASTER TRAINER SYSTEM IS FULLY OPERATIONAL!');
|
|
console.log(` ✅ ${dashboardIntegration.totalTrainerLinks} clickable trainer links in dashboard`);
|
|
console.log(` ✅ Profile edit form with ${finalTestResult.hasFormSections} sections`);
|
|
console.log(` ✅ All form fields and functionality working`);
|
|
}
|
|
|
|
console.log('================================================================================');
|
|
console.log('🎯 MASTER TRAINER SUCCESS TEST COMPLETE');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Error during master trainer success test:', error);
|
|
await page.screenshot({ path: 'master-trainer-success-error.png', fullPage: true });
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
}
|
|
|
|
testMasterTrainerSuccess(); |