Skip to main content
Glama
README.md
# dsh-plugin-browser-qa — QA con navegador real para DeepSeek Harness

Plugin MCP local que abre URLs reales en **Chrome o Edge** y le da al agente
herramientas de QA: navegar, hacer clic, escribir, esperar elementos, capturas
de pantalla, **consola** y **red**. Sin Playwright, sin navegadores descargados y
sin dependencias externas: usa Chrome DevTools Protocol (CDP) sobre WebSocket.

[English](README.en.md) · [Cómo funciona](docs/COMO-FUNCIONA.md) · MIT

## Herramientas (10)

| Tool | Qué hace |
|---|---|
| `mcp__browser__open` | Abre una URL (lista blanca) y espera la carga. |
| `mcp__browser__click` | Clic por selector CSS o por texto visible. |
| `mcp__browser__type` | Escribe en un input/textarea/contenteditable; opcional enviar formulario. |
| `mcp__browser__wait` | Espera milisegundos o hasta que aparezca un selector. |
| `mcp__browser__screenshot` | Captura el viewport, la página completa o un elemento; devuelve la imagen dentro del resultado. |
| `mcp__browser__console` | Logs y errores de consola capturados (filtrable por nivel/texto). |
| `mcp__browser__network` | Requests con método, URL, status, MIME y fallos (filtrable). |
| `mcp__browser__read` | Texto visible de la página o de un selector. |
| `mcp__browser__status` | Estado del navegador, pestaña, lista blanca y modo. |
| `mcp__browser__close` | Cierra la pestaña (y el navegador con `shutdown:true`). |

## Instalación

Desde **DSH → Settings → Plugins**: instala
`github:thegabopacheco-sudo/dsh-plugin-browser-qa` y permite el script de
instalación cuando DSH lo pida.

Por CLI (perfiles que no administra la app):

```
dsh plugin --profile <perfil> add github:thegabopacheco-sudo/dsh-plugin-browser-qa
```

El `postinstall` copia el runtime a `<DSH_HOME>\plugins\browser-qa`.

Requisitos: Windows 10/11, Node ≥ 20 (lo aporta el harness) y **Chrome o Edge
instalado**. El plugin lanza el navegador solo (headless por defecto).

## Configuración

| Variable | Uso |
|---|---|
| `DSH_BROWSER_ALLOWED_DOMAINS` | Lista blanca separada por comas (default: `localhost,127.0.0.1,wendigocio.com,.wendigocio.com`). |
| `DSH_BROWSER_ALLOW_ALL` | `1` desactiva la lista blanca (solo para entornos de confianza). |
| `DSH_BROWSER_HEADLESS` | `0` abre el navegador con ventana (default headless). |
| `DSH_BROWSER_PORT` | Puerto de depuración CDP (default `9333`). |
| `DSH_BROWSER_PATH` | Ruta explícita a `chrome.exe` / `msedge.exe`. |
| `DSH_BROWSER_MODE` | `read-only` deshabilita click y type. |
| `DSH_BROWSER_SKIP_POSTINSTALL` | `1` omite el despliegue del postinstall. |

Datos locales: capturas en `<DSH_HOME>\cache\browser-qa\shots`, auditoría en
`<DSH_HOME>\cache\browser-qa\audit.jsonl`.

## Seguridad

- **Lista blanca de dominios** en `open` (configurable).
- **Read-only** opcional: sin clic ni escritura.
- **Auditoría** de navegación, clics y escritura.
- **Rate limit** de 120 acciones por minuto.
- Las instrucciones del modelo prohíben credenciales reales, compras, envíos o
  borrados sin confirmación.
- No lee el perfil del usuario: usa un `user-data-dir` aislado en el cache.

## Uso típico

1. «Abre `http://localhost:3000/owner`, tómame una captura y dime qué se ve.»
2. «Haz clic en el botón Guardar y comprueba si aparece el mensaje.»
3. «Revisa la consola y la red después de cargar: ¿qué requests fallaron?»
4. «Escribe `prueba` en el buscador, envía y captura el resultado.»

## Solución de problemas

- **“Install scripts need your permission”**: aprueba el `postinstall`. Si el
  cartel vuelve en bucle, revisa `<perfil>\pnpm-workspace.yaml`: los valores de
  `allowBuilds` deben ser `true` (no el placeholder `set this to true or false`).
- **No encuentra navegador**: instala Chrome/Edge o define `DSH_BROWSER_PATH`.
- **No aparecen las tools**: verifica `<DSH_HOME>\plugins\browser-qa\server.mjs`
  y la fila `mcp-browser-qa`; reinicia DSH si hace falta.
- **Dominio bloqueado**: agrégalo a `DSH_BROWSER_ALLOWED_DOMAINS`.

## Desarrollo

```powershell
npm install
npm run build:bundle
cd test; npm install; node connect-test.mjs
```

## Licencia

MIT © thegabopacheco-sudo