53 lines
2.0 KiB
JavaScript
53 lines
2.0 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
|
|
async function probePage(browser, url, width) {
|
|
const page = await browser.newPage();
|
|
await page.setViewport({ width, height: 900, deviceScaleFactor: 1 });
|
|
await page.goto(url, { waitUntil: 'networkidle0' });
|
|
await page.waitForSelector('[data-mini-projects-list] .mini-projects-grid__item', { timeout: 15000 }).catch(()=>{});
|
|
await new Promise(r => setTimeout(r, 700));
|
|
const data = await page.evaluate(() => {
|
|
const list = document.querySelector('[data-mini-projects-list]');
|
|
if (!list) return { none: true };
|
|
const inner = list.closest('.section__inner');
|
|
const items = [...list.querySelectorAll('.mini-projects-grid__item')].filter(i => !i.hidden);
|
|
const rowCells = (() => {
|
|
const w = list.clientWidth;
|
|
if (w >= 1180) return 6;
|
|
if (w >= 880) return 4;
|
|
if (w >= 520) return 2;
|
|
return 1;
|
|
})();
|
|
return {
|
|
listWidth: list.clientWidth,
|
|
innerWidth: inner ? inner.clientWidth : null,
|
|
rowCells,
|
|
itemCount: items.length,
|
|
items: items.map(i => ({
|
|
cells: i.getAttribute('data-mp-cells'),
|
|
styleW: i.style.width,
|
|
x: i.style.transform,
|
|
})),
|
|
};
|
|
});
|
|
await page.close();
|
|
return data;
|
|
}
|
|
|
|
(async () => {
|
|
const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox','--disable-setuid-sandbox'] });
|
|
const widths = [600, 760, 900, 1024, 1180, 1278, 1356, 1600];
|
|
const caseUrl = 'http://localhost:4175/cases/ai-platform-primo-rpa/';
|
|
const homeUrl = 'http://localhost:4175/';
|
|
for (const w of widths) {
|
|
const c = await probePage(browser, caseUrl, w);
|
|
console.log(`CASE vw=${w} inner=${c.innerWidth} rowCells=${c.rowCells} items=${c.itemCount} ` + JSON.stringify(c.items));
|
|
}
|
|
console.log('---');
|
|
for (const w of widths) {
|
|
const h = await probePage(browser, homeUrl, w);
|
|
console.log(`HOME vw=${w} inner=${h.innerWidth} rowCells=${h.rowCells} items=${h.itemCount} ` + JSON.stringify(h.items));
|
|
}
|
|
await browser.close();
|
|
})().catch(e => { console.error(e); process.exit(1); });
|