{"version":3,"names":["test","expect","assert","configure","fs","path","ai","gateway","models","stepExecution","userFlowLow","userFlowHigh","assertionPrimary","assertionSecondary","assertionArbiter","SHARD_FILE","process","env","resolve","cwd","AI_ENABLED","AI_CHECKS","shardName","basename","replace","RESULTS_DIR","SHOTS_DIR","SCREENSHOT_DIR","entries","JSON","parse","readFileSync","sanitize","s","PLACEHOLDER_PATTERNS","describe","mode","entry","locale","type","page","testInfo","_dom$scrollHeight","_dom$scrollWidth","_dom$innerWidth","_dom$bodyTextLen","_dom$hasHeader","_dom$hasFooter","_dom$h1Count","_dom$headings","_dom$title","_dom$metaDesc","_dom$robots","_dom$canonical","_dom$ogTitle","_dom$ogDesc","_dom$ogImage","_dom$htmlLang","_dom$hasViewportMeta","_dom$imgCount","_dom$imgsNoAlt","_dom$brokenImgs","setTimeout","viewport","project","name","consoleErrors","consoleWarnings","pageErrors","failedRequests","on","msg","t","push","text","slice","txt","err","String","message","res","status","url","request","resourceType","httpStatus","loadOk","navError","t0","Date","now","_resp$status","resp","goto","waitUntil","timeout","waitForLoadState","catch","waitForTimeout","e","dom","evaluate","de","document","documentElement","body","innerWidth","window","scrollWidth","Math","max","scrollHeight","bodyText","innerText","imgs","Array","from","querySelectorAll","brokenImgs","filter","im","complete","naturalWidth","currentSrc","src","map","imgsNoAlt","getAttribute","hasAttribute","length","headings","h","level","Number","tagName","textContent","trim","attr","sel","a","_document$querySelect","querySelector","bodyTextLen","title","metaDesc","robots","canonical","ogTitle","ogDesc","ogImage","htmlLang","hasViewportMeta","hasHeader","hasFooter","h1Count","imgCount","placeholderTokens","re","seoIssues","h1s","prev","md","overflowDelta","overflow","emptyish","mkdirSync","recursive","shotPath","join","fullShotPath","viewportBuf","screenshot","fullPage","runAi","aiChecks","images","byteLength","toString","undefined","r","failSilently","assertion","coherence","passed","includes","summary","error","isTool","tool","langName","i18n","inTargetLang","hasFullShot","tallPage","FULLPAGE","result","durationMs","consoleErrorCount","failedRequestCount","fullScreenshot","writeFileSync","stringify","attach","contentType","toBe","toBeLessThan"],"sources":["site-check.spec.ts"],"sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { assert, configure } from \"passmark\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\n// ── Config Passmark : Vercel AI Gateway (clé partagée AI_GATEWAY_API_KEY du VPS).\n//    Exécution → Gemini Flash ; jugement (assertions) → Claude Sonnet 4.6 (consensus + arbitre).\nconfigure({\n  ai: {\n    gateway: \"vercel\",\n    models: {\n      stepExecution: \"google/gemini-3.5-flash\",\n      userFlowLow: \"google/gemini-3-flash-preview\",\n      userFlowHigh: \"google/gemini-3.5-flash\",\n      assertionPrimary: \"anthropic/claude-sonnet-4.6\",\n      assertionSecondary: \"google/gemini-3-flash\",\n      assertionArbiter: \"anthropic/claude-sonnet-4.6\",\n    },\n  },\n});\n\ntype UrlEntry = {\n  path: string;\n  url: string;\n  locale: \"fr\" | \"en\" | \"es\";\n  type: string;\n  aiChecks: boolean;\n  isTool: boolean;\n};\n\nconst SHARD_FILE = process.env.SHARD_FILE || path.resolve(process.cwd(), \"urls.json\");\nconst AI_ENABLED = process.env.AI_CHECKS !== \"0\";\nconst shardName = path.basename(SHARD_FILE).replace(/\\.json$/, \"\");\nconst RESULTS_DIR = process.env.RESULTS_DIR || path.resolve(process.cwd(), \"results\", shardName);\nconst SHOTS_DIR = process.env.SCREENSHOT_DIR || path.resolve(process.cwd(), \"screenshots\", shardName);\n\nconst entries: UrlEntry[] = JSON.parse(fs.readFileSync(SHARD_FILE, \"utf8\"));\n\nfunction sanitize(s: string): string {\n  return s.replace(/[^a-z0-9]+/gi, \"_\").replace(/^_|_$/g, \"\") || \"root\";\n}\n\n// Heuristiques de tokens parasites (volontairement précises pour limiter les faux positifs).\nconst PLACEHOLDER_PATTERNS: Array<[string, RegExp]> = [\n  [\"undefined\", /\\bundefined\\b/],\n  [\"NaN\", /(?<![A-Za-z])NaN(?![A-Za-z])/],\n  [\"[object Object]\", /\\[object Object\\]/],\n  [\"Lorem ipsum\", /lorem ipsum/i],\n  [\"unrendered mustache {{…}}\", /\\{\\{[^}]+\\}\\}/],\n  [\"WP shortcode non rendu\", /\\[(?:vc_|et_pb|gallery\\b|caption\\b|embed\\b|contact-form|wpforms|\\/vc_|\\/et_pb)[^\\]]*\\]/i],\n];\n\ntest.describe.configure({ mode: \"parallel\" });\n\nfor (const entry of entries) {\n  test(`[${entry.locale}|${entry.type}] ${entry.path}`, async ({ page }, testInfo) => {\n    test.setTimeout(170_000);\n    const viewport = testInfo.project.name; // \"desktop\" | \"mobile\"\n\n    const consoleErrors: string[] = [];\n    const consoleWarnings: string[] = [];\n    const pageErrors: string[] = [];\n    const failedRequests: Array<{ url: string; status: number; type: string }> = [];\n\n    page.on(\"console\", (msg) => {\n      const t = msg.type();\n      if (t === \"error\") consoleErrors.push(msg.text().slice(0, 400));\n      else if (t === \"warning\") {\n        const txt = msg.text();\n        if (/hydrat|did not match|Warning:|controlled|uncontrolled|each child|key prop|act\\(/i.test(txt)) {\n          consoleWarnings.push(txt.slice(0, 400));\n        }\n      }\n    });\n    page.on(\"pageerror\", (err) => pageErrors.push(String(err?.message || err).slice(0, 400)));\n    page.on(\"response\", (res) => {\n      const s = res.status();\n      if (s >= 400) {\n        failedRequests.push({ url: res.url(), status: s, type: res.request().resourceType() });\n      }\n    });\n\n    let httpStatus = 0;\n    let loadOk = true;\n    let navError = \"\";\n    const t0 = Date.now();\n    try {\n      const resp = await page.goto(entry.url, { waitUntil: \"domcontentloaded\", timeout: 60_000 });\n      httpStatus = resp?.status() ?? 0;\n      await page.waitForLoadState(\"networkidle\", { timeout: 6_000 }).catch(() => {});\n      await page.waitForTimeout(600);\n    } catch (e) {\n      loadOk = false;\n      navError = String((e as Error).message).slice(0, 300);\n    }\n\n    // ── Checks déterministes (DOM) ──────────────────────────────────────────\n    const dom = await page\n      .evaluate(() => {\n        const de = document.documentElement;\n        const body = document.body;\n        const innerWidth = window.innerWidth;\n        const scrollWidth = Math.max(de.scrollWidth, body ? body.scrollWidth : 0);\n        const scrollHeight = Math.max(de.scrollHeight, body ? body.scrollHeight : 0);\n        const bodyText = body ? body.innerText : \"\";\n        const imgs = Array.from(document.querySelectorAll(\"img\"));\n        const brokenImgs = imgs\n          .filter((im) => im.complete && im.naturalWidth === 0 && (im.currentSrc || im.src))\n          .map((im) => im.currentSrc || im.src)\n          .slice(0, 25);\n        const imgsNoAlt = imgs.filter((im) => !im.getAttribute(\"alt\") && !im.hasAttribute(\"aria-hidden\")).length;\n        // Hiérarchie des titres (Hn) dans l'ordre du DOM.\n        const headings = Array.from(document.querySelectorAll(\"h1,h2,h3,h4,h5,h6\")).map((h) => ({\n          level: Number(h.tagName[1]),\n          text: (h.textContent || \"\").trim().replace(/\\s+/g, \" \").slice(0, 140),\n        }));\n        const attr = (sel: string, a: string) => document.querySelector(sel)?.getAttribute(a) || \"\";\n        return {\n          innerWidth,\n          scrollWidth,\n          scrollHeight,\n          bodyTextLen: bodyText.length,\n          bodyText: bodyText.slice(0, 20000),\n          title: document.title,\n          metaDesc: attr('meta[name=\"description\"]', \"content\"),\n          robots: attr('meta[name=\"robots\"]', \"content\"),\n          canonical: attr('link[rel=\"canonical\"]', \"href\"),\n          ogTitle: attr('meta[property=\"og:title\"]', \"content\"),\n          ogDesc: attr('meta[property=\"og:description\"]', \"content\"),\n          ogImage: attr('meta[property=\"og:image\"]', \"content\"),\n          htmlLang: document.documentElement.getAttribute(\"lang\") || \"\",\n          hasViewportMeta: !!document.querySelector('meta[name=\"viewport\"]'),\n          hasHeader: !!document.querySelector(\"header, nav, [role=banner]\"),\n          hasFooter: !!document.querySelector(\"footer, [role=contentinfo]\"),\n          h1Count: document.querySelectorAll(\"h1\").length,\n          headings: headings.slice(0, 120),\n          imgCount: imgs.length,\n          imgsNoAlt,\n          brokenImgs,\n        };\n      })\n      .catch(() => null);\n\n    const placeholderTokens: string[] = [];\n    if (dom?.bodyText) {\n      for (const [name, re] of PLACEHOLDER_PATTERNS) {\n        if (re.test(dom.bodyText)) placeholderTokens.push(name);\n      }\n    }\n\n    // ── SEO déterministe : Hn, title, meta desc, canonical, robots, alt… ─────\n    const seoIssues: string[] = [];\n    if (dom && httpStatus < 400) {\n      const h1s = dom.headings.filter((h) => h.level === 1);\n      if (dom.headings.length === 0) seoIssues.push(\"aucun titre Hn\");\n      if (h1s.length === 0) seoIssues.push(\"aucun H1\");\n      else if (h1s.length > 1) seoIssues.push(`H1 multiples (${h1s.length})`);\n      let prev = 0;\n      for (const h of dom.headings) {\n        if (prev && h.level > prev + 1) {\n          seoIssues.push(`saut de hiérarchie H${prev}→H${h.level}`);\n          break;\n        }\n        prev = h.level;\n      }\n      const t = (dom.title || \"\").trim();\n      if (!t) seoIssues.push(\"title vide\");\n      else if (t.length < 25) seoIssues.push(`title court (${t.length})`);\n      else if (t.length > 65) seoIssues.push(`title long (${t.length})`);\n      const md = (dom.metaDesc || \"\").trim();\n      if (!md) seoIssues.push(\"meta description absente\");\n      else if (md.length < 50) seoIssues.push(`meta desc courte (${md.length})`);\n      else if (md.length > 165) seoIssues.push(`meta desc longue (${md.length})`);\n      if (!dom.canonical) seoIssues.push(\"canonical absent\");\n      if (/noindex/i.test(dom.robots)) seoIssues.push(\"noindex\");\n      if (!dom.hasViewportMeta) seoIssues.push(\"meta viewport absente\");\n      if (!dom.htmlLang) seoIssues.push(\"html lang absent\");\n      if (dom.imgsNoAlt > 0) seoIssues.push(`${dom.imgsNoAlt} image(s) sans alt`);\n    }\n\n    const overflowDelta = dom ? dom.scrollWidth - dom.innerWidth : 0;\n    const overflow = overflowDelta > 4;\n    const emptyish = !!dom && dom.bodyTextLen < 200; // page quasi-vide\n\n    // ── Screenshot VIEWPORT d'abord (toujours sûr, borné) ───────────────────\n    //    Sert d'image IA ET de capture de secours. Le full-page (lourd, peut\n    //    crasher le renderer sur les pages géantes) est tenté APRÈS l'IA.\n    fs.mkdirSync(SHOTS_DIR, { recursive: true });\n    const shotPath = path.join(SHOTS_DIR, `${sanitize(entry.path)}__${viewport}.png`);\n    const fullShotPath = path.join(SHOTS_DIR, `${sanitize(entry.path)}__${viewport}__full.png`);\n    let viewportBuf: Buffer | null = null;\n    try {\n      viewportBuf = await page.screenshot({ path: shotPath, fullPage: false });\n    } catch { /* ignore */ }\n\n    // ── Assertions IA passmark (consensus) — page encore saine ──────────────\n    const ai: Record<string, unknown> = {};\n    const runAi = AI_ENABLED && entry.aiChecks && loadOk && httpStatus < 400 && !emptyish;\n    if (runAi) {\n      const images =\n        viewportBuf && viewportBuf.byteLength < 6_000_000 ? [viewportBuf.toString(\"base64\")] : undefined;\n\n      try {\n        const r = await assert({\n          page,\n          expect,\n          failSilently: true,\n          images,\n          assertion:\n            \"This page renders as a complete, coherent web page for a B2B roofing/insulation company (Covalba). \" +\n            \"There is NO broken layout, NO elements overlapping or cut off, NO large empty/blank sections where content should be, \" +\n            \"the main images appear loaded (not broken placeholders), and the text is readable. \" +\n            \"Answer false ONLY if the page looks visibly broken, blank, unstyled, or like an error page.\",\n        });\n        ai.coherence = { passed: r.includes(\"✅ passed\"), summary: r.slice(0, 1200) };\n      } catch (e) {\n        ai.coherence = { error: String((e as Error).message).slice(0, 300) };\n      }\n\n      if (entry.isTool) {\n        try {\n          const r = await assert({\n            page,\n            expect,\n            failSilently: true,\n            assertion:\n              \"The page's main interactive tool or form (a multi-step diagnostic/estimate form, an energy-savings calculator, or a contact form) \" +\n              \"is visible and not visibly broken: inputs, labels and buttons render correctly and are not empty or overlapping.\",\n          });\n          ai.tool = { passed: r.includes(\"✅ passed\"), summary: r.slice(0, 1000) };\n        } catch (e) {\n          ai.tool = { error: String((e as Error).message).slice(0, 300) };\n        }\n      }\n\n      if (entry.locale !== \"fr\") {\n        const langName = entry.locale === \"en\" ? \"English\" : \"Spanish\";\n        try {\n          const r = await assert({\n            page,\n            expect,\n            failSilently: true,\n            assertion:\n              `The MAIN visible content of this page (headings, paragraphs, buttons, navigation) is written in ${langName}. ` +\n              `Answer false if the main content is actually in French (untranslated / fallback) or a clear mix of French and ${langName}.`,\n          });\n          ai.i18n = { inTargetLang: r.includes(\"✅ passed\"), summary: r.slice(0, 1000) };\n        } catch (e) {\n          ai.i18n = { error: String((e as Error).message).slice(0, 300) };\n        }\n      }\n    }\n\n    // ── Full-page en best-effort APRÈS l'IA, et seulement si la page n'est pas\n    //    géante (au-delà, le screenshot full-page crashe le renderer → on garde\n    //    le viewport ; les checks déterministes couvrent déjà tout le DOM). ────\n    let hasFullShot = false;\n    const tallPage = (dom?.scrollHeight ?? 0) > 10_000;\n    if (process.env.FULLPAGE !== \"0\" && !tallPage) {\n      try {\n        await page.screenshot({ path: fullShotPath, fullPage: true });\n        hasFullShot = true;\n      } catch { /* on garde le viewport */ }\n    }\n\n    const result = {\n      path: entry.path,\n      url: entry.url,\n      locale: entry.locale,\n      type: entry.type,\n      viewport,\n      aiChecks: entry.aiChecks,\n      httpStatus,\n      loadOk,\n      navError,\n      durationMs: Date.now() - t0,\n      pageErrors,\n      consoleErrorCount: consoleErrors.length,\n      consoleErrors: consoleErrors.slice(0, 25),\n      consoleWarnings: consoleWarnings.slice(0, 15),\n      failedRequests: failedRequests.slice(0, 40),\n      failedRequestCount: failedRequests.length,\n      overflow,\n      overflowDelta,\n      scrollWidth: dom?.scrollWidth ?? null,\n      innerWidth: dom?.innerWidth ?? null,\n      emptyish,\n      bodyTextLen: dom?.bodyTextLen ?? 0,\n      hasHeader: dom?.hasHeader ?? false,\n      hasFooter: dom?.hasFooter ?? false,\n      h1Count: dom?.h1Count ?? 0,\n      headings: dom?.headings ?? [],\n      title: dom?.title ?? \"\",\n      metaDesc: dom?.metaDesc ?? \"\",\n      robots: dom?.robots ?? \"\",\n      canonical: dom?.canonical ?? \"\",\n      ogTitle: dom?.ogTitle ?? \"\",\n      ogDesc: dom?.ogDesc ?? \"\",\n      ogImage: dom?.ogImage ?? \"\",\n      htmlLang: dom?.htmlLang ?? \"\",\n      hasViewportMeta: dom?.hasViewportMeta ?? false,\n      imgCount: dom?.imgCount ?? 0,\n      imgsNoAlt: dom?.imgsNoAlt ?? 0,\n      brokenImgs: dom?.brokenImgs ?? [],\n      placeholderTokens,\n      seoIssues,\n      ai,\n      screenshot: viewportBuf ? shotPath : null,\n      fullScreenshot: hasFullShot ? fullShotPath : null,\n    };\n\n    fs.mkdirSync(RESULTS_DIR, { recursive: true });\n    fs.writeFileSync(\n      path.join(RESULTS_DIR, `${sanitize(entry.path)}__${viewport}.json`),\n      JSON.stringify(result, null, 2),\n    );\n    await testInfo.attach(\"result\", {\n      body: JSON.stringify(result, null, 2),\n      contentType: \"application/json\",\n    });\n\n    // Audit : on n'échoue PAS le test sur un finding (tout est enregistré).\n    // On fait échouer UNIQUEMENT sur une vraie casse serveur (nav KO ou 5xx) pour la visibilité.\n    expect(loadOk, `Navigation échouée: ${navError}`).toBe(true);\n    expect(httpStatus, `HTTP ${httpStatus} pour ${entry.path}`).toBeLessThan(500);\n  });\n}\n"],"mappings":"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","ignoreList":[]}