- Create authoritative DEPRECATED-FILES.md documenting 27+ deprecated files - Add deprecation notices to legacy templates (page-create-event.php, page-manage-event.php, page-edit-event.php) - Mark deprecated JavaScript files (hvac-event-form-templates.js) with migration paths - Add deprecation notices to 8 legacy test files with comprehensive explanations - Update Status.md to reflect completion of comprehensive event creation system v3.2.0 - Automated deprecation script for consistent messaging across files All deprecated functionality has been replaced by: - page-tec-create-event.php with AI assistance and native TEC integration - Comprehensive E2E testing framework with Page Object Model - Integrated template system with enhanced user experience - Modern responsive design with role-based permissions Scheduled for removal in v3.3 after transition period 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
283 lines
No EOL
11 KiB
JavaScript
283 lines
No EOL
11 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* ⛔ DEPRECATED - January 2025
|
|
* This test file has been deprecated and replaced by comprehensive E2E testing framework
|
|
*
|
|
* Reasons for deprecation:
|
|
* - Tests old event creation/management forms that have been replaced
|
|
* - Individual test files replaced by comprehensive test suites
|
|
* - Page Object Model (POM) architecture provides better test organization
|
|
* - Modern test framework with better error handling and reporting
|
|
*
|
|
* Replacement: test-master-trainer-e2e.js + test-comprehensive-validation.js
|
|
* - Comprehensive E2E testing covering all event workflows
|
|
* - Page Object Model for maintainable tests
|
|
* - Better test organization and reporting
|
|
* - Docker-based testing environment
|
|
*
|
|
* See: DEPRECATED-FILES.md for full migration details
|
|
*/
|
|
|
|
const { chromium } = require('playwright');
|
|
|
|
/**
|
|
* Comprehensive Create Event Page 404 Debugging Script
|
|
*
|
|
* This script systematically checks:
|
|
* 1. Page existence in WordPress database
|
|
* 2. Template assignment and shortcode content
|
|
* 3. Authentication and access permissions
|
|
* 4. TEC shortcode rendering
|
|
* 5. REST API script loading
|
|
* 6. URL routing and rewrite rules
|
|
*/
|
|
|
|
const BASE_URL = 'https://upskill-staging.measurequick.com';
|
|
const CREATE_EVENT_URL = `${BASE_URL}/trainer/create-event/`;
|
|
const TEST_CREDENTIALS = {
|
|
username: 'test_trainer',
|
|
password: 'TestTrainer123!'
|
|
};
|
|
|
|
// ANSI color codes for terminal output
|
|
const colors = {
|
|
red: '\x1b[31m',
|
|
green: '\x1b[32m',
|
|
yellow: '\x1b[33m',
|
|
blue: '\x1b[34m',
|
|
magenta: '\x1b[35m',
|
|
cyan: '\x1b[36m',
|
|
reset: '\x1b[0m',
|
|
bold: '\x1b[1m'
|
|
};
|
|
|
|
function log(message, color = 'reset') {
|
|
console.log(`${colors[color]}${message}${colors.reset}`);
|
|
}
|
|
|
|
function logSection(title) {
|
|
log('\n' + '='.repeat(60), 'cyan');
|
|
log(` ${title}`, 'bold');
|
|
log('='.repeat(60), 'cyan');
|
|
}
|
|
|
|
function logStep(step, description) {
|
|
log(`\n${step}. ${description}`, 'blue');
|
|
}
|
|
|
|
function logSuccess(message) {
|
|
log(`✅ ${message}`, 'green');
|
|
}
|
|
|
|
function logError(message) {
|
|
log(`❌ ${message}`, 'red');
|
|
}
|
|
|
|
function logWarning(message) {
|
|
log(`⚠️ ${message}`, 'yellow');
|
|
}
|
|
|
|
async function debugCreateEventPage() {
|
|
const browser = await chromium.launch({ headless: true });
|
|
const context = await browser.newContext();
|
|
const page = await context.newPage();
|
|
|
|
// Enable request/response logging
|
|
page.on('request', request => {
|
|
if (request.url().includes('create-event') || request.url().includes('hvac')) {
|
|
log(`📤 REQUEST: ${request.method()} ${request.url()}`, 'magenta');
|
|
}
|
|
});
|
|
|
|
page.on('response', response => {
|
|
if (response.url().includes('create-event') || response.url().includes('hvac')) {
|
|
log(`📥 RESPONSE: ${response.status()} ${response.url()}`, 'magenta');
|
|
}
|
|
});
|
|
|
|
// Capture console logs
|
|
page.on('console', msg => {
|
|
if (msg.text().includes('Create Event') || msg.text().includes('HVAC') || msg.text().includes('REST API')) {
|
|
log(`🖥️ CONSOLE: ${msg.text()}`, 'cyan');
|
|
}
|
|
});
|
|
|
|
try {
|
|
logSection('CREATE EVENT PAGE 404 DEBUGGING');
|
|
|
|
// Step 1: Test direct access without authentication
|
|
logStep(1, 'Testing direct access to create-event page (no auth)');
|
|
const directResponse = await page.goto(CREATE_EVENT_URL, { waitUntil: 'networkidle' });
|
|
log(`Status: ${directResponse.status()}`);
|
|
|
|
if (directResponse.status() === 404) {
|
|
logError('Page returns 404 - page may not exist in database');
|
|
} else if (directResponse.status() === 302 || directResponse.status() === 301) {
|
|
logWarning('Page redirects - likely authentication required');
|
|
} else {
|
|
logSuccess('Page accessible without authentication');
|
|
}
|
|
|
|
await page.screenshot({ path: './test-results/01-create-event-no-auth.png', fullPage: true });
|
|
|
|
// Step 2: Check if login is required
|
|
logStep(2, 'Checking if page requires authentication');
|
|
const currentUrl = page.url();
|
|
if (currentUrl.includes('login') || currentUrl.includes('wp-admin')) {
|
|
logWarning('Page requires authentication - redirected to login');
|
|
} else {
|
|
log(`Current URL: ${currentUrl}`);
|
|
}
|
|
|
|
// Step 3: Authenticate as test trainer
|
|
logStep(3, 'Authenticating as test trainer');
|
|
await page.goto(`${BASE_URL}/trainer/login/`);
|
|
|
|
try {
|
|
await page.fill('#user_login', TEST_CREDENTIALS.username);
|
|
await page.fill('#user_pass', TEST_CREDENTIALS.password);
|
|
await page.click('#wp-submit');
|
|
await page.waitForTimeout(2000);
|
|
logSuccess('Successfully authenticated');
|
|
} catch (error) {
|
|
logError(`Authentication failed: ${error.message}`);
|
|
await page.screenshot({ path: './test-results/02-auth-failed.png', fullPage: true });
|
|
}
|
|
|
|
// Step 4: Test authenticated access to create-event page
|
|
logStep(4, 'Testing authenticated access to create-event page');
|
|
const authResponse = await page.goto(CREATE_EVENT_URL, { waitUntil: 'networkidle' });
|
|
log(`Status: ${authResponse.status()}`);
|
|
|
|
if (authResponse.status() === 404) {
|
|
logError('Still returns 404 with authentication - page definitely doesn\'t exist');
|
|
} else {
|
|
logSuccess('Page accessible with authentication');
|
|
}
|
|
|
|
await page.screenshot({ path: './test-results/03-create-event-auth.png', fullPage: true });
|
|
|
|
// Step 5: Check page content and title
|
|
logStep(5, 'Analyzing page content');
|
|
const pageTitle = await page.title();
|
|
log(`Page Title: ${pageTitle}`);
|
|
|
|
const hasHVACContent = await page.locator('.hvac-create-event-wrapper').count() > 0;
|
|
log(`HVAC wrapper present: ${hasHVACContent}`);
|
|
|
|
const hasNavigation = await page.locator('.hvac-trainer-nav').count() > 0;
|
|
log(`HVAC navigation present: ${hasNavigation}`);
|
|
|
|
// Step 6: Check for TEC form presence
|
|
logStep(6, 'Checking for The Events Calendar form');
|
|
const hasTECForm = await page.locator('#tribe-community-events').count() > 0;
|
|
log(`TEC form container present: ${hasTECForm}`);
|
|
|
|
const hasSubmissionForm = await page.locator('form[id*="tribe"]').count() > 0;
|
|
log(`TEC submission form present: ${hasSubmissionForm}`);
|
|
|
|
if (!hasTECForm && !hasSubmissionForm) {
|
|
logError('No TEC form found - shortcode may not be rendering');
|
|
|
|
// Check for error messages
|
|
const errorText = await page.textContent('body');
|
|
if (errorText.includes('do_shortcode')) {
|
|
logError('Shortcode syntax error detected');
|
|
}
|
|
if (errorText.includes('tribe_community_events')) {
|
|
logError('TEC Community Events shortcode not recognized');
|
|
}
|
|
}
|
|
|
|
// Step 7: Check REST API script loading
|
|
logStep(7, 'Checking REST API script loading');
|
|
const restApiScriptLoaded = await page.evaluate(() => {
|
|
return typeof HVACRestEventSubmission !== 'undefined';
|
|
});
|
|
log(`REST API script loaded: ${restApiScriptLoaded}`);
|
|
|
|
const restApiScriptExists = await page.locator('script[src*="hvac-rest-api-event-submission"]').count() > 0;
|
|
log(`REST API script tag present: ${restApiScriptExists}`);
|
|
|
|
// Step 8: Test alternative URLs
|
|
logStep(8, 'Testing alternative URL patterns');
|
|
const alternativeUrls = [
|
|
`${BASE_URL}/trainer/create-event`, // Without trailing slash
|
|
`${BASE_URL}/create-event/`, // Direct path
|
|
`${BASE_URL}/events/community/add`, // TEC default
|
|
`${BASE_URL}/?page_id=create-event` // Query parameter
|
|
];
|
|
|
|
for (const url of alternativeUrls) {
|
|
try {
|
|
const response = await page.goto(url, { waitUntil: 'networkidle', timeout: 5000 });
|
|
log(`${url}: ${response.status()}`);
|
|
} catch (error) {
|
|
log(`${url}: TIMEOUT/ERROR`, 'red');
|
|
}
|
|
}
|
|
|
|
// Step 9: Check WordPress database via REST API
|
|
logStep(9, 'Checking WordPress pages via REST API');
|
|
try {
|
|
const apiResponse = await page.goto(`${BASE_URL}/wp-json/wp/v2/pages?search=create-event`, { waitUntil: 'networkidle' });
|
|
const pages = await apiResponse.json();
|
|
log(`Found ${pages.length} pages matching 'create-event'`);
|
|
|
|
if (pages.length > 0) {
|
|
pages.forEach((page, index) => {
|
|
log(`Page ${index + 1}: ID=${page.id}, Title="${page.title.rendered}", Slug="${page.slug}"`);
|
|
log(` Status: ${page.status}, Template: ${page.template || 'default'}`);
|
|
});
|
|
} else {
|
|
logError('No pages found with "create-event" in title or content');
|
|
}
|
|
} catch (error) {
|
|
logError(`Failed to check REST API: ${error.message}`);
|
|
}
|
|
|
|
// Step 10: Generate debugging summary
|
|
logStep(10, 'Generating debugging summary');
|
|
await page.screenshot({ path: './test-results/04-final-state.png', fullPage: true });
|
|
|
|
logSection('DEBUGGING SUMMARY');
|
|
|
|
if (authResponse.status() === 404) {
|
|
logError('ROOT CAUSE: Page does not exist in WordPress database');
|
|
log('\nRECOMMENDED ACTIONS:', 'yellow');
|
|
log('1. Run the create-event-pages.sh script again');
|
|
log('2. Check if the script completed successfully');
|
|
log('3. Verify page was created with correct parent hierarchy');
|
|
log('4. Check WordPress admin for any error messages');
|
|
} else if (!hasTECForm && !hasSubmissionForm) {
|
|
logError('ROOT CAUSE: TEC shortcode not rendering properly');
|
|
log('\nRECOMMENDED ACTIONS:', 'yellow');
|
|
log('1. Verify The Events Calendar Community Events plugin is active');
|
|
log('2. Check if TEC Community Events is properly configured');
|
|
log('3. Test TEC shortcode on a simple page');
|
|
log('4. Review plugin dependencies');
|
|
} else if (!restApiScriptLoaded) {
|
|
logWarning('ISSUE: REST API enhancement script not loading');
|
|
log('\nRECOMMENDED ACTIONS:', 'yellow');
|
|
log('1. Check if HVAC plugin assets are enqueued properly');
|
|
log('2. Verify script path and permissions');
|
|
log('3. Test script loading independently');
|
|
} else {
|
|
logSuccess('Page appears to be working correctly');
|
|
log('\nIf still experiencing issues:', 'yellow');
|
|
log('1. Clear all caches (WordPress, CDN, browser)');
|
|
log('2. Check for JavaScript errors in browser console');
|
|
log('3. Verify user permissions for event creation');
|
|
}
|
|
|
|
} catch (error) {
|
|
logError(`Script failed: ${error.message}`);
|
|
await page.screenshot({ path: './test-results/error-state.png', fullPage: true });
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
}
|
|
|
|
// Run the debugging script
|
|
debugCreateEventPage().catch(console.error); |