93 lines
No EOL
3.9 KiB
TypeScript
93 lines
No EOL
3.9 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { LoginPage } from './LoginPage';
|
|
import { DashboardPage } from './DashboardPage';
|
|
import { CreateEventPage } from './CreateEventPage';
|
|
import { TEST_USERS } from '../data/test-users';
|
|
import { TEST_EVENTS } from '../data/test-events';
|
|
|
|
test.describe('Create Event with TinyMCE Iframe', () => {
|
|
test('Create event using iframe interaction', async ({ page }) => {
|
|
const loginPage = new LoginPage(page);
|
|
const dashboardPage = new DashboardPage(page);
|
|
const createEventPage = new CreateEventPage(page);
|
|
const trainer = TEST_USERS.trainer;
|
|
|
|
// Login
|
|
await loginPage.navigateToLogin();
|
|
await loginPage.login(trainer.username, trainer.password);
|
|
|
|
// Navigate to create event
|
|
await dashboardPage.clickCreateEvent();
|
|
|
|
// Wait for form to load
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(3000);
|
|
|
|
// Fill event title
|
|
await page.fill('input[name="post_title"]', 'HVAC Fundamentals Training');
|
|
|
|
// Handle TinyMCE editor - try to find the iframe
|
|
try {
|
|
// Option 1: Direct frame interaction
|
|
const frame = page.frame({ url: /about:blank|javascript:/ });
|
|
if (frame) {
|
|
await frame.locator('body').click();
|
|
await frame.locator('body').fill('Learn the basics of HVAC systems in this comprehensive training session.');
|
|
console.log('Filled description using frame interaction');
|
|
}
|
|
} catch (e) {
|
|
console.log('Frame interaction failed:', e.message);
|
|
}
|
|
|
|
// Option 2: Try alternative ways to interact with TinyMCE
|
|
if (!await page.locator('body').locator(':has-text("Learn the basics")').isVisible()) {
|
|
try {
|
|
// Try using iframe locator
|
|
const iframeLocator = page.frameLocator('iframe#content_ifr, iframe[id$="_ifr"]');
|
|
const iframeBody = iframeLocator.locator('body');
|
|
await iframeBody.click();
|
|
await iframeBody.fill('Learn the basics of HVAC systems in this comprehensive training session.');
|
|
console.log('Filled description using iframe locator');
|
|
} catch (e) {
|
|
console.log('Iframe locator failed:', e.message);
|
|
|
|
// Option 3: Try JavaScript injection
|
|
await page.evaluate(() => {
|
|
const editor = (window as any).tinyMCE?.activeEditor;
|
|
if (editor) {
|
|
editor.setContent('Learn the basics of HVAC systems in this comprehensive training session.');
|
|
console.log('Set content using TinyMCE API');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// Fill dates
|
|
await page.fill('#EventStartDate', '6/1/2025');
|
|
await page.fill('#EventEndDate', '6/1/2025');
|
|
|
|
// Fill times
|
|
await page.fill('#EventStartTime', '09:00');
|
|
await page.fill('#EventEndTime', '17:00');
|
|
|
|
// Submit the form
|
|
await page.click('input[value="Submit Event"]');
|
|
|
|
// Wait for response
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(3000);
|
|
|
|
console.log(`Final URL: ${page.url()}`);
|
|
|
|
// Take screenshot
|
|
await page.screenshot({ path: 'create-event-iframe-result.png', fullPage: true });
|
|
|
|
// Check for success
|
|
const pageContent = await page.content();
|
|
if (pageContent.includes('Event Submitted') || pageContent.includes('Event Created')) {
|
|
console.log('Event created successfully!');
|
|
} else if (pageContent.includes('required')) {
|
|
console.log('Form validation error - required fields missing');
|
|
}
|
|
});
|
|
}); |