31 lines
1.7 KiB
JavaScript
31 lines
1.7 KiB
JavaScript
import { chromium } from 'playwright-core';
|
|
const chrome = process.env.CHROME_PATH ?? '/home/emil/.cache/ms-playwright/chromium-1248/chrome-linux64/chrome';
|
|
const browser = await chromium.launch({ executablePath: chrome, args: ['--no-sandbox'] });
|
|
const page = await browser.newPage({ viewport: { width: 1600, height: 1000 }, deviceScaleFactor: 1 });
|
|
const errors = [];
|
|
page.on('pageerror', (error) => errors.push(error.message));
|
|
page.on('console', (message) => { if (message.type() === 'error') errors.push(message.text()); });
|
|
await page.goto('http://127.0.0.1:5173/', { waitUntil: 'load' });
|
|
await page.waitForTimeout(2200);
|
|
await page.locator('.render-button').click();
|
|
await page.waitForFunction(
|
|
() => [...document.querySelectorAll('.wire-label')].some((el) => el.textContent?.trim() === 'render'),
|
|
null,
|
|
{ timeout: 30000 }
|
|
);
|
|
await page.waitForTimeout(500);
|
|
await page.screenshot({ path: '../preview-p2-render.png' });
|
|
const report = await page.evaluate(() => ({
|
|
wire: [...document.querySelectorAll('.wire-entry')].slice(-4).map((el) => el.textContent?.replace(/\s+/g, ' ').trim()),
|
|
title: document.querySelector('.render-button')?.getAttribute('title'),
|
|
button: document.querySelector('.render-button')?.textContent?.trim()
|
|
}));
|
|
console.log(JSON.stringify({ report, errors }, null, 2));
|
|
const failures = [];
|
|
if (!report.title?.startsWith('last render:')) failures.push('render path is not on the button');
|
|
if (!report.wire.some((line) => line?.includes('16.5 s'))) failures.push('render event is not on the wire');
|
|
if (errors.length) failures.push('console errors');
|
|
await browser.close();
|
|
if (failures.length) { console.error('RENDER UI SMOKE FAILED: ' + failures.join('; ')); process.exit(1); }
|
|
console.log('render UI smoke passed');
|