SPB Git forge

spb/lou-ka

Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

232commits 1branches 0releases
172.9 MBsize
maindefault branch
2 days agolast push
HTML 98.9% Python 0.6%
2.2 KB · 38 lines javascript
Raw Blame History
1// Captures Playwright de la fiche logement à 6 largeurs (QA visuelle).2// Usage : node frontend/scripts/shots.mjs [uid] [baseUrl] [outDir]3import { chromium, devices } from "playwright";4const UID = process.argv[2] || "zumper:60608306";5const BASE = process.argv[3] || "http://127.0.0.1:8095";6const OUT = process.argv[4] || "/tmp";7const shots = [8  ["iphone14", { ...devices["iPhone 14"] }],9  ["w375", { viewport: { width: 375, height: 812 }, deviceScaleFactor: 2, isMobile: true, hasTouch: true }],10  ["w430", { viewport: { width: 430, height: 932 }, deviceScaleFactor: 2, isMobile: true, hasTouch: true }],11  ["w768", { viewport: { width: 768, height: 1024 }, deviceScaleFactor: 1 }],12  ["w1024", { viewport: { width: 1024, height: 800 }, deviceScaleFactor: 1 }],13  ["w1440", { viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 }],14];15const browser = await chromium.launch();16for (const [name, opts] of shots) {17  const ctx = await browser.newContext(opts); const page = await ctx.newPage();18  const errs = [];19  page.on("pageerror", (e) => errs.push("PAGEERROR " + e.message));20  page.on("console", (m) => { if (m.type() === "error") errs.push(m.text().slice(0, 200)); });21  await page.goto(`${BASE}/logement/${encodeURIComponent(UID)}`, { waitUntil: "networkidle" });22  await page.waitForSelector(".lk-hero", { timeout: 20000 });23  // défilement complet (déclenche les chargements différés) puis retour en haut24  await page.evaluate(async () => {25    for (let y = 0; y < document.body.scrollHeight; y += 600) { window.scrollTo(0, y); await new Promise((r) => setTimeout(r, 120)); }26    window.scrollTo(0, 0);27  });28  await page.waitForTimeout(3500);29  const ov = await page.evaluate(() => document.documentElement.scrollWidth - window.innerWidth);30  await page.screenshot({ path: `${OUT}/lk-${name}-full.png`, fullPage: true });31  await page.screenshot({ path: `${OUT}/lk-${name}-top.png` });32  await page.evaluate(() => window.scrollTo(0, 900)); await page.waitForTimeout(600);33  await page.screenshot({ path: `${OUT}/lk-${name}-scrolled.png` });34  console.log(name, "overflow", ov, "errors", errs.length, errs.slice(0, 3).join(" | "));35  await ctx.close();36}37await browser.close();38