# Registro de situaciones detectadas ## Instrucciones para el agente Cuando el usuario pida documentar un error, incidencia o comportamiento inesperado en pruebas con `browser-tool`, debes: 1. Crear una nueva entrada usando la plantilla de este archivo. 2. Escribir informacion concreta y verificable, sin suposiciones vagas. 3. Incluir siempre evidencia trazable (`artifact`, log, salida de tool o reporte). 4. Indicar estado actual (`pendiente`, `en analisis`, `resuelto`, `descartado`). 5. Si aplicaste una correccion, anotar que se cambio y como se valido. 6. No borrar entradas anteriores; agregar nuevas y, si aplica, actualizar el estado de la entrada ya existente. 7. Usar fecha y hora local en formato `YYYY-MM-DD HH:mm`. Objetivo: mantener un historial operativo claro para depurar, priorizar y cerrar hallazgos durante desarrollo y pruebas. --- ## Plantilla de entrada ### Entrada (YYYY-MM-DD HH:mm) - Contexto: - Flujo probado: - Situacion observada: - Resultado esperado: - Resultado real: - Evidencia (artifact/log/report): - Hipotesis de causa: - Accion aplicada: - Validacion posterior: - Estado: pendiente | en analisis | resuelto | descartado - Notas: --- ## Entradas ### Entrada (2026-04-23 00:00) - Contexto: Inicializacion del registro. - Flujo probado: N/A. - Situacion observada: Se crea el archivo para consolidar hallazgos futuros. - Resultado esperado: Disponer de un formato unico para registrar incidencias. - Resultado real: Archivo creado correctamente. - Evidencia (artifact/log/report): `opencode-browser-tool/docs/REGISTRO_SITUACIONES.md` - Hipotesis de causa: N/A. - Accion aplicada: Creacion de plantilla e instrucciones de uso. - Validacion posterior: Pendiente de primeras entradas reales. - Estado: resuelto - Notas: Punto de arranque para seguimiento de situaciones durante pruebas. ### Entrada (2026-04-23 19:42) - Contexto: Prueba funcional de buscador externo para validar paginacion y localizacion de dominio en resultados. - Flujo probado: Abrir Google, buscar `barranquismo granada`, navegar resultados y avanzar con `Siguiente` hasta encontrar `barranquismogranada.com`. - Situacion observada: La sesion fue redirigida repetidamente a `https://www.google.com/sorry/index` (bloqueo anti-bot), impidiendo una paginacion normal y fiable. - Resultado esperado: Avanzar por paginas de resultados y devolver la posicion real del dominio objetivo. - Resultado real: `NO_ENCONTRADO max_paginas=8`, condicionado por bloqueo anti-bot antes de completar el flujo de paginacion real. - Evidencia (artifact/log/report): `/tmp/opencode_google_paginacion.jsonl` (tool outputs con `currentUrl` en `/sorry/index` y timeout en espera de URL de resultados). - Hipotesis de causa: Deteccion de automatizacion por Google para esta sesion/IP y bloqueo por challenge. - Accion aplicada: Reintento en modo visible y ajuste de flujo; se mantuvo bloqueo. Ademas se implemento en la tool captura automatica en error (`autoSnapshot`) y tool de observacion intermedia (`browser_observe`) para no cortar sin evidencia. - Validacion posterior: Validado en fixture local que ante error se adjunta `autoSnapshot` + `observation`; validado `browser_observe` con screenshot de mitad de flujo. - Estado: en analisis - Notas: Caso util para definir politica de handoff humano/CAPTCHA y estrategia de pruebas en buscadores con anti-bot. ### Entrada (2026-04-23 21:15) - Contexto: Reintento de la misma prueba en Google con flujo mejorado (consentimiento + observacion intermedia + captura automatica en error). - Flujo probado: Buscar `barranquismo granada`, avanzar por resultados y localizar `barranquismogranada.com`. - Situacion observada: Se gestiono consentimiento (`Rechazar todo`), pero tras enviar busqueda Google redirigio a `sorry/index` (verificacion humana). - Resultado esperado: Continuar paginacion y devolver posicion real del dominio. - Resultado real: `BLOQUEADO_HUMANO`. - Evidencia (artifact/log/report): - screenshot: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T21-14-38-965Z-error-browser_wait.png` - log de ejecucion: `/tmp/opencode_google_retest.jsonl` - Hipotesis de causa: Mecanismo anti-bot de Google (challenge humano) en esta sesion/IP. - Accion aplicada: Rechazo de cookies + reintento visible + observacion automatica. - Validacion posterior: Pendiente de handoff humano para superar challenge y continuar la misma prueba. - Estado: en analisis - Notas: El nuevo mecanismo de `autoSnapshot` y `browser_observe` funciono correctamente y aporta evidencia util en mitad del flujo. ### Entrada (2026-04-23 21:23) - Contexto: Reintento forzado de la prueba "si o si" con clic explicito de verificacion humana. - Flujo probado: Google -> consentimiento -> busqueda -> detectar `sorry/index` -> `browser_observe` -> `browser_handle_human_check` -> reintento de salida a resultados. - Situacion observada: La herramienta intento clic en controles de human-check, incluido intento de checkbox reCAPTCHA en iframe, pero no encontro un control clicable en esta sesion. - Resultado esperado: Resolver challenge humano y continuar paginacion. - Resultado real: `BLOQUEADO_HUMANO`. - Evidencia (artifact/log/report): - screenshot antes: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T21-21-49-250Z-human-check-before.png` - screenshot despues: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T21-22-16-015Z-human-check-after.png` - autosnapshot en error: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T21-22-11-037Z-error-browser_wait.png` - log: `/tmp/opencode_google_humanclick_retest.jsonl` - Hipotesis de causa: Challenge anti-bot no expone checkbox clicable directo en este contexto/IP/sesion. - Accion aplicada: AƱadida tool `browser_handle_human_check` y reintento en modo visible. - Validacion posterior: Pendiente de handoff manual humano en la misma sesion para continuar. - Estado: en analisis - Notas: El sistema ya no corta sin intentar y ahora deja trazabilidad completa del intento de human-check. ### Entrada (2026-04-23 21:48) - Contexto: Verificacion visual solicitada por usuario para confirmar si la tool realmente intenta el clic de "soy humano". - Flujo probado: Ejecucion visible con video, captura antes/despues del human-check e intento extendido en iframes/selectores de checkbox. - Situacion observada: Se ejecuto `browser_handle_human_check` con intentos en multiples selectores y iframes, pero no encontro control clicable (`clicked=false`). - Resultado esperado: Clic efectivo sobre control de verificacion humana y salida de `sorry/index`. - Resultado real: Sin clic efectivo; permanencia en `sorry/index`. - Evidencia (artifact/log/report): - `before`: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T21-47-40-040Z-before-human-check-v2.png` - `after`: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T21-48-04-615Z-after-human-check-v2.png` - video: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/page@980084a2685562a3f2fba478b8730d98.webm` - log: `/tmp/opencode_google_watch_click_v2.jsonl` - Hipotesis de causa: El challenge mostrado en esta sesion no expone checkbox clicable automatizable con los selectores actuales. - Accion aplicada: Ampliacion de estrategia de clic (iframes + selectors checkbox + fallback por texto). - Validacion posterior: Confirmado por salida de tool (`clicked=false`) y evidencia visual. - Estado: en analisis - Notas: Para completar esta prueba en este entorno, se requiere handoff manual sobre el challenge actual. ### Entrada (2026-04-24 00:18) - Contexto: Validacion pedida por usuario para comprobar movimiento visible de cursor y scroll real con contenido suficiente. - Flujo probado: Abrir fixture largo local -> verificar cursor overlay -> hover -> scroll de pagina -> scroll de contenedor -> snapshot/video. - Situacion observada: Con fixture anterior no habia altura suficiente para probar scroll; se creo fixture nuevo con contenido largo y contenedor interno desplazable. - Resultado esperado: Evidenciar que el cursor virtual existe y que el desplazamiento cambia posiciones reales de scroll. - Resultado real: Cursor overlay presente (`#__browser_tool_cursor`) y scroll efectivo (`movedY=1200` en pagina, `movedY=420` en `#scroll-box`). - Evidencia (artifact/log/report): - fixture: `opencode-browser-tool/scripts/fixture_scroll_long.html` - screenshot: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T22-18-49-353Z-cursor-scroll-smoke.png` - video: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/page@b0a5c648845bfba94a0843fd81d664d9.webm` - Hipotesis de causa: La ausencia de scroll en pruebas previas se debia al contenido insuficiente de la pagina de test, no a fallo de `browser_scroll`. - Accion aplicada: Se anadio fixture largo y se enriquecio salida de `browser_scroll` con metricas (`startY/endY/movedY/maxY`). - Validacion posterior: Build OK y smoke visual OK. - Estado: resuelto - Notas: Queda base estable para validar scroll en nuevas regresiones. ### Entrada (2026-04-24 00:19) - Contexto: Retest de Google tras ampliar estrategia de `browser_handle_human_check`. - Flujo probado: Google -> consentimiento reject -> busqueda `barranquismo granada` -> `sorry/index` -> intento human-check -> observacion antes/despues. - Situacion observada: La tool reporto clic efectivo en ancla reCAPTCHA dentro de iframe, pero la URL continuo en `sorry/index` en este intento. - Resultado esperado: Superar challenge y volver a `/search` para continuar paginacion. - Resultado real: `clicked=true` con metodo `frame:iframe[title*='reCAPTCHA']:#recaptcha-anchor`, sin salida inmediata de `sorry/index`. - Evidencia (artifact/log/report): - before: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T22-19-11-410Z-google-before-human-v3.png` - after: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T22-19-13-806Z-google-after-human-v3.png` - video: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/page@02542037c2003982eb2da9641c77f00e.webm` - Hipotesis de causa: El challenge requiere pasos adicionales (puzzle/espera/validacion servidor) tras el clic inicial, o decision por reputacion IP/sesion. - Accion aplicada: Se amplio `handleHumanCheck` con mas selectores y fallback por coordenadas; se confirmo clic efectivo al menos en una variante. - Validacion posterior: Pendiente retest con handoff manual para completar salida a `/search` y continuar paginacion. - Estado: en analisis - Notas: Se cierra duda previa de "si la tool clickea o no": ahora hay evidencia de clic efectivo. ### Entrada (2026-04-24 00:22) - Contexto: Reintento de la prueba objetivo completa (Google + paginacion) usando script de regresion v4. - Flujo probado: Google -> reject consent -> buscar `barranquismo granada` -> human-check -> intentar paginacion hasta 8 paginas. - Situacion observada: `handleHumanCheck` volvio a reportar clic efectivo en reCAPTCHA, pero la sesion se mantuvo en `sorry/index`, impidiendo entrar en `/search` y por tanto sin paginacion real. - Resultado esperado: Salir a resultados de busqueda y avanzar paginas hasta encontrar `barranquismogranada.com`. - Resultado real: `found=false` con bloqueo persistente en `sorry/index`. - Evidencia (artifact/log/report): - screenshot final: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-23T22-22-24-694Z-google-pagination-v4-final.png` - video: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/page@4d214e591bd81c6d279e36fa186d5e0b.webm` - script usado: `opencode-browser-tool/scripts/google_pagination_v4.mjs` - Hipotesis de causa: El challenge requiere validacion adicional no resuelta por el primer clic (puzzle/espera/verificacion servidor) o mantiene bloqueo por reputacion de sesion/IP. - Accion aplicada: Ejecutado retest v4 completo tras mejoras de clic en human-check. - Validacion posterior: Confirmado que el clic se intenta y ocurre (`clicked=true`), pero no desbloquea en este entorno. - Estado: en analisis - Notas: Para completar esta prueba concreta en este entorno sigue siendo necesario handoff manual directo al challenge. ### Entrada (2026-04-24 21:10) - Contexto: Repeticion de prueba de ranking organico tras habilitar modo de perfil persistente y tras login manual previo del usuario. - Flujo probado: Google -> aceptar cookies -> buscar `barranquismo granada` -> resolver posible `sorry/index` -> paginar resultados organicos. - Situacion observada: Persistio redireccion inicial a `sorry/index`, pero el flujo continuo a `/search` y se pudo completar paginacion organica. - Resultado esperado: Obtener posicion del dominio objetivo en resultados organicos. - Resultado real: Dominio encontrado en pagina 2, posicion 6 organica (rank global 16 en conteo del script). - Evidencia (artifact/log/report): - before manual: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-24T19-10-05-886Z-google-v7-before-manual.png` - after manual: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-24T19-10-31-757Z-google-v7-after-manual.png` - final: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-24T19-10-39-450Z-google-v7-final.png` - Hipotesis de causa: El historial/perfil ayuda, pero no elimina completamente el challenge anti-bot en este entorno. - Accion aplicada: Ejecucion con `browserKind=testing` + `persistentProfile=true` + `userDataDir=/home/pancho/.chromium-perfil-google`. - Validacion posterior: Flujo de ranking organico completado y posicion devuelta. - Estado: resuelto - Notas: Siguiente comparativa recomendada en este mismo proyecto: repetir con `browserKind=system` + perfil persistente equivalente. ### Entrada (2026-04-24 21:28) - Contexto: Prueba solicitada en `google.es` con foco en resultados organicos, clic al resultado encontrado y scroll suave en la web destino. - Flujo probado: abrir Google -> buscar `barranquismo granada` -> localizar primer organico con dominio `barranquismogranada.com` -> clic -> scroll progresivo hasta abajo. - Situacion observada: La sesion entro directamente a resultados (`/search`) sin bloqueo `sorry/index` en esta corrida. - Resultado esperado: Obtener posicion organica, abrir el resultado y completar scroll hasta el final. - Resultado real: Dominio encontrado en pagina 2, posicion 7 organica (rank global 17); clic exitoso y scroll completo (`loops=9`, `lastMoved=0`). - Evidencia (artifact/log/report): - destino bottom: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-24T19-28-57-330Z-google-v8d-destination-bottom.png` - final: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-24T19-28-58-023Z-google-v8d-final.png` - script: `opencode-browser-tool/scripts/google_es_v8d.mjs` - Hipotesis de causa: El perfil persistente aporta estabilidad de sesion para este caso concreto, aunque la posicion organica puede variar por momento/indice localizacion. - Accion aplicada: Se limitaron esperas extra a maximo 3s en tramo de challenge y se ejecuto scroll por pasos suaves. - Validacion posterior: Flujo completo terminado correctamente. - Estado: resuelto - Notas: Se confirma comportamiento solicitado (clic visible + scroll visible + conteo organico). ### Entrada (2026-04-24 22:10) - Contexto: Prueba solicitada con nueva query en Google: `puertas cortafuegos de madera`. - Flujo probado: abrir `google.es` -> buscar query -> paginar resultados -> localizar dominio `puertastecnicasbcn.com` -> navegar al resultado -> snapshot. - Situacion observada: La navegacion inicial en `google.es` acaba sirviendo resultados en host `google.com` en esta corrida, manteniendo idioma/contexto ES. - Resultado esperado: obtener posicion del dominio y capturar la pagina destino. - Resultado real: dominio encontrado en pagina 3, posicion 4 organica (rank global 23), URL `https://www.puertastecnicasbcn.com/puertas-cortafuegos/`. - Evidencia (artifact/log/report): - snapshot destino: `/home/pancho/Documentos/Empresa/IA/opencode-browser-tool/artifacts/2026-04-24T20-10-49-705Z-google-puertas-destination.png` - script: `opencode-browser-tool/scripts/google_es_puertas_rank.mjs` - Hipotesis de causa: Variacion normal de SERP por datacenter/sesion/ubicacion. - Accion aplicada: paginacion automatica + click al resultado encontrado + snapshot final. - Validacion posterior: prueba completada sin bloqueo de challenge en esta corrida. - Estado: resuelto - Notas: Playwright `page.screenshot` captura viewport de la pagina, no la barra de URL del navegador.