Python 68.8%
TypeScript 18.6%
CSS 8.7%
JavaScript 3.3%
HTML 0.6%
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