129 lines
		
	
	
		
			No EOL
		
	
	
		
			4.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			No EOL
		
	
	
		
			4.6 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('Verify Dashboard Fix', () => {
 | |
|   test('Check dashboard stats after cache clear', async ({ page, context }) => {
 | |
|     console.log('Starting test with fresh context...');
 | |
|     
 | |
|     // Clear cookies and cache
 | |
|     await context.clearCookies();
 | |
|     
 | |
|     // Login to staging
 | |
|     console.log('Logging in to staging...');
 | |
|     await page.goto(PATHS.login);
 | |
|     
 | |
|     // Fill in login details
 | |
|     await page.fill('#user_login', 'test_trainer');
 | |
|     await page.fill('#user_pass', 'Test123!');
 | |
|     await page.click('#wp-submit');
 | |
|     
 | |
|     // Wait for navigation to dashboard
 | |
|     await page.waitForURL('**/hvac-dashboard/', { waitUntil: 'networkidle' });
 | |
|     
 | |
|     // Force a fresh load with cache disabled
 | |
|     await page.route('**/*', route => {
 | |
|       route.continue({
 | |
|         headers: {
 | |
|           ...route.request().headers(),
 | |
|           'cache-control': 'no-cache'
 | |
|         }
 | |
|       });
 | |
|     });
 | |
|     
 | |
|     // Navigate to dashboard again with no cache
 | |
|     console.log('Navigating to dashboard with cache disabled...');
 | |
|     await page.goto(PATHS.dashboard, { waitUntil: 'networkidle' });
 | |
|     
 | |
|     // Take screenshot for debugging
 | |
|     await page.screenshot({ path: 'test-results/dashboard-after-fix.png', fullPage: true });
 | |
|     
 | |
|     // Log the entire response
 | |
|     console.log('Checking dashboard HTML...');
 | |
|     const dashboardHTML = await page.content();
 | |
|     console.log('Dashboard content length:', dashboardHTML.length);
 | |
|     
 | |
|     // Check stats from data attributes if available
 | |
|     const statCards = await page.$$eval('.hvac-stat-card', cards => 
 | |
|       cards.map(card => {
 | |
|         const titleEl = card.querySelector('h3');
 | |
|         const valueEl = card.querySelector('p');
 | |
|         const title = titleEl?.textContent || '';
 | |
|         const value = valueEl?.textContent || '';
 | |
|         
 | |
|         // Check for any data attributes that might contain the real data
 | |
|         const dataAttrs: Record<string, string> = {};
 | |
|         for (const attr of valueEl?.attributes || []) {
 | |
|           if (attr.name.startsWith('data-')) {
 | |
|             dataAttrs[attr.name] = attr.value;
 | |
|           }
 | |
|         }
 | |
|         
 | |
|         return { title, value, dataAttrs };
 | |
|       })
 | |
|     );
 | |
|     
 | |
|     console.log('Stat cards:', JSON.stringify(statCards, null, 2));
 | |
|     
 | |
|     // Look for actual counts
 | |
|     const totalEvents = statCards.find(card => card.title.includes('Total Events'));
 | |
|     const upcomingEvents = statCards.find(card => card.title.includes('Upcoming Events'));
 | |
|     const pastEvents = statCards.find(card => card.title.includes('Past Events'));
 | |
|     
 | |
|     console.log('Total Events:', totalEvents);
 | |
|     console.log('Upcoming Events:', upcomingEvents);
 | |
|     console.log('Past Events:', pastEvents);
 | |
|     
 | |
|     // Check if the fix is actually applied
 | |
|     console.log('Checking if dashboard data is loading correctly...');
 | |
|     const serverData = await page.evaluate(() => {
 | |
|       // Check window object for any dashboard data
 | |
|       return {
 | |
|         window: Object.keys(window).filter(key => key.includes('dashboard') || key.includes('hvac')),
 | |
|         hvac: (window as any).hvacDashboard || null,
 | |
|         ajaxurl: (window as any).ajaxurl || null
 | |
|       };
 | |
|     });
 | |
|     
 | |
|     console.log('Server data:', serverData);
 | |
|     
 | |
|     // Make a direct API call to check dashboard data
 | |
|     if (serverData.ajaxurl) {
 | |
|       console.log('Making direct AJAX call to get dashboard data...');
 | |
|       const response = await page.evaluate(async (ajaxurl) => {
 | |
|         try {
 | |
|           const formData = new FormData();
 | |
|           formData.append('action', 'hvac_get_dashboard_data');
 | |
|           
 | |
|           const response = await fetch(ajaxurl, {
 | |
|             method: 'POST',
 | |
|             body: formData,
 | |
|             credentials: 'same-origin'
 | |
|           });
 | |
|           
 | |
|           return await response.text();
 | |
|         } catch (error) {
 | |
|           return 'Error: ' + error;
 | |
|         }
 | |
|       }, serverData.ajaxurl);
 | |
|       
 | |
|       console.log('AJAX response:', response);
 | |
|     }
 | |
|     
 | |
|     // Verify the fix worked
 | |
|     const totalEventsValue = totalEvents?.value || '0';
 | |
|     const upcomingEventsValue = upcomingEvents?.value || '0';
 | |
|     const pastEventsValue = pastEvents?.value || '0';
 | |
|     
 | |
|     console.log('Final values:');
 | |
|     console.log(`Total Events: ${totalEventsValue}`);
 | |
|     console.log(`Upcoming Events: ${upcomingEventsValue}`);
 | |
|     console.log(`Past Events: ${pastEventsValue}`);
 | |
|     
 | |
|     // The test should show non-zero values now
 | |
|     expect(parseInt(totalEventsValue)).toBeGreaterThan(0);
 | |
|     expect(parseInt(upcomingEventsValue)).toBeGreaterThan(0);
 | |
|     expect(parseInt(pastEventsValue)).toBeGreaterThan(0);
 | |
|   });
 | |
| }); |