163 lines
		
	
	
		
			No EOL
		
	
	
		
			7.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			No EOL
		
	
	
		
			7.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { STAGING_URL, PATHS, TIMEOUTS } from './config/staging-config';
 | |
| import { test, expect } from '@playwright/test';
 | |
| import { LoginPage } from './pages/LoginPage';
 | |
| import { DashboardPage } from './pages/DashboardPage';
 | |
| import { CreateEventPage } from './pages/CreateEventPage';
 | |
| import { EventSummaryPage } from './pages/EventSummaryPage';
 | |
| import { ModifyEventPage } from './pages/ModifyEventPage';
 | |
| import { TEST_USERS } from './data/test-users';
 | |
| import { TEST_EVENTS } from './data/test-events';
 | |
| 
 | |
| // STAGING_URL is now imported from config
 | |
| 
 | |
| test.describe('Modify Event Test from My Events', () => {
 | |
|     let loginPage: LoginPage;
 | |
|     let dashboardPage: DashboardPage;
 | |
|     let createEventPage: CreateEventPage;
 | |
|     let eventSummaryPage: EventSummaryPage;
 | |
|     let modifyEventPage: ModifyEventPage;
 | |
|     
 | |
|     const trainer = TEST_USERS.trainer;
 | |
| 
 | |
|     test.beforeEach(async ({ page }) => {
 | |
|         loginPage = new LoginPage(page);
 | |
|         dashboardPage = new DashboardPage(page);
 | |
|         createEventPage = new CreateEventPage(page);
 | |
|         eventSummaryPage = new EventSummaryPage(page);
 | |
|         modifyEventPage = new ModifyEventPage(page);
 | |
|         
 | |
|         // Set base URL and login
 | |
|         page.context().setDefaultNavigationTimeout(TIMEOUTS.navigation);
 | |
|         await page.goto(STAGING_URL);
 | |
|         await loginPage.navigateToLogin();
 | |
|         await loginPage.login(trainer.username, trainer.password);
 | |
|     });
 | |
| 
 | |
|     test('Create and Modify Event from My Events Page', async ({ page }) => {
 | |
|         // First create an event
 | |
|         await dashboardPage.clickCreateEvent();
 | |
|         await expect(page).toHaveURL(/.*manage-event/);
 | |
|         
 | |
|         // Fill event details
 | |
|         const eventData = TEST_EVENTS.basicEvent;
 | |
|         await createEventPage.fillEventDetails(eventData);
 | |
|         
 | |
|         // Submit event
 | |
|         await createEventPage.submitEvent();
 | |
|         
 | |
|         // Wait for success
 | |
|         await page.waitForLoadState('networkidle');
 | |
|         
 | |
|         // Navigate to My Events page
 | |
|         await page.goto(`${STAGING_URL}/my-events/`);
 | |
|         await page.waitForLoadState('networkidle');
 | |
|         await page.screenshot({ path: 'test-results/screenshots/my-events-after-create.png' });
 | |
|         
 | |
|         // Look for event links on My Events page
 | |
|         const eventLinks = page.locator('a.url');
 | |
|         const linkCount = await eventLinks.count();
 | |
|         console.log('Number of event links found:', linkCount);
 | |
|         
 | |
|         if (linkCount > 0) {
 | |
|             // Get the first event link text
 | |
|             const firstEventTitle = await eventLinks.first().innerText();
 | |
|             console.log('First event title:', firstEventTitle);
 | |
|             
 | |
|             // Click the first event
 | |
|             await eventLinks.first().click();
 | |
|             await page.waitForLoadState('networkidle');
 | |
|             
 | |
|             const eventDetailUrl = page.url();
 | |
|             console.log('Event detail URL:', eventDetailUrl);
 | |
|             await page.screenshot({ path: 'test-results/screenshots/event-detail-from-my-events.png' });
 | |
|             
 | |
|             // Look for an Edit button/link on the event detail page
 | |
|             const editLinks = page.locator('a:has-text("Edit")');
 | |
|             const editButton = page.locator('button:has-text("Edit")');
 | |
|             const modifyLink = page.locator('a:has-text("Modify")');
 | |
|             
 | |
|             let foundEditOption = false;
 | |
|             
 | |
|             if (await editLinks.count() > 0) {
 | |
|                 console.log('Found Edit link');
 | |
|                 await editLinks.first().click();
 | |
|                 foundEditOption = true;
 | |
|             } else if (await editButton.count() > 0) {
 | |
|                 console.log('Found Edit button');
 | |
|                 await editButton.first().click();
 | |
|                 foundEditOption = true;
 | |
|             } else if (await modifyLink.count() > 0) {
 | |
|                 console.log('Found Modify link');
 | |
|                 await modifyLink.first().click();
 | |
|                 foundEditOption = true;
 | |
|             }
 | |
|             
 | |
|             if (foundEditOption) {
 | |
|                 await page.waitForLoadState('networkidle');
 | |
|                 const modifyUrl = page.url();
 | |
|                 console.log('Modify page URL:', modifyUrl);
 | |
|                 await page.screenshot({ path: 'test-results/screenshots/modify-event-page-from-my-events.png' });
 | |
|                 
 | |
|                 // Modify the event
 | |
|                 const updatedEvent = {
 | |
|                     ...TEST_EVENTS.basicEvent,
 | |
|                     title: 'Updated HVAC Training Session',
 | |
|                     description: 'This training session has been updated with new content.'
 | |
|                 };
 | |
|                 
 | |
|                 await modifyEventPage.fillEventDetails(updatedEvent);
 | |
|                 
 | |
|                 // Check for update button
 | |
|                 if (await modifyEventPage.isUpdateButtonVisible()) {
 | |
|                     console.log('Update button found, clicking it');
 | |
|                     await modifyEventPage.updateEvent();
 | |
|                 } else {
 | |
|                     console.log('Update button not found, trying submit button');
 | |
|                     await createEventPage.submitEvent();
 | |
|                 }
 | |
|                 
 | |
|                 await page.waitForLoadState('networkidle');
 | |
|                 await page.screenshot({ path: 'test-results/screenshots/after-update-from-my-events.png' });
 | |
|                 
 | |
|                 const afterUpdateUrl = page.url();
 | |
|                 console.log('After update URL:', afterUpdateUrl);
 | |
|             } else {
 | |
|                 console.log('No edit option found on event detail page');
 | |
|                 
 | |
|                 // Try going back to My Events to look for edit option there
 | |
|                 await page.goto(`${STAGING_URL}/my-events/`);
 | |
|                 await page.waitForLoadState('networkidle');
 | |
|                 
 | |
|                 // Look for edit links in the event list
 | |
|                 const eventRows = page.locator('tr.community-events-event-row');
 | |
|                 const rowCount = await eventRows.count();
 | |
|                 console.log('Event rows found:', rowCount);
 | |
|                 
 | |
|                 if (rowCount > 0) {
 | |
|                     const firstRow = eventRows.first();
 | |
|                     const editLinkInRow = firstRow.locator('a:has-text("Edit")');
 | |
|                     
 | |
|                     if (await editLinkInRow.count() > 0) {
 | |
|                         console.log('Found Edit link in event row');
 | |
|                         await editLinkInRow.click();
 | |
|                         await page.waitForLoadState('networkidle');
 | |
|                         
 | |
|                         const editPageUrl = page.url();
 | |
|                         console.log('Edit page URL from row:', editPageUrl);
 | |
|                         await page.screenshot({ path: 'test-results/screenshots/edit-page-from-row.png' });
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         } else {
 | |
|             console.log('No event links found on My Events page');
 | |
|             
 | |
|             // Check if events are in past events tab
 | |
|             const pastEventsTab = page.locator('a:has-text("PAST EVENTS")');
 | |
|             if (await pastEventsTab.count() > 0) {
 | |
|                 await pastEventsTab.click();
 | |
|                 await page.waitForLoadState('networkidle');
 | |
|                 await page.screenshot({ path: 'test-results/screenshots/past-events-tab.png' });
 | |
|             }
 | |
|         }
 | |
|     });
 | |
| }); |