#!/usr/bin/env node /** * Quick Docker Environment Verification Script * Tests basic functionality of Docker WordPress setup */ const { chromium } = require('playwright'); // Configuration const CONFIG = { baseURL: process.env.BASE_URL || 'http://localhost:8080', headless: process.env.HEADLESS !== 'false', timeout: 30000, }; console.log('๐Ÿ” HVAC Docker Environment Verification'); console.log('========================================'); console.log(`๐Ÿ“ Target: ${CONFIG.baseURL}`); console.log(`๐Ÿ–ฅ๏ธ Mode: ${CONFIG.headless ? 'Headless' : 'Headed'}`); console.log('========================================'); async function verifyEnvironment() { const browser = await chromium.launch({ headless: CONFIG.headless, timeout: CONFIG.timeout }); const context = await browser.newContext(); const page = await context.newPage(); try { // Test 1: Basic WordPress accessibility console.log('๐Ÿงช Test 1: WordPress Accessibility...'); await page.goto(CONFIG.baseURL, { timeout: CONFIG.timeout }); const title = await page.title(); console.log(`โœ… WordPress accessible - Title: ${title}`); // Test 2: Admin area accessibility console.log('๐Ÿงช Test 2: Admin Area...'); await page.goto(`${CONFIG.baseURL}/wp-admin/`, { timeout: CONFIG.timeout }); // Should see login form or dashboard const hasLogin = await page.locator('#loginform').isVisible().catch(() => false); const hasAdminBar = await page.locator('#wpadminbar').isVisible().catch(() => false); if (hasLogin || hasAdminBar) { console.log('โœ… Admin area accessible'); } else { console.log('โš ๏ธ Admin area response unexpected'); } // Test 3: Plugin check console.log('๐Ÿงช Test 3: HVAC Plugin Check...'); await page.goto(`${CONFIG.baseURL}/wp-admin/plugins.php`, { timeout: CONFIG.timeout }); // Look for HVAC plugin in page content const content = await page.content(); const hasHVACPlugin = content.includes('hvac-community-events') || content.includes('HVAC Community Events'); if (hasHVACPlugin) { console.log('โœ… HVAC plugin detected'); } else { console.log('โš ๏ธ HVAC plugin not detected in plugins page'); } // Test 4: Try HVAC pages console.log('๐Ÿงช Test 4: HVAC Pages...'); const hvacPages = [ '/trainer/dashboard/', '/master-trainer/master-dashboard/', '/training-login/' ]; for (const pagePath of hvacPages) { try { const response = await page.goto(`${CONFIG.baseURL}${pagePath}`, { timeout: 10000, waitUntil: 'networkidle' }); if (response.status() === 200) { console.log(`โœ… ${pagePath} - accessible`); } else if (response.status() === 302 || response.status() === 301) { console.log(`โžก๏ธ ${pagePath} - redirects (likely auth required)`); } else { console.log(`โš ๏ธ ${pagePath} - Status: ${response.status()}`); } } catch (error) { console.log(`โŒ ${pagePath} - Error: ${error.message.substring(0, 50)}...`); } } // Test 5: Login test with test user console.log('๐Ÿงช Test 5: Test User Login...'); try { await page.goto(`${CONFIG.baseURL}/wp-login.php`, { timeout: CONFIG.timeout }); // Fill login form await page.fill('#user_login', 'test_master'); await page.fill('#user_pass', 'TestMaster123!'); await page.click('#wp-submit'); await page.waitForLoadState('networkidle', { timeout: 10000 }); const currentUrl = page.url(); if (currentUrl.includes('wp-admin')) { console.log('โœ… Test user login successful'); // Try accessing master trainer dashboard while logged in await page.goto(`${CONFIG.baseURL}/master-trainer/master-dashboard/`, { timeout: 10000 }); const pageTitle = await page.title(); console.log(`๐Ÿ“Š Master Dashboard - Title: ${pageTitle}`); } else { console.log('โš ๏ธ Login may have failed - not redirected to admin'); } } catch (error) { console.log(`โŒ Login test failed: ${error.message.substring(0, 50)}...`); } console.log('\n๐Ÿ Environment Verification Complete'); console.log('===================================='); console.log('๐Ÿ’ก Status: Docker environment is set up'); console.log(`๐Ÿ“‹ Admin Access: ${CONFIG.baseURL}/wp-admin/ (admin/admin123)`); console.log(`๐Ÿ‘ค Test User: ${CONFIG.baseURL}/wp-admin/ (test_master/TestMaster123!)`); console.log(`๐Ÿ“Š PhpMyAdmin: http://localhost:8081`); console.log(`๐Ÿ“ง MailHog: http://localhost:8025`); return true; } catch (error) { console.log(`โŒ Verification failed: ${error.message}`); return false; } finally { await browser.close(); } } // Run verification verifyEnvironment() .then(success => { if (success) { console.log('\nโœ… Environment verification passed'); process.exit(0); } else { console.log('\nโŒ Environment verification failed'); process.exit(1); } }) .catch(error => { console.error(`โŒ Fatal error: ${error.message}`); process.exit(1); });