- Created comprehensive harmonized CSS framework (hvac-harmonized.css) based on Astra theme analysis - Built enhanced styling for all plugin pages using CSS custom properties and modern design patterns - Updated CSS enqueue system to load harmonized framework as foundation for all pages - Enhanced dashboard, login, and certificate pages with consistent theme-integrated styling - Maintained backward compatibility with existing CSS files - Added proper dependency management and versioning for CSS files - Improved accessibility with WCAG-compliant color contrasts and focus states - Implemented responsive design patterns and modern typography scale 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
199 lines
No EOL
7.4 KiB
TypeScript
199 lines
No EOL
7.4 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('UI Styling Review - Full Page Screenshots', () => {
|
|
const pages = [
|
|
{ name: 'Community Login', url: '/community-login' },
|
|
{ name: 'HVAC Dashboard', url: '/hvac-dashboard' },
|
|
{ name: 'Generate Certificates', url: '/generate-certificates' },
|
|
{ name: 'Certificate Reports', url: '/certificate-reports' },
|
|
{ name: 'Trainer Profile', url: '/trainer-profile' },
|
|
{ name: 'My Events', url: '/my-events' },
|
|
{ name: 'Create Event', url: '/create-event' },
|
|
{ name: 'Event Summary', url: '/event-summary' },
|
|
{ name: 'Email Attendees', url: '/email-attendees' }
|
|
];
|
|
|
|
// Test logged out states
|
|
test('Screenshot all pages - Logged Out', async ({ page }) => {
|
|
console.log('=== Taking Screenshots of All Pages (Logged Out) ===');
|
|
|
|
for (const pageInfo of pages) {
|
|
try {
|
|
console.log(`📸 Capturing: ${pageInfo.name} (${pageInfo.url})`);
|
|
|
|
await page.goto(`https://upskill-staging.measurequick.com${pageInfo.url}`, {
|
|
waitUntil: 'networkidle',
|
|
timeout: 30000
|
|
});
|
|
|
|
// Wait for page to fully load
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(2000);
|
|
|
|
// Take full page screenshot
|
|
await page.screenshot({
|
|
path: `test-results/ui-review-${pageInfo.name.toLowerCase().replace(/\s+/g, '-')}-logged-out.png`,
|
|
fullPage: true
|
|
});
|
|
|
|
console.log(`✅ Captured: ${pageInfo.name}`);
|
|
} catch (error) {
|
|
console.log(`⚠️ Failed to capture ${pageInfo.name}: ${error.message}`);
|
|
}
|
|
}
|
|
});
|
|
|
|
// Test logged in states
|
|
test('Screenshot all pages - Logged In', async ({ page }) => {
|
|
console.log('=== Taking Screenshots of All Pages (Logged In) ===');
|
|
|
|
// Login first
|
|
await page.goto('https://upskill-staging.measurequick.com/community-login');
|
|
await page.fill('#user_login', 'test_trainer');
|
|
await page.fill('#user_pass', 'Test123!');
|
|
await page.click('#wp-submit');
|
|
await page.waitForURL('**/hvac-dashboard/**');
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
console.log('✅ Logged in successfully');
|
|
|
|
for (const pageInfo of pages) {
|
|
try {
|
|
console.log(`📸 Capturing: ${pageInfo.name} (${pageInfo.url})`);
|
|
|
|
await page.goto(`https://upskill-staging.measurequick.com${pageInfo.url}`, {
|
|
waitUntil: 'networkidle',
|
|
timeout: 30000
|
|
});
|
|
|
|
// Wait for page to fully load
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(2000);
|
|
|
|
// Special handling for pages with dynamic content
|
|
if (pageInfo.name === 'Generate Certificates') {
|
|
// Try to select an event to show the full interface
|
|
const eventSelector = page.locator('#event_id');
|
|
if (await eventSelector.isVisible()) {
|
|
const options = await eventSelector.locator('option:not([value=""])').count();
|
|
if (options > 0) {
|
|
await eventSelector.selectOption({ index: 1 });
|
|
await page.waitForTimeout(2000); // Wait for AJAX
|
|
}
|
|
}
|
|
}
|
|
|
|
if (pageInfo.name === 'Event Summary') {
|
|
// Try to find any event to view
|
|
const eventLinks = page.locator('a[href*="/event-summary/"]');
|
|
const linkCount = await eventLinks.count();
|
|
if (linkCount > 0) {
|
|
await eventLinks.first().click();
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(2000);
|
|
}
|
|
}
|
|
|
|
// Take full page screenshot
|
|
await page.screenshot({
|
|
path: `test-results/ui-review-${pageInfo.name.toLowerCase().replace(/\s+/g, '-')}-logged-in.png`,
|
|
fullPage: true
|
|
});
|
|
|
|
console.log(`✅ Captured: ${pageInfo.name}`);
|
|
} catch (error) {
|
|
console.log(`⚠️ Failed to capture ${pageInfo.name}: ${error.message}`);
|
|
|
|
// Take screenshot anyway to see error state
|
|
try {
|
|
await page.screenshot({
|
|
path: `test-results/ui-review-${pageInfo.name.toLowerCase().replace(/\s+/g, '-')}-error.png`,
|
|
fullPage: true
|
|
});
|
|
} catch (screenshotError) {
|
|
console.log(`❌ Could not take error screenshot: ${screenshotError.message}`);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// Test WordPress theme analysis
|
|
test('Analyze WordPress Theme Styling', async ({ page }) => {
|
|
console.log('=== Analyzing WordPress Theme Styling ===');
|
|
|
|
// Go to homepage to analyze theme
|
|
await page.goto('https://upskill-staging.measurequick.com/', { waitUntil: 'networkidle' });
|
|
|
|
// Extract theme colors, fonts, and styling
|
|
const themeAnalysis = await page.evaluate(() => {
|
|
const computedStyle = getComputedStyle(document.body);
|
|
const headerStyle = getComputedStyle(document.querySelector('h1, .site-title, header') || document.body);
|
|
const linkStyle = getComputedStyle(document.querySelector('a') || document.body);
|
|
|
|
return {
|
|
bodyFont: computedStyle.fontFamily,
|
|
bodyFontSize: computedStyle.fontSize,
|
|
bodyColor: computedStyle.color,
|
|
bodyBackground: computedStyle.backgroundColor,
|
|
headerFont: headerStyle.fontFamily,
|
|
headerColor: headerStyle.color,
|
|
linkColor: linkStyle.color,
|
|
primaryColor: getComputedStyle(document.documentElement).getPropertyValue('--wp--preset--color--primary') || 'not-set',
|
|
secondaryColor: getComputedStyle(document.documentElement).getPropertyValue('--wp--preset--color--secondary') || 'not-set'
|
|
};
|
|
});
|
|
|
|
console.log('🎨 WordPress Theme Analysis:', themeAnalysis);
|
|
|
|
// Take homepage screenshot
|
|
await page.screenshot({
|
|
path: 'test-results/ui-review-wordpress-homepage.png',
|
|
fullPage: true
|
|
});
|
|
|
|
console.log('✅ WordPress theme analysis complete');
|
|
});
|
|
|
|
// Test mobile responsiveness
|
|
test('Mobile Responsiveness Check', async ({ page }) => {
|
|
console.log('=== Mobile Responsiveness Check ===');
|
|
|
|
// Set mobile viewport
|
|
await page.setViewportSize({ width: 375, height: 667 }); // iPhone SE
|
|
|
|
// Login
|
|
await page.goto('https://upskill-staging.measurequick.com/community-login');
|
|
await page.fill('#user_login', 'test_trainer');
|
|
await page.fill('#user_pass', 'Test123!');
|
|
await page.click('#wp-submit');
|
|
await page.waitForURL('**/hvac-dashboard/**');
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// Test key pages on mobile
|
|
const mobilePages = [
|
|
{ name: 'Dashboard', url: '/hvac-dashboard' },
|
|
{ name: 'Generate Certificates', url: '/generate-certificates' },
|
|
{ name: 'Certificate Reports', url: '/certificate-reports' }
|
|
];
|
|
|
|
for (const pageInfo of mobilePages) {
|
|
try {
|
|
console.log(`📱 Mobile test: ${pageInfo.name}`);
|
|
|
|
await page.goto(`https://upskill-staging.measurequick.com${pageInfo.url}`, {
|
|
waitUntil: 'networkidle'
|
|
});
|
|
await page.waitForTimeout(2000);
|
|
|
|
await page.screenshot({
|
|
path: `test-results/ui-review-${pageInfo.name.toLowerCase().replace(/\s+/g, '-')}-mobile.png`,
|
|
fullPage: true
|
|
});
|
|
|
|
console.log(`✅ Mobile captured: ${pageInfo.name}`);
|
|
} catch (error) {
|
|
console.log(`⚠️ Mobile test failed for ${pageInfo.name}: ${error.message}`);
|
|
}
|
|
}
|
|
});
|
|
}); |