Web QA
ActivoValida texto, contenido y renderizado visual antes de publicar
En cola
0
prospectos esperando
Ejecuciones
50
50 logs
Costo total
$0.0383
acumulado total
Errores
0
100% éxito
Último run
14/8, 11:00 a. m.
Parte del pipeline lineal diario (sin hora fija propia) — corre apenas termina SEO Injector, dentro del QA loop de esa misma corrida
Descripción
QA en tres capas. Primero checks de texto deterministas (placeholders, nombre, ciudad, contacto, title, meta). Segundo revisión de contenido con IA (coherencia del copy, servicios lógicos, español natural) — le pasa al modelo los campos reales de copy_content para que, si hay un problema, señale el campo EXACTO a corregir, no solo lo describa. Tercero y más crítico: check visual con Puppeteer — abre el preview_url real en un browser headless, espera 4 segundos (bajado de 7 el 04/07/2026) y verifica que el preloader desapareció y hay contenido visible. Guarda screenshot en output/{slug}/qa.png. Ruteo inteligente por origen del rechazo (04/07/2026): si el problema es de CONTENIDO (check de IA) vuelve al Copywriter (status: researched) para que regenere SOLO el/los campo(s) señalados con sus fórmulas reales; si es TÉCNICO (placeholder, contacto, loader, JS) va a qa_failed — cola de revisión manual, nunca se reintenta solo porque regenerar copy no arregla un bug de mapping. ⚠️ Límite conocido: si Puppeteer falla en cargar la página (timeout/red), el issue queda como warn (no bloquea el pase a qa_passed) — un prospecto puede aprobar sin que nadie haya confirmado visualmente cómo se ve. Queda logueado explícito para poder auditarlo.
Tareas
- Check 1 — Texto: detectar placeholders sin reemplazar ({{VARIABLE}})
- Check 1 — Texto: verificar nombre, ciudad y botón de contacto/WhatsApp
- Check 1 — Texto: validar title tag, meta description, HTML mínimo 5.000 chars
- Check 2 — IA: revisa coherencia del copy, servicios y tono, señalando el campo exacto si hay un problema
- Check 3 — Visual: Puppeteer abre preview_url en browser headless real
- Check 3 — Visual: esperar 4 segundos para que las animaciones terminen
- Check 3 — Visual: verificar que #loader tiene display:none (preloader dismissado)
- Check 3 — Visual: verificar que body.innerText tiene contenido visible (> 50 chars)
- Check 3 — Visual: capturar screenshot → output/{slug}/qa.png
- Check 3 — Visual: registrar errores JS de la página
- Si Puppeteer falla en cargar la página, loguear warn explícito (no bloquea el pase — límite conocido)
- Rechazo de contenido → status: researched (vuelve al Copywriter con qa_fix_notes + qa_fix_fields)
- Rechazo técnico → status: qa_failed (cola de revisión manual, sin reintento automático)
Últimas ejecuciones (system_logs)
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Sin webs pendientes de QA
Modelo IA
$0.1/1M in · $0.4/1M out
Costo acumulado real
$0.0383
Tokens
Última ejecución
↑1.553 in ↓116 out
+1.497 thinking
7/7, 11:24 a. m.
Script
src/pipeline/web-qa.jsCapa
Pipeline operativo