SPB Git forge

spb/rent-ka

Public
8commits 1branches 0releases
7.4 MBsize
maindefault branch
19 days agolast push
Python 68.8% TypeScript 18.6% CSS 8.7% JavaScript 3.3% HTML 0.6%
2.2 KB · 55 lines javascript
Raw Blame History
1// Capture les screenshots du site prod pour le README (docs/screenshots/).2// Usage : npm i playwright puis `node scripts/screenshots.mjs`3// (RENTKA_BASE pour cibler un autre déploiement, OUT_DIR pour changer la sortie)4import { chromium, devices } from 'playwright';5import { mkdirSync } from 'fs';67const OUT = process.env.OUT_DIR || new URL('../docs/screenshots/', import.meta.url).pathname;8mkdirSync(OUT, { recursive: true });910const BASE = process.env.RENTKA_BASE || 'https://www.rent-ka.com';1112const shots = [13  { name: 'accueil', url: '/', width: 1440, height: 900 },14  { name: 'annonces', url: '/', width: 1440, height: 900, scrollTo: 1400 },15  { name: 'carte', url: '/?view=carte', width: 1440, height: 900, settle: 8000 },16  { name: 'accueil-mobile', url: '/', mobile: true },17  { name: 'fiche-logement', url: '/listing/skyline:example', width: 1440, height: 900 },18  { name: 'ville-quebec', url: '/ville/quebec', width: 1440, height: 900 },19  { name: 'villes', url: '/villes', width: 1440, height: 900 },20  { name: 'sources', url: '/sources', width: 1440, height: 900 },21  { name: 'stats', url: '/stats', width: 1440, height: 900 },22];2324const browser = await chromium.launch();25for (const s of shots) {26  const ctx = s.mobile27    ? await browser.newContext({ ...devices['iPhone 14'], locale: 'fr-CA' })28    : await browser.newContext({29        viewport: { width: s.width, height: s.height },30        deviceScaleFactor: 2,31        locale: 'fr-CA',32      });33  // Consentement déjà donné → pas de bandeau dans les captures34  await ctx.addInitScript(() => {35    localStorage.setItem(36      'rentka-consent-v1',37      JSON.stringify({ essential: true, preferences: true, statistics: false, ts: 1 })38    );39  });40  const page = await ctx.newPage();41  try {42    await page.goto(BASE + s.url, { waitUntil: 'networkidle', timeout: 45000 });43  } catch {44    // networkidle peut ne jamais arriver (ticker temps réel) — on capture quand même45  }46  if (s.scrollTo) {47    await page.mouse.wheel(0, s.scrollTo);48  }49  await page.waitForTimeout(s.settle ?? 2500);50  await page.screenshot({ path: `${OUT}${s.name}.png` });51  console.log('ok', s.name);52  await ctx.close();53}54await browser.close();55