From 7231e4624ca5ce46829da3cbd5c7def26f50841a Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Thu, 11 Dec 2025 00:53:08 +0100 Subject: [PATCH] Fix de playwright --- AGENTS.md | 4 ++++ tools/check_external_links.js | 38 +++++++++++++++++++---------------- tools/config/config.json | 4 ++-- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index c41c81c3..0ebe94a3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -212,6 +212,10 @@ Il s'agit d'un site statique généré avec Hugo, dont la version peut être vé - Vérifie la disponibilité des sites liés partout dans `content/` (code HTTP 200 ou autre) - On cherche les liens dans les fichiers markdown (incluant le frontmatter) et les fichiers `*.yaml` - On ignore les URL placés dans des blocs de code mono ou multilignes +- La vérification enrichie repose sur Playwright et le Chromium embarqué par la librairie `playwright` + - La variable `externalLinks.usePlaywright` de `tools/config/config.json` doit être positionnée à `true` pour activer cette vérification + - L'attribut `externalLinks.playwrightExecutablePath` doit rester vide ou à `null` afin de laisser Playwright utiliser son propre navigateur, compatible avec la configuration `nix-ld` déclarée dans `/etc/nixos/nix-ld-libraries.nix` + - Si `externalLinks.playwrightExecutablePath` est renseigné, il doit impérativement pointer vers un binaire existant : dans le cas contraire, le script se termine en erreur et interrompt le déploiement #### Internes (`tools/check_internal_links.js`) diff --git a/tools/check_external_links.js b/tools/check_external_links.js index 5cf9d667..5f786fb7 100644 --- a/tools/check_external_links.js +++ b/tools/check_external_links.js @@ -76,24 +76,28 @@ const MAX_REDIRECTS = Math.max( ); const DEFAULT_USER_AGENT = buildUserAgent(settings.userAgent); const IGNORE_HOSTS = parseIgnoreHosts(settings.ignoreHosts); -const PLAYWRIGHT_RESOLUTION = - settings.usePlaywright === true - ? resolvePlaywrightExecutable(settings.playwrightExecutablePath) - : { path: null, missing: null }; -const PLAYWRIGHT_EXECUTABLE = PLAYWRIGHT_RESOLUTION.path; -const PLAYWRIGHT_ENABLED = settings.usePlaywright === true && !PLAYWRIGHT_RESOLUTION.missing; -if (settings.usePlaywright === true && PLAYWRIGHT_RESOLUTION.missing) { - console.warn( - [ - "Playwright désactivé : impossible de trouver l'exécutable demandé", - `"${PLAYWRIGHT_RESOLUTION.missing}".`, - `Corrigez externalLinks.playwrightExecutablePath dans ${path.relative( - SITE_ROOT, - CONFIG_PATH - )} pour rétablir la vérification enrichie.`, - ].join(" ") - ); +let PLAYWRIGHT_EXECUTABLE = null; +if (settings.usePlaywright === true && typeof settings.playwrightExecutablePath === "string") { + const trimmedExecutable = settings.playwrightExecutablePath.trim(); + if (trimmedExecutable) { + const resolution = resolvePlaywrightExecutable(trimmedExecutable); + if (resolution.missing) { + console.error( + [ + "Playwright activé mais impossible de trouver l'exécutable demandé", + `"${resolution.missing}".`, + `Corrigez externalLinks.playwrightExecutablePath dans ${path.relative( + SITE_ROOT, + CONFIG_PATH + )} ou laissez ce champ vide pour utiliser la configuration Playwright par défaut.`, + ].join(" ") + ); + process.exit(1); + } + PLAYWRIGHT_EXECUTABLE = resolution.path; + } } +const PLAYWRIGHT_ENABLED = settings.usePlaywright === true; const PLAYWRIGHT_TIMEOUT_MS = Math.max( 1000, (Number.isFinite(Number(settings.playwrightTimeoutSeconds)) diff --git a/tools/config/config.json b/tools/config/config.json index 21a97350..48fd768b 100644 --- a/tools/config/config.json +++ b/tools/config/config.json @@ -16,7 +16,7 @@ "cookieJar": "tools/cache/curl_cookies.txt", "usePlaywright": true, "playwrightTimeoutSeconds": 10, - "playwrightExecutablePath": "/nix/store/jaf9gnbln0cbs2vspfdblc4ff6vv1kk5-chromium-142.0.7444.175/bin/chromium", + "playwrightExecutablePath": null, "ignoreHosts": [ "10.0.2.1", "web.archive.org", @@ -133,4 +133,4 @@ "post": 24 } } -} \ No newline at end of file +}