- Add comprehensive test suite (test-comprehensive-e2e-staging.js) with 100+ tests covering: * Role-based access control validation (guest/trainer/master trainer) * Page content verification for 50+ custom templates * Dashboard functionality testing with real data scenarios * Public trainer directory interaction testing * Mobile responsiveness verification (375px/768px/1920px viewports) * Security validation (XSS/CSRF/SQL injection prevention) * Performance monitoring with load time measurements * JavaScript error detection and WordPress error validation - Add MCP Playwright browser tools simulation (test-mcp-browser-staging.js) for: * Headed browser visual validation * UI interaction testing with screenshot documentation * Form interaction and navigation flow testing * Real user experience validation - Add test execution wrapper (staging-test-runner.js) with: * Environment configuration management * Test account credential handling * Command-line interface for easy execution * Headless/headed mode switching - Add comprehensive testing documentation: * Detailed 5-phase testing strategy (COMPREHENSIVE-E2E-TESTING-PLAN.md) * Complete implementation guide (STAGING-TESTING-STATUS-REPORT.md) * Expert analysis integration from zen testgen with Kimi K2 * Risk-based testing priorities and success criteria - Implement systematic testing approach using zen deepthink analysis: * WordPress-specific testing patterns for plugin architecture * Test data factory recommendations for consistent fixtures * Performance regression testing against pre-transformation benchmarks * Role boundary security testing for privilege escalation prevention Ready for immediate execution on staging environment to identify bugs, blank pages, and optimization opportunities through real browser interaction. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			108 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env node
 | ||
| 
 | ||
| /**
 | ||
|  * STAGING TEST RUNNER
 | ||
|  *
 | ||
|  * Quick script to run comprehensive staging tests with proper configuration
 | ||
|  * and environment variable handling.
 | ||
|  */
 | ||
| 
 | ||
| const { execSync } = require('child_process');
 | ||
| const fs = require('fs');
 | ||
| const path = require('path');
 | ||
| 
 | ||
| // Configuration
 | ||
| const STAGING_URL = 'https://upskill-staging.measurequick.com';
 | ||
| const TEST_FILE = './test-comprehensive-e2e-staging.js';
 | ||
| 
 | ||
| // Test account configuration (update these as needed)
 | ||
| const TEST_ACCOUNTS = {
 | ||
|     TRAINER_USERNAME: 'test_trainer',
 | ||
|     TRAINER_PASSWORD: 'TestTrainer123!',
 | ||
|     MASTER_USERNAME: 'test_master',
 | ||
|     MASTER_PASSWORD: 'TestMaster123!'
 | ||
| };
 | ||
| 
 | ||
| function runTests() {
 | ||
|     console.log('🚀 Starting Comprehensive Staging Tests');
 | ||
|     console.log(`🌐 Target URL: ${STAGING_URL}`);
 | ||
| 
 | ||
|     // Check if test file exists
 | ||
|     if (!fs.existsSync(TEST_FILE)) {
 | ||
|         console.error(`❌ Test file not found: ${TEST_FILE}`);
 | ||
|         process.exit(1);
 | ||
|     }
 | ||
| 
 | ||
|     // Set environment variables
 | ||
|     const env = {
 | ||
|         ...process.env,
 | ||
|         BASE_URL: STAGING_URL,
 | ||
|         HEADLESS: 'false', // Set to 'true' for headless mode
 | ||
|         ...TEST_ACCOUNTS
 | ||
|     };
 | ||
| 
 | ||
|     try {
 | ||
|         console.log('\n📋 Test Configuration:');
 | ||
|         console.log(`  - Headless Mode: ${env.HEADLESS}`);
 | ||
|         console.log(`  - Base URL: ${env.BASE_URL}`);
 | ||
|         console.log(`  - Trainer Account: ${env.TRAINER_USERNAME}`);
 | ||
|         console.log(`  - Master Account: ${env.MASTER_USERNAME}`);
 | ||
| 
 | ||
|         console.log('\n▶️  Starting test execution...\n');
 | ||
| 
 | ||
|         // Run the test
 | ||
|         execSync(`node ${TEST_FILE}`, {
 | ||
|             stdio: 'inherit',
 | ||
|             env: env
 | ||
|         });
 | ||
| 
 | ||
|         console.log('\n✅ Test execution completed successfully');
 | ||
| 
 | ||
|     } catch (error) {
 | ||
|         console.error('\n❌ Test execution failed');
 | ||
|         console.error(`Exit code: ${error.status}`);
 | ||
|         process.exit(error.status || 1);
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| // Handle command line arguments
 | ||
| const args = process.argv.slice(2);
 | ||
| 
 | ||
| if (args.includes('--help') || args.includes('-h')) {
 | ||
|     console.log(`
 | ||
| 🧪 STAGING TEST RUNNER
 | ||
| 
 | ||
| Usage: node staging-test-runner.js [options]
 | ||
| 
 | ||
| Options:
 | ||
|   --headless          Run tests in headless mode
 | ||
|   --trainer-user      Set trainer username
 | ||
|   --master-user       Set master trainer username
 | ||
|   --help, -h          Show this help message
 | ||
| 
 | ||
| Examples:
 | ||
|   node staging-test-runner.js
 | ||
|   node staging-test-runner.js --headless
 | ||
|   node staging-test-runner.js --trainer-user my_trainer --master-user my_master
 | ||
|     `);
 | ||
|     process.exit(0);
 | ||
| }
 | ||
| 
 | ||
| // Handle headless mode
 | ||
| if (args.includes('--headless')) {
 | ||
|     TEST_ACCOUNTS.HEADLESS = 'true';
 | ||
| }
 | ||
| 
 | ||
| // Handle custom usernames
 | ||
| const trainerUserIndex = args.indexOf('--trainer-user');
 | ||
| if (trainerUserIndex >= 0 && args[trainerUserIndex + 1]) {
 | ||
|     TEST_ACCOUNTS.TRAINER_USERNAME = args[trainerUserIndex + 1];
 | ||
| }
 | ||
| 
 | ||
| const masterUserIndex = args.indexOf('--master-user');
 | ||
| if (masterUserIndex >= 0 && args[masterUserIndex + 1]) {
 | ||
|     TEST_ACCOUNTS.MASTER_USERNAME = args[masterUserIndex + 1];
 | ||
| }
 | ||
| 
 | ||
| // Run the tests
 | ||
| runTests(); |