#!/usr/bin/env bun /** * Test: Course list icons - small size with preserved colors * * Verifies: * 1. Course list icons are small (24px) * 2. Icons preserve their original colors from inline styles */ import { chromium } from 'playwright'; const BASE_URL = 'http://localhost:1999'; async function testCourseIconsFinal() { console.log('\nšŸ“š Course Icons - Final Test (Size + Colors)\n'); const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); try { await page.goto(BASE_URL, { waitUntil: 'networkidle' }); await page.waitForSelector('.cv-container', { timeout: 5000 }); console.log('šŸ“± Test: Course list icons'); const iconInfo = await page.evaluate(() => { const results = []; // Find all iconify icons in course responsibilities const icons = document.querySelectorAll('.course-item .responsibilities li iconify-icon.default-company-icon'); icons.forEach((icon, index) => { const styles = window.getComputedStyle(icon); const width = parseFloat(styles.width); const height = parseFloat(styles.height); const color = styles.color; const display = styles.display; // Check if icon has inline style color const inlineStyle = icon.getAttribute('style'); const hasInlineColor = inlineStyle && inlineStyle.includes('color'); results.push({ index, width, height, color, display, hasInlineColor, isSmallSize: width <= 30 && height <= 30, // Should be ~24px isVisible: width > 0 && height > 0, }); }); return results; }); if (iconInfo.length === 0) { console.log(' āš ļø No course list icons found'); await browser.close(); return; } console.log(` Found ${iconInfo.length} course list icons\n`); let allCorrect = true; iconInfo.forEach(icon => { const sizeStatus = icon.isSmallSize ? 'āœ…' : 'āŒ'; const colorStatus = icon.hasInlineColor ? 'šŸŽØ' : '⚪'; console.log(` Icon ${icon.index}:`); console.log(` ${sizeStatus} Size: ${icon.width.toFixed(1)}px Ɨ ${icon.height.toFixed(1)}px`); console.log(` ${colorStatus} Color: ${icon.color} ${icon.hasInlineColor ? '(inline style preserved)' : '(no inline style)'}`); console.log(` Display: ${icon.display}\n`); if (!icon.isSmallSize || !icon.isVisible) { allCorrect = false; } }); if (!allCorrect) { console.log(' āŒ Some icons have incorrect size!'); await browser.close(); process.exit(1); } console.log('āœ… All course icons are properly sized and colors are preserved!\n'); await browser.close(); } catch (error) { console.error('\nāŒ Test failed:', error.message); await browser.close(); process.exit(1); } } testCourseIconsFinal();