Files
html/api/css2dscan.js
2026-04-25 02:20:29 +02:00

62 lines
2.3 KiB
JavaScript

const { chromium } = require("playwright");
(async () => {
const b = await chromium.launch({ headless: true, args: ["--no-sandbox","--disable-gpu"] });
const ctx = await b.newContext({ viewport: {width:1920,height:1080} });
const pg = await ctx.newPage();
try {
await pg.goto("https://weval-consulting.com/aapreview.html", { waitUntil: "load", timeout: 35000 });
await pg.waitForTimeout(15000);
const r = await pg.evaluate(() => {
// Find all body > div elements that are tall (potential renderers)
const tall = Array.from(document.querySelectorAll('body > div')).map(d => {
const r = d.getBoundingClientRect();
const cs = getComputedStyle(d);
return {
id: d.id || '(no id)',
class: (d.className || '').toString().slice(0,40),
children: d.children.length,
h: Math.round(r.height),
w: Math.round(r.width),
pos: cs.position,
top: cs.top, left: cs.left,
overflow: cs.overflow
};
}).filter(d => d.h > 1500 || d.children > 50);
// Find canvas
const canvas = document.querySelector('canvas');
const canvasInfo = canvas ? {
w: canvas.width, h: canvas.height,
rect_w: Math.round(canvas.getBoundingClientRect().width),
rect_h: Math.round(canvas.getBoundingClientRect().height),
cs_pos: getComputedStyle(canvas).position
} : null;
// Find CSS2DRenderer container - usually a div with overlapping ag-cards inside
const card = document.querySelector('.ag-card');
const renderer = card ? card.parentElement : null;
const rendererInfo = renderer ? {
tag: renderer.tagName,
id: renderer.id,
class: (renderer.className || '').toString().slice(0,40),
h: Math.round(renderer.getBoundingClientRect().height),
w: Math.round(renderer.getBoundingClientRect().width),
pos: getComputedStyle(renderer).position,
top: getComputedStyle(renderer).top,
children: renderer.children.length
} : null;
return {
canvas: canvasInfo,
css2d_renderer: rendererInfo,
tall_divs: tall
};
});
console.log("RENDERER_SCAN:");
console.log(JSON.stringify(r, null, 2));
} catch(e) { console.log("ERR:", e.message); }
await b.close();
})();