opencode-browser-tool-insta.../docs/REGISTRO_SITUACIONES.md

218 lines
16 KiB
Markdown

# 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.