import { STAGING_URL, PATHS, TIMEOUTS } from './config/staging-config'; import { test, expect } from '@playwright/test'; import { LoginPage } from './pages/LoginPage'; import { TEST_USERS } from './data/test-users'; // STAGING_URL is now imported from config test('Debug dashboard details and stats', async ({ page }) => { const loginPage = new LoginPage(page); const trainer = TEST_USERS.trainer; // Set base URL await page.goto(STAGING_URL); // Login await loginPage.navigateToLogin(); await loginPage.login(trainer.username, trainer.password); // Wait for navigation await page.waitForLoadState('networkidle'); console.log('Looking for dashboard statistics...'); // Find all divs and look for ones with statistics const divs = await page.locator('div').all(); console.log(`Found ${divs.length} divs on the page`); // Look for text content that might contain stats const statsTexts = [ 'Total Events', 'Upcoming Events', 'Past Events', 'Total Tickets', 'Total Revenue', 'Annual Revenue Target' ]; for (const text of statsTexts) { const elements = await page.locator(`text="${text}"`).all(); console.log(`"${text}": Found ${elements.length} instances`); if (elements.length > 0) { // Try to find associated number/value const parentElement = elements[0]; const parent = await parentElement.locator('..').first(); const parentText = await parent.textContent(); console.log(` Parent text: ${parentText}`); // Look for sibling elements const siblings = await parent.locator('*').all(); for (let i = 0; i < siblings.length; i++) { const siblingText = await siblings[i].textContent(); console.log(` Sibling ${i}: ${siblingText}`); } } } // Look for the events table more specifically console.log('\nLooking for events table structure...'); const tables = await page.locator('table').all(); for (let i = 0; i < tables.length; i++) { console.log(`\nTable ${i + 1}:`); const table = tables[i]; // Check for headers const headers = await table.locator('th').all(); console.log(` Headers: ${headers.length}`); for (let j = 0; j < headers.length; j++) { const headerText = await headers[j].textContent(); console.log(` Header ${j}: ${headerText}`); } // Check for rows const rows = await table.locator('tbody tr').all(); console.log(` Rows: ${rows.length}`); if (rows.length > 0) { // Check first row const firstRow = rows[0]; const cells = await firstRow.locator('td').all(); console.log(` First row cells: ${cells.length}`); for (let k = 0; k < cells.length; k++) { const cellText = await cells[k].textContent(); console.log(` Cell ${k}: ${cellText}`); } } } // Take a focused screenshot await page.screenshot({ path: 'test-results/debug-dashboard-focused.png', fullPage: true }); // Try to find the specific dashboard container console.log('\nLooking for dashboard containers...'); const possibleContainers = [ '.hvac-trainer-dashboard', '#hvac-trainer-dashboard', '.trainer-dashboard-container', '.dashboard-content', '.entry-content', 'article.page', '.page-content' ]; for (const selector of possibleContainers) { const exists = await page.locator(selector).count() > 0; if (exists) { console.log(`${selector}: FOUND`); const content = await page.locator(selector).first().textContent(); console.log(` Content preview: ${content?.substring(0, 200)}...`); } else { console.log(`${selector}: NOT FOUND`); } } });