- Fixed permission check in canUserEditEvent() method to properly check user roles
- Changed from checking non-existent 'hvac_trainer' capability to in_array('hvac_trainer', $user->roles)
- Trainers can now create new events and edit their own events
- Security maintained: trainers cannot edit others' events
- Added initial CSS file to fix narrow width and navigation z-index issues
- Page now displays at proper 1200px max width matching other trainer pages
- Navigation menu no longer hidden under site header (z-index: 100)
🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
170 lines
No EOL
6.6 KiB
JavaScript
170 lines
No EOL
6.6 KiB
JavaScript
/**
|
||
* Test to check if the edit page actually exists and what its settings are
|
||
*/
|
||
|
||
const { chromium } = require('playwright');
|
||
|
||
async function testPageExists() {
|
||
console.log('🔍 Testing Page Existence...\\n');
|
||
|
||
const browser = await chromium.launch({
|
||
headless: false,
|
||
args: ['--disable-dev-shm-usage', '--no-sandbox']
|
||
});
|
||
|
||
const context = await browser.newContext({
|
||
viewport: { width: 1280, height: 720 }
|
||
});
|
||
|
||
const page = await context.newPage();
|
||
const baseUrl = 'https://upskill-staging.measurequick.com';
|
||
|
||
try {
|
||
// Step 1: Login as admin to check WordPress admin
|
||
console.log('1️⃣ Logging in as admin...');
|
||
await page.goto(`${baseUrl}/wp-admin/`);
|
||
await page.waitForLoadState('networkidle');
|
||
|
||
// Check if already logged in or need to login
|
||
const hasLoginForm = await page.$('input[name="log"]') !== null;
|
||
|
||
if (hasLoginForm) {
|
||
console.log(' Admin login required - checking page via direct URL instead...');
|
||
|
||
// Step 2: Try to access the page directly and see what happens
|
||
console.log('\\n2️⃣ Checking page directly...');
|
||
await page.goto(`${baseUrl}/trainer/event/edit/`);
|
||
await page.waitForLoadState('networkidle');
|
||
|
||
const currentUrl = page.url();
|
||
console.log(' Current URL:', currentUrl);
|
||
|
||
// Check what type of page we get
|
||
const pageInfo = await page.evaluate(() => {
|
||
const title = document.title;
|
||
const bodyClasses = document.body.className;
|
||
const hasNotFound = document.body.innerHTML.includes('404') ||
|
||
document.body.innerHTML.includes('not found') ||
|
||
document.body.innerHTML.includes('Not Found');
|
||
const hasLoginForm = document.querySelector('input[name="log"]') !== null;
|
||
|
||
return {
|
||
title,
|
||
bodyClasses,
|
||
hasNotFound,
|
||
hasLoginForm
|
||
};
|
||
});
|
||
|
||
console.log(' Page title:', pageInfo.title);
|
||
console.log(' Body classes:', pageInfo.bodyClasses);
|
||
console.log(' Has 404 content:', pageInfo.hasNotFound);
|
||
console.log(' Has login form:', pageInfo.hasLoginForm);
|
||
|
||
if (pageInfo.hasNotFound) {
|
||
console.log('\\n❌ Page returns 404 - it does not exist!');
|
||
} else if (pageInfo.hasLoginForm) {
|
||
console.log('\\n🔄 Page redirects to login - access control issue');
|
||
} else {
|
||
console.log('\\n✅ Page exists and loads content');
|
||
}
|
||
|
||
} else {
|
||
console.log('\\n2️⃣ Already logged in to admin - checking pages...');
|
||
|
||
// Go to pages list
|
||
await page.goto(`${baseUrl}/wp-admin/edit.php?post_type=page`);
|
||
await page.waitForLoadState('networkidle');
|
||
|
||
// Search for edit page
|
||
const searchBox = await page.$('input[name="s"]');
|
||
if (searchBox) {
|
||
await searchBox.fill('Edit Event');
|
||
await page.press('input[name="s"]', 'Enter');
|
||
await page.waitForLoadState('networkidle');
|
||
|
||
// Check results
|
||
const pageExists = await page.evaluate(() => {
|
||
const rows = document.querySelectorAll('.wp-list-table tbody tr');
|
||
for (const row of rows) {
|
||
const titleCell = row.querySelector('.column-title');
|
||
if (titleCell && titleCell.textContent.includes('Edit Event')) {
|
||
const link = titleCell.querySelector('a');
|
||
const id = link ? link.href.match(/post=(\\d+)/)?.[1] : null;
|
||
return {
|
||
exists: true,
|
||
title: titleCell.textContent.trim(),
|
||
id: id
|
||
};
|
||
}
|
||
}
|
||
return { exists: false };
|
||
});
|
||
|
||
if (pageExists.exists) {
|
||
console.log(`\\n✅ Page exists: "${pageExists.title}" (ID: ${pageExists.id})`);
|
||
} else {
|
||
console.log('\\n❌ Page "Edit Event" not found in WordPress admin');
|
||
}
|
||
}
|
||
}
|
||
|
||
// Step 3: Test URL patterns
|
||
console.log('\\n3️⃣ Testing URL patterns...');
|
||
const testUrls = [
|
||
'/trainer/event/edit/',
|
||
'/trainer/event/edit',
|
||
'/trainer/event/manage/',
|
||
'/trainer/dashboard/'
|
||
];
|
||
|
||
for (const testUrl of testUrls) {
|
||
console.log(`\\n Testing: ${testUrl}`);
|
||
await page.goto(`${baseUrl}${testUrl}`);
|
||
await page.waitForLoadState('networkidle', { timeout: 10000 });
|
||
|
||
const result = await page.evaluate(() => {
|
||
const currentUrl = window.location.href;
|
||
const hasLoginForm = document.querySelector('input[name="log"]') !== null;
|
||
const hasNotFound = document.body.innerHTML.includes('404') ||
|
||
document.body.innerHTML.includes('not found');
|
||
|
||
return { currentUrl, hasLoginForm, hasNotFound };
|
||
});
|
||
|
||
console.log(` Final URL: ${result.currentUrl}`);
|
||
console.log(` Redirected to login: ${result.hasLoginForm}`);
|
||
console.log(` 404 error: ${result.hasNotFound}`);
|
||
}
|
||
|
||
// Take screenshot
|
||
await page.screenshot({
|
||
path: `page-exists-${Date.now()}.png`,
|
||
fullPage: true
|
||
});
|
||
console.log('\\n📸 Screenshot saved');
|
||
|
||
} catch (error) {
|
||
console.error('\\n❌ Test failed:', error.message);
|
||
|
||
await page.screenshot({
|
||
path: `error-page-exists-${Date.now()}.png`,
|
||
fullPage: true
|
||
});
|
||
} finally {
|
||
console.log('\\n⏸️ Keeping browser open for inspection...');
|
||
await page.waitForTimeout(10000);
|
||
await browser.close();
|
||
}
|
||
}
|
||
|
||
// Run test
|
||
testPageExists()
|
||
.then(() => {
|
||
console.log('\\n✨ Test completed!');
|
||
process.exit(0);
|
||
})
|
||
.catch(error => {
|
||
console.error('\\n💥 Test failed:', error);
|
||
process.exit(1);
|
||
}); |