Files

152 lines
4.6 KiB
JavaScript
Raw Permalink Normal View History

#!/usr/bin/env bun
/**
* AWARDS VISUAL TEST
* Check awards section layout and icons
*/
import { chromium } from "playwright";
const URL = "http://localhost:1999";
async function testAwards() {
console.log("🧪 AWARDS VISUAL TEST\n");
console.log("=".repeat(70));
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage({ viewport: { width: 1400, height: 1080 } });
await page.goto(URL);
await page.waitForTimeout(2000);
// Scroll to awards section
await page.evaluate(() => {
const awards = document.querySelector('#awards');
if (awards) awards.scrollIntoView({ behavior: 'smooth', block: 'start' });
});
await page.waitForTimeout(1000);
console.log("\n1️⃣ Checking Awards Section:");
const awardsInfo = await page.evaluate(() => {
const awardsSection = document.querySelector('#awards');
const awardItems = document.querySelectorAll('.award-item');
const awardLogos = document.querySelectorAll('.award-logo');
const results = {
sectionExists: !!awardsSection,
itemCount: awardItems.length,
logoCount: awardLogos.length,
items: []
};
awardItems.forEach((item, i) => {
const logo = item.querySelector('.award-logo');
const logoImg = logo?.querySelector('img');
const content = item.querySelector('.award-content');
const logoStyle = logo ? window.getComputedStyle(logo) : null;
const imgStyle = logoImg ? window.getComputedStyle(logoImg) : null;
const itemStyle = window.getComputedStyle(item);
results.items.push({
index: i,
hasLogo: !!logo,
hasImg: !!logoImg,
imgSrc: logoImg?.src || 'none',
logoDisplay: logoStyle?.display,
logoWidth: logoStyle?.width,
logoHeight: logoStyle?.height,
imgWidth: imgStyle?.width,
imgHeight: imgStyle?.height,
imgObjectFit: imgStyle?.objectFit,
itemDisplay: itemStyle?.display,
itemGap: itemStyle?.gap,
contentExists: !!content
});
});
return results;
});
console.log(` Section exists: ${awardsInfo.sectionExists}`);
console.log(` Award items: ${awardsInfo.itemCount}`);
console.log(` Award logos: ${awardsInfo.logoCount}`);
awardsInfo.items.forEach(item => {
console.log(`\n Award #${item.index + 1}:`);
console.log(` Has logo: ${item.hasLogo}`);
console.log(` Has img: ${item.hasImg}`);
console.log(` Img src: ${item.imgSrc}`);
console.log(` Logo display: ${item.logoDisplay}`);
console.log(` Logo size: ${item.logoWidth} × ${item.logoHeight}`);
console.log(` Img size: ${item.imgWidth} × ${item.imgHeight}`);
console.log(` Img object-fit: ${item.imgObjectFit}`);
console.log(` Item display: ${item.itemDisplay}`);
console.log(` Item gap: ${item.itemGap}`);
console.log(` Has content: ${item.contentExists}`);
});
console.log("\n2️⃣ Testing icon toggle:");
// Turn icons OFF
await page.click('label:has(#iconToggle)');
await page.waitForTimeout(500);
const afterOff = await page.evaluate(() => {
const awardLogos = document.querySelectorAll('.award-logo');
const results = [];
awardLogos.forEach((logo, i) => {
const style = window.getComputedStyle(logo);
results.push({
index: i,
opacity: style.opacity,
width: style.width,
height: style.height
});
});
return results;
});
console.log(" Icons OFF:");
afterOff.forEach(logo => {
console.log(` Logo #${logo.index + 1}: opacity=${logo.opacity}, size=${logo.width}×${logo.height}`);
});
// Turn icons ON
await page.click('label:has(#iconToggle)');
await page.waitForTimeout(500);
const afterOn = await page.evaluate(() => {
const awardLogos = document.querySelectorAll('.award-logo');
const results = [];
awardLogos.forEach((logo, i) => {
const style = window.getComputedStyle(logo);
results.push({
index: i,
opacity: style.opacity,
width: style.width,
height: style.height
});
});
return results;
});
console.log("\n Icons ON:");
afterOn.forEach(logo => {
console.log(` Logo #${logo.index + 1}: opacity=${logo.opacity}, size=${logo.width}×${logo.height}`);
});
await page.screenshot({ path: 'tests/screenshots/awards-visual-test.png', fullPage: false });
console.log("\n📸 Screenshot saved to tests/screenshots/awards-visual-test.png");
console.log("\n" + "=".repeat(70));
console.log("\nBrowser will stay open for 60 seconds for visual inspection...");
await page.waitForTimeout(60000);
await browser.close();
}
await testAwards();