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 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 07:11:23 -04:00
parent 65359338f8
commit 9a5e8caebd
2 changed files with 32 additions and 1 deletions
+10 -1
View File
@@ -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',