99 lines
No EOL
3.8 KiB
TypeScript
99 lines
No EOL
3.8 KiB
TypeScript
import { STAGING_URL, PATHS, TIMEOUTS } from './config/staging-config';
|
|
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Final Dashboard Verification', () => {
|
|
test('verify dashboard displays with proper login', async ({ page }) => {
|
|
const staging_url = 'https://upskill-staging.measurequick.com';
|
|
|
|
// Start fresh with dashboard page
|
|
console.log('1. Going to dashboard page...');
|
|
await page.goto(`${staging_url}/hvac-dashboard/`);
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// Take initial screenshot
|
|
await page.screenshot({ path: 'dashboard-initial.png' });
|
|
|
|
// Check if we see login prompt
|
|
const loginPrompt = await page.locator('.hvac-login-notice').count();
|
|
console.log('Login prompt visible:', loginPrompt > 0);
|
|
|
|
if (loginPrompt > 0) {
|
|
// Click login button if present
|
|
const loginButton = await page.locator('.hvac-login-notice a.button').first();
|
|
if (await loginButton.isVisible()) {
|
|
console.log('2. Clicking login button...');
|
|
await loginButton.click();
|
|
await page.waitForLoadState('networkidle');
|
|
}
|
|
}
|
|
|
|
// If we're on login page, log in
|
|
const currentUrl = page.url();
|
|
console.log('Current URL:', currentUrl);
|
|
|
|
if (currentUrl.includes('community-login')) {
|
|
console.log('3. Logging in...');
|
|
await page.fill('#user_login', 'test_trainer');
|
|
await page.fill('#user_pass', 'password123!');
|
|
await page.click('#wp-submit');
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(3000);
|
|
|
|
// Navigate back to dashboard
|
|
console.log('4. Returning to dashboard...');
|
|
await page.goto(`${staging_url}/hvac-dashboard/`);
|
|
await page.waitForLoadState('networkidle');
|
|
}
|
|
|
|
// Check dashboard content
|
|
console.log('5. Checking dashboard content...');
|
|
const content = await page.content();
|
|
|
|
// Take final screenshot
|
|
await page.screenshot({ path: 'dashboard-final.png', fullPage: true });
|
|
|
|
// Verify dashboard elements
|
|
const dashboardChecks = {
|
|
'Dashboard wrapper': content.includes('hvac-dashboard-wrapper'),
|
|
'Dashboard stats section': content.includes('hvac-dashboard-stats'),
|
|
'Stat cards': content.includes('hvac-stat-card'),
|
|
'Create Event button': content.includes('Create Event'),
|
|
'My Events button': content.includes('My Events'),
|
|
'Events table': content.includes('hvac-events-table')
|
|
};
|
|
|
|
console.log('\n=== Dashboard Elements Check ===');
|
|
for (const [element, found] of Object.entries(dashboardChecks)) {
|
|
console.log(`${element}: ${found ? '✓' : '✗'}`);
|
|
}
|
|
|
|
// Count and display stat cards
|
|
const statCardCount = await page.locator('.hvac-stat-card').count();
|
|
console.log(`\nStat cards found: ${statCardCount}`);
|
|
|
|
if (statCardCount > 0) {
|
|
console.log('\n=== Dashboard Statistics ===');
|
|
const statCards = await page.locator('.hvac-stat-card').all();
|
|
for (const card of statCards) {
|
|
const title = await card.locator('h3').textContent();
|
|
const value = await card.locator('.metric-value').textContent();
|
|
console.log(`${title}: ${value}`);
|
|
}
|
|
}
|
|
|
|
// Check events table
|
|
const eventRows = await page.locator('.hvac-events-table tbody tr').count();
|
|
console.log(`\nEvents in table: ${eventRows}`);
|
|
|
|
// Save full content for analysis
|
|
const fs = require('fs');
|
|
fs.writeFileSync('dashboard-final-content.html', content);
|
|
console.log('\nFull content saved to dashboard-final-content.html');
|
|
|
|
// Final verification
|
|
const isDashboardWorking = statCardCount > 0 && dashboardChecks['Dashboard wrapper'];
|
|
console.log(`\nDashboard working: ${isDashboardWorking ? 'YES' : 'NO'}`);
|
|
|
|
expect(isDashboardWorking).toBe(true);
|
|
});
|
|
}); |