From 9a5e8caebdee271d31c6741aead27091a27010c4 Mon Sep 17 00:00:00 2001 From: rafa Date: Mon, 3 Aug 2026 07:11:23 -0400 Subject: [PATCH] e2e: poder verificar el sitio de produccion saltandose Cloudflare Despues del cutover, la suite no servia para verificar www.feadulta.com: el WAF de Cloudflare devuelve 403 a las IPs desde las que corremos (la de Rafa y la del propio Hetzner), asi que por el dominio real no se comprueba nada. run.js acepta ahora hostResolverRules en el JSON del sitio y se lo pasa a Chromium como --host-resolver-rules. El navegador va directo al origen con el Host correcto, que es justo lo que queremos comprobar: lo que hemos cambiado es el origen, no Cloudflare. Se anade sites/www.json con las 11 URLs de produccion. Resultado del 3-ago tras el cutover: 11 de 11 en 200. Los WARN que salen son dos falsos positivos, ambos comprobados: - la baliza de GA4 aborta al cerrar la pagina en headless, y de paso confirma que GA4 dispara desde el servidor nuevo con el G-6RT9ZRS4LW correcto. - la "imagen rota" es un img con src vacio que crea el lazy-loader en tiempo de ejecucion. En el HTML no existe en ninguno de los dos servidores, y el numero de imagenes es identico entre Hetzner y CDMON (4 y 4 en las entradas, 1.253 y 1.253 en el listado de autores). Co-Authored-By: Claude Opus 5 --- tools/e2e/run.js | 11 ++++++++++- tools/e2e/sites/www.json | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tools/e2e/sites/www.json diff --git a/tools/e2e/run.js b/tools/e2e/run.js index f5579c1..7392ef1 100644 --- a/tools/e2e/run.js +++ b/tools/e2e/run.js @@ -64,7 +64,16 @@ fs.mkdirSync(outDir, { recursive: true }); console.log(`[e2e] site=${siteName} targets=${targets.length} out=${outDir}`); -const browser = await chromium.launch({ headless: true }); +// hostResolverRules permite apuntar el navegador al origen saltandose el DNS publico. +// Hace falta para verificar un sitio que esta detras de Cloudflare: el WAF devuelve 403 +// a las IPs desde las que corremos, asi que por el dominio real no se puede comprobar +// nada. Formato de Chromium: "MAP www.ejemplo.com 1.2.3.4, MAP ejemplo.com 1.2.3.4". +const launchArgs = site.hostResolverRules + ? [`--host-resolver-rules=${site.hostResolverRules}`] + : []; +if (launchArgs.length) console.log(`[e2e] host-resolver-rules: ${site.hostResolverRules}`); + +const browser = await chromium.launch({ headless: true, args: launchArgs }); const context = await browser.newContext({ viewport: site.viewport ?? { width: 1366, height: 900 }, userAgent: site.userAgent ?? 'feadulta-e2e/0.1', diff --git a/tools/e2e/sites/www.json b/tools/e2e/sites/www.json new file mode 100644 index 0000000..6bab198 --- /dev/null +++ b/tools/e2e/sites/www.json @@ -0,0 +1,22 @@ +{ + "name": "feadulta-produccion-hetzner", + "baseUrl": "https://www.feadulta.com", + "viewport": { "width": 1366, "height": 900 }, + "timeoutMs": 45000, + "userAgent": "feadulta-e2e/0.1 (+local)", + "hostResolverRules": "MAP www.feadulta.com 188.40.120.157, MAP feadulta.com 188.40.120.157", + "notes": "Produccion despues del cutover del 3-ago. Se resuelve a mano contra el Hetzner porque el WAF de Cloudflare devuelve 403 a nuestras IPs: por el dominio real no se puede verificar nada. Asi se comprueba el origen, que es lo que hemos cambiado.", + "urls": [ + { "slug": "home-es", "path": "/" }, + { "slug": "home-en", "path": "/en/" }, + { "slug": "home-fr", "path": "/fr/" }, + { "slug": "home-it", "path": "/it/" }, + { "slug": "home-pt", "path": "/pt/" }, + { "slug": "carta-semana", "path": "/mesa-libre/" }, + { "slug": "post-ejemplo", "path": "/como-bendecir-la-mesa/" }, + { "slug": "evangelio-dia", "path": "/evangelio-de-cada-dia/" }, + { "slug": "autores", "path": "/autores-lista/" }, + { "slug": "buscador", "path": "/?s=evangelio" }, + { "slug": "wp-login", "path": "/wp-login.php" } + ] +}