Files
cv-site/tests/mjs/76-visual-verification.mjs
T

57 lines
1.9 KiB
JavaScript
Raw Normal View History

import { chromium } from 'playwright';
const browser = await chromium.launch();
const context = await browser.newContext({
viewport: { width: 375, height: 812 }
});
const page = await context.newPage();
await page.goto('http://localhost:1999');
await page.waitForTimeout(1500);
// Scroll to show back-to-top button
await page.evaluate(() => window.scrollTo(0, 500));
await page.waitForTimeout(500);
// Take screenshot of bottom-left floating buttons area
await page.screenshot({
path: 'tests/screenshots/button-icon-scaling-375px.png',
clip: { x: 0, y: 600, width: 200, height: 200 }
});
// Take full page for context
await page.screenshot({
path: 'tests/screenshots/full-page-375px.png',
fullPage: false
});
console.log('📸 Screenshots saved to tests/screenshots/');
// Print actual sizes for verification
const sizes = await page.evaluate(() => {
const results = [];
const selectors = ['.cmd-k-btn', '.download-btn', '.print-friendly-btn',
'.fixed-btn.contact-btn', '.shortcuts-btn',
'.color-theme-switcher', '.info-button', '.back-to-top'];
for (const sel of selectors) {
const btn = document.querySelector(sel);
if (btn) {
const btnStyle = getComputedStyle(btn);
const icon = btn.querySelector('iconify-icon');
const iconStyle = icon ? getComputedStyle(icon) : null;
results.push({
selector: sel,
button: Math.round(Number.parseFloat(btnStyle.width)) + 'x' + Math.round(Number.parseFloat(btnStyle.height)),
icon: iconStyle ? Math.round(Number.parseFloat(iconStyle.width)) + 'x' + Math.round(Number.parseFloat(iconStyle.height)) : 'N/A'
});
}
}
return results;
});
console.log('\n📐 Sizes at 375px viewport:');
sizes.forEach(s => console.log(' ' + s.selector + ': button=' + s.button + ', icon=' + s.icon));
await browser.close();