Files
stack/agents/dewey/work/wui/checks/references.mjs
T

35 lines
2.1 KiB
JavaScript

import { browser } from './browser.mjs';
import { mkdir, writeFile } from 'node:fs/promises';
const out = new URL('../evidence/', import.meta.url);
await mkdir(out, {recursive: true});
const b = await browser();
const results = [];
try {
for (const [name, url] of [['t3','https://t3.codes/'], ['buzz','https://buzz.xyz/']]) {
const entry = {name, url, observedAt: new Date().toISOString()};
try {
await b.viewport(1440, 1100);
await b.navigate(url);
// Allow the reference sites' entrance animation to finish before capture.
await new Promise(resolve => setTimeout(resolve, 4000));
entry.desktop = await b.evaluate(`({title:document.title, url:location.href,
headings:[...document.querySelectorAll('h1,h2,h3')].map(x=>x.textContent.trim()).slice(0,25),
controls:[...document.querySelectorAll('button,a,input')].map(x=>({tag:x.tagName,text:(x.textContent||x.getAttribute('aria-label')||x.placeholder||'').trim().slice(0,100),href:x.getAttribute('href')})).filter(x=>x.text).slice(0,65),
body:{font:getComputedStyle(document.body).fontFamily,bg:getComputedStyle(document.body).backgroundColor,color:getComputedStyle(document.body).color},
text:document.body.innerText.slice(0,6500)})`);
await b.screenshot(new URL(`${name}-desktop.png`, out));
await b.evaluate('window.scrollTo(0, 1500)');
await new Promise(resolve => setTimeout(resolve, 700));
await b.screenshot(new URL(`${name}-details.png`, out));
await b.evaluate('window.scrollTo(0, 0)');
await b.viewport(390, 844);
await new Promise(resolve => setTimeout(resolve, 700));
await b.screenshot(new URL(`${name}-mobile.png`, out));
entry.mobile = await b.evaluate('({width:innerWidth,scrollWidth:document.documentElement.scrollWidth})');
} catch(error) {entry.error = error.message;}
results.push(entry);
}
} finally {await b.close();}
await writeFile(new URL('references.json', out), JSON.stringify(results, null, 2));
console.log(results.map(x=>({name:x.name,title:x.desktop?.title,error:x.error,mobile:x.mobile})));