upskill-event-manager/test-master-trainer-profiles.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

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