import { test, expect } from '@playwright/test'; import { EventSummaryPage } from '../../pages/EventSummaryPage'; import { DashboardPage } from '../../pages/DashboardPage'; import { LogParser } from '../../utils/logParser'; import '../../utils/testHelpers'; test.describe('Event Summary Page', () => { let eventSummaryPage: EventSummaryPage; let dashboardPage: DashboardPage; let logParser: LogParser; const testEventId = '12345'; // Replace with actual test event ID test.beforeEach(async ({ page }) => { eventSummaryPage = new EventSummaryPage(page); dashboardPage = new DashboardPage(page); logParser = new LogParser(); // Navigate to event summary page await eventSummaryPage.navigate(testEventId); }); test('should display correct event details', async () => { const expectedDetails = { title: 'HVAC Training Workshop', dateTime: 'May 1, 2025 14:00', location: 'Training Center A', organizer: 'John Smith', description: 'Comprehensive HVAC training session' }; await eventSummaryPage.verifyEventDetails(expectedDetails); }); test('should display correct ticket information', async () => { const expectedTicketInfo = { price: '$50.00', quantity: '100', remaining: '75' }; await eventSummaryPage.verifyTicketInfo(expectedTicketInfo); }); test('should display and validate transactions table', async () => { await eventSummaryPage.verifyTransactionTableExists(); // Verify first transaction details const expectedTransaction = { purchaserName: 'Alice Johnson', organization: 'HVAC Corp', purchaseDate: '2025-04-10 09:30', ticketCount: '2', revenue: '$100.00' }; await eventSummaryPage.verifyTransactionDetails(0, expectedTransaction); // Verify purchaser name link await eventSummaryPage.verifyPurchaserNameLink(0, '/purchaser/alice-johnson'); }); test('should calculate and display correct summary statistics', async () => { // Assuming multiple transactions in the table await eventSummaryPage.verifyTotalTicketsSold('25'); await eventSummaryPage.verifyTotalRevenue('$1,250.00'); }); test('should navigate to edit event page', async () => { await eventSummaryPage.clickEditEvent(); await expect(eventSummaryPage.page).toHaveURL(/.*community-events-edit/); }); test('should return to dashboard when clicking return button', async () => { await eventSummaryPage.returnToDashboard(); await expect(dashboardPage.page).toHaveURL(/.*hvac-dashboard/); }); test('should verify all transaction table functionality', async () => { // Verify multiple transactions const transactions = [ { purchaserName: 'Alice Johnson', organization: 'HVAC Corp', purchaseDate: '2025-04-10 09:30', ticketCount: '2', revenue: '$100.00' }, { purchaserName: 'Bob Smith', organization: 'Cool Tech', purchaseDate: '2025-04-10 10:15', ticketCount: '3', revenue: '$150.00' }, { purchaserName: 'Carol White', organization: 'Air Systems', purchaseDate: '2025-04-10 11:00', ticketCount: '1', revenue: '$50.00' } ]; // Verify each transaction in the table for (let i = 0; i < transactions.length; i++) { await eventSummaryPage.verifyTransactionDetails(i, transactions[i]); await eventSummaryPage.verifyPurchaserNameLink(i, `/purchaser/${transactions[i].purchaserName.toLowerCase().replace(' ', '-')}`); } // Verify total number of transactions const transactionCount = await eventSummaryPage.getTransactionCount(); expect(transactionCount).toBe(transactions.length); }); test('should verify time and date display format', async () => { const expectedDetails = { title: 'HVAC Training Workshop', dateTime: 'May 1, 2025 14:00', // Verify specific format location: 'Training Center A', organizer: 'John Smith', description: 'Comprehensive HVAC training session' }; await eventSummaryPage.verifyEventDetails(expectedDetails); }); test('should verify revenue calculations accuracy', async () => { // Get all transactions and verify total revenue calculation const transactions = [ { ticketCount: '2', revenue: '$100.00' }, { ticketCount: '3', revenue: '$150.00' }, { ticketCount: '1', revenue: '$50.00' } ]; let totalTickets = 0; let totalRevenue = 0; for (const transaction of transactions) { totalTickets += parseInt(transaction.ticketCount); totalRevenue += parseFloat(transaction.revenue.replace('$', '')); } await eventSummaryPage.verifyTotalTicketsSold(totalTickets.toString()); await eventSummaryPage.verifyTotalRevenue(`$${totalRevenue.toFixed(2)}`); }); });