✅ Fixed the core issue - plugin now automatically creates pages on activation ## Changes Made - Updated HVAC_Announcements_Manager::activate() to create all required pages - Fixed duplicate method issue by removing instance methods - Added page creation to HVAC_Activator::activate() hook - Added deactivation cleanup to HVAC_Deactivator::deactivate() ## Pages Auto-Created - /master-trainer/manage-announcements/ (with [hvac_announcements_manager]) - /trainer/announcements/ (with [hvac_announcements_timeline]) - /trainer/training-resources/ (with Google Drive embed) ## Verification ✅ All pages now exist and load successfully ✅ Shortcodes are properly displayed ✅ Components are loading (timeline, iframe) ✅ No more manual page creation required Plugin activation now handles complete announcements system setup automatically. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
139 lines
No EOL
5.5 KiB
JavaScript
139 lines
No EOL
5.5 KiB
JavaScript
const { chromium } = require('@playwright/test');
|
|
|
|
(async () => {
|
|
const browser = await chromium.launch({ headless: true });
|
|
const context = await browser.newContext();
|
|
const page = await context.newPage();
|
|
|
|
console.log('🔍 Testing HVAC Announcements System on Staging...\n');
|
|
|
|
try {
|
|
// Step 1: Login as master trainer
|
|
console.log('1. Logging in as master trainer...');
|
|
await page.goto('https://upskill-staging.measurequick.com/training-login/');
|
|
await page.waitForLoadState('networkidle', { timeout: 15000 });
|
|
|
|
await page.fill('#user_login', 'test_master');
|
|
await page.fill('#user_pass', 'TestMaster123!');
|
|
await page.click('#wp-submit');
|
|
|
|
// Wait for redirect after login
|
|
await page.waitForTimeout(3000);
|
|
const currentUrl = page.url();
|
|
console.log(` ✅ Logged in successfully, current URL: ${currentUrl}`);
|
|
|
|
// Step 2: Test master trainer announcements page
|
|
console.log('\n2. Testing master trainer announcements page...');
|
|
await page.goto('https://upskill-staging.measurequick.com/master-trainer/manage-announcements/');
|
|
await page.waitForTimeout(3000);
|
|
|
|
const pageTitle = await page.title();
|
|
console.log(` Page title: ${pageTitle}`);
|
|
|
|
// Check if page loads without 404
|
|
const is404 = await page.locator('h1').textContent().then(text =>
|
|
text && (text.includes('404') || text.includes('Not Found'))
|
|
).catch(() => false);
|
|
|
|
if (is404) {
|
|
console.log(' ❌ Page returns 404 - need to create the page');
|
|
} else {
|
|
console.log(' ✅ Page loads successfully');
|
|
|
|
// Check for announcements content
|
|
const hasShortcode = await page.textContent('body').then(text =>
|
|
text.includes('[hvac_announcements_manager]')
|
|
);
|
|
|
|
const hasManager = await page.locator('#hvac-announcements-app, .hvac-announcements-manager').count();
|
|
|
|
console.log(` Shortcode visible: ${hasShortcode ? 'Yes' : 'No'}`);
|
|
console.log(` Manager component loaded: ${hasManager > 0 ? 'Yes' : 'No'}`);
|
|
}
|
|
|
|
// Step 3: Test trainer announcements page
|
|
console.log('\n3. Testing trainer announcements page...');
|
|
await page.goto('https://upskill-staging.measurequick.com/trainer/announcements/');
|
|
await page.waitForTimeout(3000);
|
|
|
|
const trainerPageTitle = await page.title();
|
|
console.log(` Page title: ${trainerPageTitle}`);
|
|
|
|
const trainerIs404 = await page.locator('h1').textContent().then(text =>
|
|
text && (text.includes('404') || text.includes('Not Found'))
|
|
).catch(() => false);
|
|
|
|
if (trainerIs404) {
|
|
console.log(' ❌ Page returns 404 - need to create the page');
|
|
} else {
|
|
console.log(' ✅ Page loads successfully');
|
|
|
|
const hasTimelineShortcode = await page.textContent('body').then(text =>
|
|
text.includes('[hvac_announcements_timeline]')
|
|
);
|
|
|
|
const hasTimeline = await page.locator('.hvac-announcements-timeline, .hvac-announcements-list').count();
|
|
|
|
console.log(` Timeline shortcode visible: ${hasTimelineShortcode ? 'Yes' : 'No'}`);
|
|
console.log(` Timeline component loaded: ${hasTimeline > 0 ? 'Yes' : 'No'}`);
|
|
}
|
|
|
|
// Step 4: Test training resources page
|
|
console.log('\n4. Testing training resources page...');
|
|
await page.goto('https://upskill-staging.measurequick.com/trainer/training-resources/');
|
|
await page.waitForTimeout(3000);
|
|
|
|
const resourcesPageTitle = await page.title();
|
|
console.log(` Page title: ${resourcesPageTitle}`);
|
|
|
|
const resourcesIs404 = await page.locator('h1').textContent().then(text =>
|
|
text && (text.includes('404') || text.includes('Not Found'))
|
|
).catch(() => false);
|
|
|
|
if (resourcesIs404) {
|
|
console.log(' ❌ Page returns 404 - need to create the page');
|
|
} else {
|
|
console.log(' ✅ Page loads successfully');
|
|
|
|
const hasGoogleDriveShortcode = await page.textContent('body').then(text =>
|
|
text.includes('[hvac_google_drive_embed')
|
|
);
|
|
|
|
const hasIframe = await page.locator('iframe').count();
|
|
|
|
console.log(` Google Drive shortcode visible: ${hasGoogleDriveShortcode ? 'Yes' : 'No'}`);
|
|
console.log(` iframe loaded: ${hasIframe > 0 ? 'Yes' : 'No'}`);
|
|
}
|
|
|
|
// Step 5: Check if pages exist in WordPress admin
|
|
console.log('\n5. Checking WordPress pages...');
|
|
await page.goto('https://upskill-staging.measurequick.com/wp-admin/edit.php?post_type=page');
|
|
await page.waitForTimeout(3000);
|
|
|
|
// Search for our pages
|
|
const searchField = await page.locator('#post-search-input');
|
|
if (await searchField.count() > 0) {
|
|
await searchField.fill('announcements');
|
|
await page.click('#search-submit');
|
|
await page.waitForTimeout(2000);
|
|
|
|
const pageRows = await page.locator('.wp-list-table tbody tr').count();
|
|
console.log(` Found ${pageRows} pages matching "announcements"`);
|
|
|
|
if (pageRows > 0) {
|
|
const titles = await page.locator('.wp-list-table .row-title').allTextContents();
|
|
console.log(` Page titles found: ${titles.join(', ')}`);
|
|
}
|
|
}
|
|
|
|
console.log('\n📋 Summary:');
|
|
console.log('- If pages return 404, they need to be created manually in WordPress');
|
|
console.log('- Templates are deployed and ready');
|
|
console.log('- Shortcodes are registered and should work once pages exist');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Test failed:', error.message);
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
})(); |