- 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>
140 lines
No EOL
6.8 KiB
JavaScript
140 lines
No EOL
6.8 KiB
JavaScript
const { chromium } = require('playwright');
|
|
|
|
async function testMasterTrainerProfiles() {
|
|
console.log('🔍 TESTING MASTER TRAINER PROFILE MANAGEMENT');
|
|
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');
|
|
|
|
// Check master dashboard for trainer list
|
|
console.log('🔍 Checking master dashboard for trainer information...');
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
const dashboardContent = await page.evaluate(() => {
|
|
const trainerLinks = [...document.querySelectorAll('a[href*="trainer"], a[href*="profile"]')];
|
|
const clickableTrainers = trainerLinks.filter(link =>
|
|
link.textContent.includes('@') ||
|
|
link.textContent.match(/[A-Z][a-z]+ [A-Z][a-z]+/) ||
|
|
link.href.includes('trainer-profile')
|
|
);
|
|
|
|
return {
|
|
totalLinks: trainerLinks.length,
|
|
clickableTrainers: clickableTrainers.map(link => ({
|
|
text: link.textContent.trim(),
|
|
href: link.href,
|
|
isEmail: link.textContent.includes('@')
|
|
})),
|
|
hasTrainerStats: document.body.innerText.includes('trainers') || document.body.innerText.includes('Trainers'),
|
|
statsPreview: document.body.innerText.match(/\d+\s+trainers?/gi) || []
|
|
};
|
|
});
|
|
|
|
console.log('👥 Master dashboard trainer info:', dashboardContent);
|
|
|
|
// Try to find and click on a trainer profile link
|
|
if (dashboardContent.clickableTrainers.length > 0) {
|
|
console.log('🔍 Testing trainer profile access from master dashboard...');
|
|
const firstTrainer = dashboardContent.clickableTrainers[0];
|
|
console.log(`📍 Testing link: ${firstTrainer.text} -> ${firstTrainer.href}`);
|
|
|
|
await page.goto(firstTrainer.href);
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
const profilePageContent = await page.evaluate(() => {
|
|
return {
|
|
url: window.location.href,
|
|
title: document.title,
|
|
hasProfileContent: document.querySelector('.hvac-trainer-profile-view, .profile') !== null,
|
|
hasEditCapability: document.querySelector('input, select, textarea, [contenteditable]') !== null,
|
|
pageType: document.body.innerText.includes('Edit') ? 'edit' : 'view',
|
|
contentPreview: document.body.innerText.slice(0, 400).replace(/\\s+/g, ' ').trim()
|
|
};
|
|
});
|
|
|
|
console.log('👤 Trainer profile page results:', profilePageContent);
|
|
|
|
if (profilePageContent.hasProfileContent) {
|
|
console.log('✅ Master trainer can access trainer profiles!');
|
|
} else {
|
|
console.log('❌ Profile content not found');
|
|
}
|
|
|
|
await page.screenshot({ path: 'master-trainer-profile-access.png', fullPage: true });
|
|
} else {
|
|
console.log('⚠️ No clickable trainer links found in master dashboard');
|
|
}
|
|
|
|
// Test master trainer editing capability
|
|
console.log('🔍 Testing master trainer profile editing capabilities...');
|
|
|
|
// Try to access a trainer profile edit URL directly
|
|
const testTrainerEditUrl = 'https://upskill-staging.measurequick.com/master-trainer/trainer-profile/edit?user_id=1';
|
|
await page.goto(testTrainerEditUrl);
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
const editPageContent = await page.evaluate(() => {
|
|
return {
|
|
url: window.location.href,
|
|
title: document.title,
|
|
hasEditForm: document.querySelector('form') !== null,
|
|
hasTrainerFields: document.querySelector('input[name*="trainer"], select[name*="trainer"]') !== null,
|
|
isForbidden: document.body.innerText.includes('403') || document.body.innerText.includes('forbidden'),
|
|
isNotFound: document.body.innerText.includes('404') || document.body.innerText.includes('not found'),
|
|
pageContent: document.body.innerText.slice(0, 300).replace(/\\s+/g, ' ').trim()
|
|
};
|
|
});
|
|
|
|
console.log('✏️ Master trainer edit capability:', editPageContent);
|
|
|
|
await page.screenshot({ path: 'master-trainer-edit-test.png', fullPage: true });
|
|
|
|
// Test access to trainer list/management
|
|
console.log('🔍 Testing trainer management access...');
|
|
const trainerManagementUrls = [
|
|
'https://upskill-staging.measurequick.com/master-trainer/trainers/',
|
|
'https://upskill-staging.measurequick.com/wp-admin/users.php?role=hvac_trainer'
|
|
];
|
|
|
|
for (const url of trainerManagementUrls) {
|
|
console.log(`📍 Testing: ${url}`);
|
|
await page.goto(url);
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
const pageInfo = await page.evaluate(() => {
|
|
return {
|
|
title: document.title,
|
|
hasUserList: document.querySelector('.wp-list-table, .user-list, .trainer-list') !== null,
|
|
userCount: document.querySelectorAll('tr[id*="user"], .trainer-item').length,
|
|
accessDenied: document.body.innerText.includes('access denied') || document.body.innerText.includes('permission'),
|
|
isAdminArea: window.location.href.includes('wp-admin')
|
|
};
|
|
});
|
|
|
|
console.log(` 📊 Result:`, pageInfo);
|
|
}
|
|
|
|
console.log('================================================================================');
|
|
console.log('🎯 MASTER TRAINER PROFILE MANAGEMENT TEST COMPLETE');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Error during master trainer profile test:', error);
|
|
await page.screenshot({ path: 'master-trainer-profile-error.png', fullPage: true });
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
}
|
|
|
|
testMasterTrainerProfiles(); |