76 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { STAGING_URL, PATHS, TIMEOUTS } from './config/staging-config';
 | |
| import { test, expect } from '@playwright/test';
 | |
| 
 | |
| // STAGING_URL is now imported from config
 | |
| 
 | |
| test.describe('Simple Event Creation', () => {
 | |
|   test('should allow trainer to create an event', async ({ page }) => {
 | |
|     // Login
 | |
|     await page.goto(PATHS.login);
 | |
|     await page.fill('#user_login', 'test_trainer');
 | |
|     await page.fill('#user_pass', 'Test123!');
 | |
|     await page.click('#wp-submit');
 | |
|     await page.waitForURL('**/hvac-dashboard/');
 | |
|     
 | |
|     // Navigate to create event
 | |
|     console.log('Looking for Create Event button...');
 | |
|     const createEventBtn = page.locator('a:has-text("CREATE EVENT"), a:has-text("Create Event")').first();
 | |
|     await expect(createEventBtn).toBeVisible();
 | |
|     await createEventBtn.click();
 | |
|     
 | |
|     // Wait for form to load
 | |
|     await page.waitForLoadState('networkidle');
 | |
|     await page.waitForTimeout(2000);
 | |
|     
 | |
|     // Screenshot the form
 | |
|     await page.screenshot({ path: 'test-results/create-event-form.png', fullPage: true });
 | |
|     
 | |
|     // Fill in basic event details
 | |
|     const eventTitle = `Test Event ${Date.now()}`;
 | |
|     console.log('Creating event:', eventTitle);
 | |
|     
 | |
|     // Title
 | |
|     await page.fill('input[name="post_title"], input#title', eventTitle);
 | |
|     
 | |
|     // Description - check for different possible editors
 | |
|     const descriptionText = `This is a test event created at ${new Date().toISOString()}`;
 | |
|     
 | |
|     // Try TinyMCE first
 | |
|     const tinymceFrame = page.frameLocator('#post_content_ifr, iframe#content_ifr, iframe[id*="content"]').first();
 | |
|     const isIframeVisible = await tinymceFrame.locator('body').isVisible().catch(() => false);
 | |
|     
 | |
|     if (isIframeVisible) {
 | |
|       console.log('Using TinyMCE editor');
 | |
|       await tinymceFrame.locator('body').fill(descriptionText);
 | |
|     } else {
 | |
|       console.log('Using regular textarea');
 | |
|       await page.fill('textarea[name="post_content"], textarea#content', descriptionText);
 | |
|     }
 | |
|     
 | |
|     // Set dates - today for both start and end
 | |
|     const today = new Date().toISOString().split('T')[0];
 | |
|     await page.fill('input[name="EventStartDate"], input#EventStartDate', today);
 | |
|     await page.fill('input[name="EventEndDate"], input#EventEndDate', today);
 | |
|     
 | |
|     // Set times
 | |
|     await page.fill('input[name="EventStartTime"], input#EventStartTime', '10:00 AM');
 | |
|     await page.fill('input[name="EventEndTime"], input#EventEndTime', '12:00 PM');
 | |
|     
 | |
|     // Submit
 | |
|     console.log('Submitting event...');
 | |
|     await page.click('input[type="submit"][value="Submit"], button[type="submit"]');
 | |
|     
 | |
|     // Wait for response
 | |
|     await page.waitForTimeout(5000);
 | |
|     
 | |
|     // Take final screenshot
 | |
|     await page.screenshot({ path: 'test-results/after-submit.png', fullPage: true });
 | |
|     
 | |
|     // Check if we're still on the same page (error) or redirected (success)
 | |
|     const currentUrl = page.url();
 | |
|     console.log('Current URL after submit:', currentUrl);
 | |
|     
 | |
|     // If successful, we should be redirected away from the create page
 | |
|     expect(currentUrl).not.toContain('/manage-event/');
 | |
|   });
 | |
| }); |