upskill-event-manager/wordpress-dev/tests/e2e/event-creation-complete.test.ts

127 lines
No EOL
5.2 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { STAGING_CONFIG } from '../../playwright.config';
test.describe('Complete Event Creation', () => {
test('should create event with all required fields', async ({ page }) => {
// Login as test_trainer
await page.goto(`https://${STAGING_CONFIG.url}/wp-login.php`);
await page.fill('#user_login', 'test_trainer');
await page.fill('#user_pass', 'Test123!');
await page.click('#wp-submit');
// Wait for navigation
await page.waitForTimeout(3000);
console.log('Logged in successfully');
// Navigate to manage-event page
await page.goto(`https://${STAGING_CONFIG.url}/manage-event/`);
console.log('Navigated to manage-event page');
// Wait for form to load
await page.waitForSelector('input[name="EventTitle"]', { timeout: 10000 });
// Fill event title
const eventTitle = `HVAC Training Event ${Date.now()}`;
await page.fill('input[name="EventTitle"]', eventTitle);
console.log('Filled event title:', eventTitle);
// Fill event description - using the visible TinyMCE editor
const descriptionFrame = page.frameLocator('#EventDescription_ifr');
if (await descriptionFrame.locator('body').isVisible().catch(() => false)) {
await descriptionFrame.locator('body').click();
await descriptionFrame.locator('body').fill('This is a comprehensive HVAC training event covering installation, maintenance, and troubleshooting.');
console.log('Filled description in TinyMCE');
} else {
// Try text mode if iframe not visible
const textarea = page.locator('textarea#EventDescription');
if (await textarea.isVisible()) {
await textarea.fill('This is a comprehensive HVAC training event covering installation, maintenance, and troubleshooting.');
console.log('Filled description in textarea');
}
}
// Fill date and time
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
const dateStr = `${(tomorrow.getMonth() + 1).toString().padStart(2, '0')}/${tomorrow.getDate().toString().padStart(2, '0')}/${tomorrow.getFullYear()}`;
await page.fill('input[name="EventStartDate"]', dateStr);
await page.fill('input[name="EventEndDate"]', dateStr);
console.log('Filled dates:', dateStr);
// Fill time (if visible)
if (await page.locator('input[name="EventStartTime"]').isVisible()) {
await page.fill('input[name="EventStartTime"]', '9:00am');
await page.fill('input[name="EventEndTime"]', '5:00pm');
console.log('Filled times');
}
// Upload image if button is visible
const uploadButton = page.locator('button:has-text("CHOOSE IMAGE")');
if (await uploadButton.isVisible()) {
await uploadButton.click();
await page.waitForTimeout(1000);
// Click "Upload files" tab if media library opens
const uploadTab = page.locator('a:has-text("Upload files")');
if (await uploadTab.isVisible()) {
await uploadTab.click();
}
// Close media library for now
const closeButton = page.locator('.media-modal-close');
if (await closeButton.isVisible()) {
await closeButton.click();
}
}
// Fill venue details
const venueName = page.locator('input[name="VenueName"], input[name="Venue[Venue]"]').first();
if (await venueName.isVisible()) {
await venueName.fill('HVAC Training Center');
console.log('Filled venue name');
}
// Fill organizer details
const organizerName = page.locator('input[name="OrganizerName"], input[name="Organizer[Organizer]"]').first();
if (await organizerName.isVisible()) {
await organizerName.fill('Test Organizer');
console.log('Filled organizer name');
}
// Fill event website (if required)
const eventWebsite = page.locator('input[name="EventURL"]');
if (await eventWebsite.isVisible()) {
await eventWebsite.fill('https://example.com/hvac-training');
console.log('Filled event website');
}
// Click the final submit button
const submitButton = page.locator('button:has-text("SUBMIT EVENT")').last();
await submitButton.scrollIntoViewIfNeeded();
await submitButton.click();
console.log('Clicked SUBMIT EVENT button');
// Wait for response
await page.waitForTimeout(5000);
// Check for success
const currentUrl = page.url();
const hasSuccess = await page.locator('.tribe-success-msg, .success, .notice-success').isVisible().catch(() => false);
const hasErrors = await page.locator('.tribe-error, .error, .notice-error').isVisible().catch(() => false);
console.log('Current URL:', currentUrl);
console.log('Has success:', hasSuccess);
console.log('Has errors:', hasErrors);
// Get any error messages
if (hasErrors) {
const errorTexts = await page.locator('.tribe-error, .error, .notice-error').allTextContents();
console.log('Error messages:', errorTexts);
}
// Check if we're redirected to event page or list
const isEventCreated = currentUrl.includes('/event/') || currentUrl.includes('/my-events/') || hasSuccess;
// Assert event was created
expect(isEventCreated).toBeTruthy();
});
});