upskill-event-manager/test-trainer-approval-simple.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

151 lines
No EOL
6.1 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const { chromium } = require('playwright');
const path = require('path');
const fs = require('fs');
async function testTrainerApprovalWorkflow() {
console.log('🧪 Testing Trainer Approval Workflow...\n');
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
// Ensure screenshots directory exists
const screenshotDir = path.join(__dirname, 'test-screenshots');
if (!fs.existsSync(screenshotDir)) {
fs.mkdirSync(screenshotDir, { recursive: true });
}
try {
// Test 1: Check Registration Page
console.log('1⃣ Testing Registration Page...');
await page.goto('https://upskill-staging.measurequick.com/trainer/registration/');
await page.waitForLoadState('networkidle');
// Take screenshot of registration page
await page.screenshot({
path: path.join(screenshotDir, '01-registration-page.png'),
fullPage: true
});
// Check if form exists
const formExists = await page.locator('#hvac-registration-form').count() > 0;
console.log(` ✅ Registration form exists: ${formExists}`);
// Check for required fields
const requiredFields = [
'#user_email', '#user_pass', '#confirm_password',
'#first_name', '#last_name', '#display_name',
'#business_name', '#business_phone', '#business_email'
];
console.log(' 📋 Checking required fields...');
for (const field of requiredFields) {
const exists = await page.locator(field).count() > 0;
console.log(` ${exists ? '✅' : '❌'} ${field}`);
}
// Test 2: Check Pending Page
console.log('\n2⃣ Testing Pending Status Page...');
await page.goto('https://upskill-staging.measurequick.com/trainer-account-pending/');
await page.waitForLoadState('networkidle');
await page.screenshot({
path: path.join(screenshotDir, '02-pending-page.png'),
fullPage: true
});
const pendingH1 = await page.locator('h1').textContent();
console.log(` 📄 Pending page title: "${pendingH1}"`);
// Test 3: Check Disabled Page
console.log('\n3⃣ Testing Disabled Status Page...');
await page.goto('https://upskill-staging.measurequick.com/trainer-account-disabled/');
await page.waitForLoadState('networkidle');
await page.screenshot({
path: path.join(screenshotDir, '03-disabled-page.png'),
fullPage: true
});
const disabledH1 = await page.locator('h1').textContent();
console.log(` 📄 Disabled page title: "${disabledH1}"`);
// Test 4: Check Master Dashboard (login required)
console.log('\n4⃣ Testing Master Dashboard Login...');
// Login 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');
// Wait for login to complete
await page.waitForURL(/wp-admin|master-trainer/, { timeout: 30000 });
// Navigate to master dashboard
await page.goto('https://upskill-staging.measurequick.com/master-trainer/dashboard/');
await page.waitForLoadState('networkidle');
await page.screenshot({
path: path.join(screenshotDir, '04-master-dashboard.png'),
fullPage: true
});
// Check for trainer table
const hasTrainerTable = await page.locator('.trainers-table-container').count() > 0;
console.log(` ✅ Master dashboard trainer table exists: ${hasTrainerTable}`);
// Check for filter controls
const hasStatusFilter = await page.locator('#trainer-status-filter').count() > 0;
const hasSearchBox = await page.locator('#trainer-search').count() > 0;
const hasBulkUpdate = await page.locator('#bulk-status-update').count() > 0;
console.log(` ✅ Status filter exists: ${hasStatusFilter}`);
console.log(` ✅ Search box exists: ${hasSearchBox}`);
console.log(` ✅ Bulk update dropdown exists: ${hasBulkUpdate}`);
// Try filtering by pending
if (hasStatusFilter) {
await page.selectOption('#trainer-status-filter', 'pending');
await page.click('#apply-trainer-filters');
await page.waitForTimeout(2000);
await page.screenshot({
path: path.join(screenshotDir, '05-master-dashboard-pending.png'),
fullPage: true
});
const hasPendingTrainers = await page.locator('.trainers-table tr').count() > 1 ||
await page.locator('.no-data-message').count() > 0;
console.log(` ✅ Pending filter works: ${hasPendingTrainers}`);
}
// Test 5: Registration Success Page
console.log('\n5⃣ Testing Registration Success Page...');
await page.goto('https://upskill-staging.measurequick.com/registration-pending/');
await page.waitForLoadState('networkidle');
await page.screenshot({
path: path.join(screenshotDir, '06-registration-success.png'),
fullPage: true
});
const successH1 = await page.locator('h1').textContent();
console.log(` 📄 Success page title: "${successH1}"`);
console.log('\n✅ All tests completed!');
console.log(`\n📸 Screenshots saved to: ${screenshotDir}`);
} catch (error) {
console.error('❌ Test failed:', error);
await page.screenshot({
path: path.join(screenshotDir, 'error-screenshot.png'),
fullPage: true
});
} finally {
await browser.close();
}
}
// Run the test
testTrainerApprovalWorkflow().catch(console.error);