133 lines
		
	
	
		
			No EOL
		
	
	
		
			4.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			No EOL
		
	
	
		
			4.9 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('Trainer Dashboard Statistics', () => {
 | |
|     test('Verify dashboard displays correct statistics', async ({ page }) => {
 | |
|         console.log('Starting dashboard statistics verification...');
 | |
|         
 | |
|         // Step 1: Login as test_trainer
 | |
|         console.log('Step 1: Logging in...');
 | |
|         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.waitForLoadState('networkidle');
 | |
|         await expect(page).toHaveURL(/hvac-dashboard/);
 | |
|         console.log('Login successful');
 | |
|         
 | |
|         // Step 2: Navigate to dashboard
 | |
|         console.log('Step 2: Checking dashboard statistics...');
 | |
|         await page.goto(PATHS.dashboard);
 | |
|         await page.waitForLoadState('networkidle');
 | |
|         
 | |
|         // Take a screenshot of the dashboard
 | |
|         await page.screenshot({ path: 'dashboard-stats.png', fullPage: true });
 | |
|         
 | |
|         // Check for statistics elements
 | |
|         const statsSelectors = {
 | |
|             totalEvents: [
 | |
|                 '.total-events',
 | |
|                 '.events-count',
 | |
|                 '.stat-total-events',
 | |
|                 'text=/total events/i'
 | |
|             ],
 | |
|             upcomingEvents: [
 | |
|                 '.upcoming-events',
 | |
|                 '.upcoming-count',
 | |
|                 '.stat-upcoming-events',
 | |
|                 'text=/upcoming events/i'
 | |
|             ],
 | |
|             totalTickets: [
 | |
|                 '.total-tickets',
 | |
|                 '.tickets-sold',
 | |
|                 '.stat-total-tickets',
 | |
|                 'text=/tickets sold/i'
 | |
|             ],
 | |
|             totalRevenue: [
 | |
|                 '.total-revenue',
 | |
|                 '.revenue-amount',
 | |
|                 '.stat-revenue',
 | |
|                 'text=/revenue/i'
 | |
|             ]
 | |
|         };
 | |
|         
 | |
|         const statistics = {};
 | |
|         
 | |
|         // Try to find each statistic
 | |
|         for (const [statName, selectors] of Object.entries(statsSelectors)) {
 | |
|             let found = false;
 | |
|             for (const selector of selectors) {
 | |
|                 try {
 | |
|                     const element = page.locator(selector);
 | |
|                     const count = await element.count();
 | |
|                     if (count > 0) {
 | |
|                         const text = await element.first().textContent();
 | |
|                         statistics[statName] = text;
 | |
|                         console.log(`${statName}: ${text}`);
 | |
|                         found = true;
 | |
|                         break;
 | |
|                     }
 | |
|                 } catch (e) {
 | |
|                     // Continue trying other selectors
 | |
|                 }
 | |
|             }
 | |
|             if (!found) {
 | |
|                 console.log(`${statName}: Not found`);
 | |
|             }
 | |
|         }
 | |
|         
 | |
|         // Look for any numeric values on the page that might be statistics
 | |
|         const numericElements = await page.locator('text=/\\d+/').all();
 | |
|         console.log('\nNumeric values found on dashboard:');
 | |
|         for (const element of numericElements) {
 | |
|             const text = await element.textContent();
 | |
|             const parent = await element.locator('..').textContent();
 | |
|             console.log(`- ${text} (context: ${parent})`);
 | |
|         }
 | |
|         
 | |
|         // Check the entire dashboard content
 | |
|         const dashboardContent = await page.locator('.hvac-dashboard, .dashboard-content, main').textContent();
 | |
|         console.log('\nDashboard content preview:');
 | |
|         console.log(dashboardContent.substring(0, 500) + '...');
 | |
|         
 | |
|         // Expected values based on our test data
 | |
|         const expectedStats = {
 | |
|             totalEvents: 3, // We have 3 events that are showing in queries
 | |
|             upcomingEvents: 0, // None are in the future relative to current date
 | |
|             totalTickets: 0, // We haven't created tickets yet
 | |
|             totalRevenue: 0 // No revenue without tickets
 | |
|         };
 | |
|         
 | |
|         console.log('\nExpected statistics:');
 | |
|         console.log(JSON.stringify(expectedStats, null, 2));
 | |
|         
 | |
|         // Verify we can see at least some events
 | |
|         const eventListSelectors = [
 | |
|             '.event-item',
 | |
|             '.hvac-event-item',
 | |
|             '.upcoming-event',
 | |
|             '.tribe-events-list'
 | |
|         ];
 | |
|         
 | |
|         let eventCount = 0;
 | |
|         for (const selector of eventListSelectors) {
 | |
|             const elements = page.locator(selector);
 | |
|             const count = await elements.count();
 | |
|             if (count > 0) {
 | |
|                 eventCount = count;
 | |
|                 console.log(`\nFound ${count} events using selector: ${selector}`);
 | |
|                 break;
 | |
|             }
 | |
|         }
 | |
|         
 | |
|         if (eventCount > 0) {
 | |
|             console.log('Dashboard is displaying events');
 | |
|         } else {
 | |
|             console.log('Warning: No events visible on dashboard');
 | |
|         }
 | |
|         
 | |
|         console.log('\nDashboard statistics verification completed');
 | |
|     });
 | |
| }); |