Argus
Arnés de QA impulsado por IA que detecta errores de JS, fallos de accesibilidad, regresiones visuales y problemas de seguridad a través de Chrome DevTools MCP, sin necesidad de scripts de prueba.
Documentación
Argus — La capa de QA para el desarrollo asistido por IA
Tu agente de IA escribe el código. Argus verifica lo que realmente construyó.
Una línea en tu configuración de MCP le da a Claude (o a cualquier agente MCP) un motor real de auditoría de Chrome: 67 categorías de auditoría · 149 tipos de hallazgos · cero archivos de prueba que escribir o mantener. Y con Aegis, lo que encuentra nunca filtra tus secretos al LLM.
▶ Véalo en acción → argus-qa.com
Inicio rápido · El bucle de corrección · Lo que detecta · Tu stack · Herramientas MCP · Configuración completa · Referencia
Por qué existe Argus
Los agentes de IA ahora escriben la mayor parte del código — y juzgan su propio trabajo por si compila y parece terminado, no por lo que realmente sucede en el navegador. La excepción no capturada en el tercer clic. El formulario que envía credenciales por HTTP. El LCP de 4 segundos. El botón que desapareció en modo oscuro. El endpoint de API golpeado en un bucle infinito.
Argus cierra esa brecha. Conduce un Chrome real (a través del Protocolo Chrome DevTools) contra tu aplicación que se ejecuta localmente y entrega al agente — o a ti — un informe de errores estructurado y clasificado por severidad. El agente corrige; Argus vuelve a verificar; el bucle se cierra antes de que el código salga de tu máquina.
| 🧪 Sin archivos de prueba, nunca | Argus audita la aplicación renderizada — DOM, consola, red, píxeles — no tu código fuente. Nada que escribir, nada que mantener cuando el agente refactoriza |
| 🤖 Construido para el bucle del agente | El único motor de QA que Claude puede llamar de forma nativa a través de MCP. Auditar → corregir → re-auditar sin salir de la conversación |
| 🔒 Seguro para agentes por defecto | Aegis: los hallazgos se redactan en cada límite de salida — los secretos, PII y detalles de explotación nunca llegan a la ventana de contexto del LLM (OWASP LLM02, activado por defecto, fail-closed) |
| 🧰 También una herramienta de QA normal | Auditorías por lotes desde CLI, una puerta de PR en GitHub Action, informes de Slack con capturas de pantalla, diferencias dev-vs-staging, modo de vigilancia — con o sin agente |
Inicio rápido
Sin instalación.
npxobtiene Argus en la primera ejecución.
1 — Añade dos líneas a .mcp.json en la raíz de tu proyecto:
{
"mcpServers": {
"chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest"] },
"argus": { "command": "npx", "args": ["-y", "argusqa-os"] }
}
}
O a través de la CLI de Claude Code:
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest
claude mcp add argus -- npx -y argusqa-os
2 — Inicia Chrome (detecta automáticamente tu Chrome, establece las banderas correctas):
npx -y -p argusqa-os argus-chrome
¿Prefieres iniciar Chrome manualmente? (comandos para macOS / Windows / Linux)
# macOS
open -a "Google Chrome" --args --remote-debugging-port=9222 --headless=new
# Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --headless=new --no-sandbox --disable-gpu --user-data-dir="$env:TEMP\chrome-argus"
# Linux
google-chrome --remote-debugging-port=9222 --headless=new --no-sandbox
3 — Pregunta a tu agente:
Run argus_audit on http://localhost:3000
Eso es todo. Los hallazgos vuelven estructurados y clasificados por severidad — en la conversación, a Slack, o como un report.html local. ¿Algo no funciona? npx -y -p argusqa-os argus-doctor diagnostica tu configuración con un solo comando.
El bucle de corrección
Así se ve Argus dentro de una sesión de codificación agéntica:
You: Build me a checkout page with a card form.
Agent: [writes the code, dev server renders it]
You: Run argus_audit on http://localhost:3000/checkout
Argus: ● 2 critical · 3 warnings
● uncaught TypeError in checkout.js (visible on submit)
● form posts over HTTP — security_no_https
▲ card inputs missing labels + autocomplete (a11y/WCAG)
▲ LCP 4.1s — hero image unoptimized
▲ duplicate POST /api/cart ×7 — likely render loop
Agent: [fixes all five]
You: Run argus_get_context
Argus: ✓ resolved: 5 · persisting: 0 · new: 0
argus_get_context compara con la instantánea anterior, para que el agente sepa exactamente qué corrigió, qué rompió y qué queda — sin releer muros de salida.
"Pero mi agente ya puede manejar un navegador…" — puede. Manejar no es juzgar. Un MCP de navegador en bruto (Playwright MCP, chrome-devtools-mcp desnudo) le da al agente manos y ojos; el agente debe entonces re-derivar qué verificar en cada sesión, quemando contexto en la exploración de registros de consola. Argus es la capa de juicio encima: 149 tipos de hallazgos codificados con umbrales, política de severidad, líneas base entre ejecuciones, filtrado de inestabilidad, deduplicación, pistas de causa raíz — devueltos en una sola llamada, redactados por defecto.
Lo que Argus detecta
32 motores de análisis, 149 tipos de problemas distintos, cero mantenimiento de archivos de prueba:
| Categoría | Qué detecta |
|---|---|
| JavaScript | Excepciones no capturadas, rechazos de promesas no manejados, console.error en rutas críticas |
| Red y API | HTTP 5xx, fallos de autenticación 401/403, llamadas API duplicadas (bucles infinitos), errores 4xx, enlaces rotos |
| Rendimiento | LCP > 2500ms, CLS > 0.1, TTFB > 800ms, APIs lentas > 1s/3s, cargas > 500KB/2MB, paquetes JS > 500KB |
| Accesibilidad | axe-core (más de 80 reglas WCAG), simulación de daltonismo, ARIA faltante, foco de teclado, jerarquía de encabezados |
| SEO | Descripción meta faltante, etiquetas OG, canonical, viewport, h1 |
| Seguridad | Tokens de autenticación en localStorage/URL, eval(), CSP/X-Frame-Options faltantes, violaciones de CSP, SRI faltante en scripts externos, exposición de mapas de fuente, redirecciones abiertas, CVEs de npm |
| CSS | Anulaciones en cascada, fugas de estilo de componentes, reglas no utilizadas, conflictos de estilos en línea de React |
| Contenido | null/undefined como texto visible, lorem ipsum, imágenes rotas, listas de datos vacías |
| Responsive | Desbordamiento horizontal a 375px/768px, objetivos táctiles < 44×44px |
| Memoria | Nodos DOM desconectados mediante instantánea de heap V8, crecimiento de heap entre navegaciones |
| Visual | Regresión de capturas de pantalla a nivel de píxel mediante pixelmatch (≥0.1% advertencia, ≥5% crítico) |
| Figma | Fidelidad diseño-a-implementación — 13 tipos de propiedades (color, espaciado, tipografía, sombras, etc.) |
| Formularios | required, autocomplete, aria-describedby faltantes; entradas sin etiqueta |
| Fuentes | FOIT, FOUT, respaldos faltantes, cargas lentas > 1s, formatos subóptimos |
| Movimiento | Violaciones de prefers-reduced-motion, autoplay sin controles de pausa |
| Tema | Brechas de modo oscuro — variables CSS estáticas, manejo de prefers-color-scheme faltante |
| Línea base de red | Nuevas solicitudes, solicitudes faltantes, regresiones de código de estado frente a la línea base HAR guardada |
| Diferencia de entorno | Dev vs staging — diferencia de capturas de pantalla, cambios de DOM, regresiones de consola/red |
Y cada hallazgo se procesa posteriormente con:
| Post-procesador | Qué añade |
|---|---|
| Filtrado inteligente de línea base | Los hallazgos que cambian entre ejecuciones se etiquetan como noisy y se degradan a informativos — heurísticas puras entre ejecuciones, sin llamadas API (ARGUS_NOISE_FILTER=0 para desactivar) |
| Vinculación de causa raíz | Los nuevos hallazgos se anotan con los commits de git recientes y los archivos más probables de haberlos causado (ARGUS_ROOT_CAUSE=0 para desactivar) |
Todos los hallazgos se clasifican como
critical/warning/infoy se enrutan al canal de Slack correcto — o se muestran en el informe HTML local. Para tablas de severidad por hallazgo y métodos de detección, consulta REFERENCE.md.
Compatible con tu stack
Argus audita la salida renderizada, no tu código fuente — por lo que es agnóstico de frameworks por construcción. Si se ejecuta en Chrome, Argus puede auditarlo:
| Frameworks SPA | React, Vue, Angular, Svelte/SvelteKit, Solid, Preact, Astro… |
| Meta-frameworks | Next.js, Nuxt, Remix, Gatsby — además de extras conscientes del framework: descubrimiento de rutas de Next.js y React Router, mapeo de PR por grafo de importación ("este componente cambió → auditar solo las rutas que lo renderizan"), conciencia de monorepo |
| Renderizado en servidor | Rails, Django, Laravel, Flask, Spring, PHP — cualquier cosa que sirva HTML a un navegador |
| Estático / sin framework | HTML/CSS/JS plano, sitios de documentación, páginas de aterrizaje |
| APIs (a través de la página) | Validación de esquema de respuesta, comprobaciones de estado/temporización en cada solicitud que hace la página |
Límites honestos: solo renderizado Chrome/Chromium (sin diferencias de motor Safari/Firefox), solo web (sin aplicaciones móviles nativas ni de escritorio), y los servicios backend se verifican a través del tráfico que genera la página — no como suites de prueba de API independientes.
Confidencialidad — Límite de salida de Aegis
Activado por defecto. Argus audita tu aplicación en busca de secretos y vulnerabilidades — por lo que sus hallazgos son exactamente los datos que menos quieres que salgan de tu máquina. Aegis los redacta en cada límite externo antes de que crucen. Para equipos que adoptan agentes de IA, esta es la diferencia entre "usamos una herramienta de QA con IA" y "podemos decirle a nuestro líder de seguridad exactamente por qué es seguro".
Un hallazgo enviado a un destino externo — una respuesta de herramienta MCP (que llega a la ventana de contexto del agente llamante y transita al proveedor de modelos de ese agente), un mensaje de Slack, un comentario de PR de GitHub con sus anotaciones de ::error, el informe HTML alojado/CI, o los registros de CI — se reduce a una proyección de necesidad de saber: un hallazgo sensible cruza como su type + route + severity + un marcador de 🔒, y nunca su carga útil bruta (message, evidence, cuerpos de solicitud/respuesta, encabezados, cookies, stack). Las URLs se proyectan con la cadena de consulta eliminada (los tokens se esconden allí). Un hallazgo benigno conserva su mensaje — pero ese mensaje aún se limpia de cualquier secreto o PII incrustado accidentalmente.
| Principio | Comportamiento |
|---|---|
| Fidelidad local preservada | El informe JSON en disco y el HTML abierto localmente conservan 100% del detalle — la redacción solo elimina detalle en el camino de salida |
| Fail-closed | Ante cualquier error de clasificador o forma de hallazgo desconocida, Aegis redacta más, nunca menos |
| Denegación por defecto | Solo una lista de permitidos explícita de campos seguros cruza; un campo nuevo no filtra nada hasta que se permita deliberadamente |
| Detección en 5 capas | Reglas de categoría ∪ 13 expresiones regulares de secretos ∪ rareza estadística (entropía / eficiencia de tokens) ∪ 7 reglas PII validadas por Luhn ∪ refuerzo de contexto |
| Opt-out | ARGUS_REDACT_SENSITIVE=0 → la salida es byte-idéntica a la pre-Aegis |
Esto implementa las mitigaciones de OWASP LLM02:2025 — Divulgación de información sensible (minimización de datos, redacción, filtrado de salida por denegación por defecto) en los propios límites de Argus. Una bóveda de rehidratación opcional, solo local (ARGUS_REDACT_VAULT=1), puede acuñar tokens reversibles y sin información para artefactos estables en diferencias — re-inflar localmente con npm run report:rehydrate. El cambio completo de comportamiento está documentado en CHANGELOG.md.
Herramientas MCP
Pregunta a Claude (o a cualquier cliente MCP) — sin necesidad de terminal:
| Herramienta | Descripción |
|---|---|
argus_audit | Pasada rápida — JS, red, accesibilidad, SEO, seguridad, CSS, contenido |
argus_audit_full | Pasada profunda — añade Lighthouse, comprobaciones responsive, detección de fugas de memoria, errores de estado hover |
argus_compare | Diferencia dev vs staging — capturas de pantalla, delta de hallazgos, regresiones de entorno |
argus_get_context | Captura todo lo roto en la pestaña abierta — con diferencia de resolved / new / persisting frente a la última instantánea (el bucle de corrección) |
argus_watch_snapshot | Instantánea de la pestaña abierta sin navegar (preserva el estado de autenticación/formulario) |
argus_last_report | Devuelve el último informe JSON sin volver a ejecutar |
argus_design_audit | URL de Figma → 13 tipos de hallazgos de tokens de diseño (color, espaciado, tipografía, sombras, etc.) |
argus_visual_diff | Comparación de línea base de capturas de pantalla. Pasa updateBaseline: true para restablecer. |
argus_pr_validate | Obtiene el diff del PR de GitHub → mapea archivos cambiados a rutas afectadas → auditoría dirigida → decisión de bloqueo consciente de la línea base (bloquea hallazgos que el PR introduce) + comentario de PR idempotente + Check Run → { blocked, findings, baseline, reporting } |
Cada respuesta de herramienta se proyecta a través del límite de salida de Aegis antes de llegar al agente, y lleva un aviso opcional de
redaction({ redacted, total }) cuando se retuvo detalle sensible.
Ejemplos de prompts:
Run argus_audit on http://localhost:3000/checkout
Run argus_audit_full on http://localhost:3000/dashboard
Run argus_compare
Run argus_get_context
Probado en batalla, no por vibraciones
La propia corrección de Argus se aplica de la misma manera que audita la tuya:
- 998/998 aserciones estrictas en un arnés de integración de 171 bloques que maneja Chrome real contra 64 páginas de prueba — incluidos controles negativos por categoría (cero sobre-disparos), esquemas de respuesta dorados para las 9 herramientas MCP, y un canario de deriva ascendente que detecta cambios de API de chrome-devtools-mcp en el momento del aumento de versión
- 562 pruebas unitarias sin Chrome (Vitest) + fuzzing de parser basado en propiedades
npm audit: 0 vulnerabilidades · CodeQL + Dependabot en cada PR · Socket.dev: 100/100/100 en vulnerabilidad/calidad/licencia- Archivos de sesión y tokens capturados escritos
0600, solo propietario
Configuración completa
Prerrequisitos
| Requisito | Versión |
|---|---|
| Node.js | v20.19+ |
| Chrome | Stable (escritorio o headless) |
| Claude Code | Última versión (npm install -g @anthropic-ai/claude-code) — o cualquier cliente MCP |
| Espacio de trabajo de Slack | Opcional — omítelo para el modo local report.html |
Opción A — Servidor MCP (recomendado para usuarios de Claude Code)
No se necesita instalación local. Usa el Inicio rápido de arriba y luego añade tu URL objetivo:
# .env in your project root
TARGET_DEV_URL=http://localhost:3000
TARGET_STAGING_URL=https://staging.example.com # optional — enables argus_compare
Opcional — Notificaciones de Slack:
- api.slack.com/apps → Crear nueva app → nómbrala BugBot
- OAuth y Permisos → Ámbitos de token de bot:
chat:write,files:write,files:read - Instala en el espacio de trabajo → copia el token
xoxb-... - Crea los canales
#bugs-critical,#bugs-warnings,#bugs-digesty ejecuta/invite @BugBoten cada uno
SLACK_BOT_TOKEN=xoxb-...
SLACK_CHANNEL_CRITICAL=C0000000000
SLACK_CHANNEL_WARNINGS=C0000000001
SLACK_CHANNEL_DIGEST=C0000000002
Sin Slack: Argus genera automáticamente
reports/report.htmly lo abre en tu navegador — cero configuración adicional.
Opción B — Paquete npm (CI / dependencia de desarrollo)
npm install --save-dev argusqa-os
npx argus init # interactive wizard — detects framework, discovers routes, writes .env
npm run crawl # run after Chrome is started
Opción C — Clonar el repositorio (contribuidores / código fuente completo)
git clone https://github.com/ironclawdevs27/Argus.git
cd Argus
npm install
npm run init # interactive setup wizard
Configuración manual (omite el asistente):
cp .env.example .env
# Fill in TARGET_DEV_URL and optional Slack tokens
Luego configura tus rutas en src/config/targets.js:
export const routes = [
{ path: '/', name: 'Home', critical: true, waitFor: 'main' },
{ path: '/login', name: 'Login', critical: true, waitFor: 'form' },
{ path: '/dashboard', name: 'Dashboard', critical: true, waitFor: '[data-testid="dashboard"]' },
{ path: '/settings', name: 'Settings', critical: false, waitFor: null },
];
critical: true— los errores en esta ruta van a#bugs-criticalwaitFor— selector CSS que Argus espera antes de capturar (señala que la página está lista)
Comandos CLI
npm run chrome # Launch Chrome with --remote-debugging-port=9222 (auto-detects binary)
npm run doctor # Pre-flight check: Chrome reachable, .mcp.json valid, .env has TARGET_DEV_URL
npm run crawl # Batch audit of all configured routes
npm run compare # Dev vs staging diff (CSS-only if no staging URL)
npm run watch # Passive monitor — polls open Chrome tab every 1s
npm run report:html # Generate reports/report.html from last JSON audit
npm run report:pdf # Export HTML report to A4 PDF (requires: npm install puppeteer)
npm run server # Start Slack slash-command server (port 3001)
npm run init # Interactive setup wizard
npm run test:unit # 562 unit tests — no Chrome required
npm run test:harness # 171-block correctness harness — requires Chrome
npm run test:harness:log # same, but tees full output to harness-results.txt
npm run test:coverage # merged unit + harness coverage gate (requires Chrome)
Modo de observación — monitoreo en vivo mientras tú (o tu agente) desarrollas:
# Terminal 1: start your app
npm run dev
# Terminal 2: start Argus watcher
npm run watch
# Ctrl+C → stops monitor and writes reports/report.html
Comando de barra de Slack (bajo demanda desde cualquier canal):
/argus-retest https://staging.example.com/checkout
Para exponer el servidor mediante túnel: cloudflared tunnel --url http://localhost:3001 (gratis, sin cuenta requerida). Establece la URL resultante como URL de solicitud en Slack App → Slash Commands.
GitHub Actions CI — Puerta de PR
Argus se distribuye como una acción compuesta de GitHub: en cada PR asigna el diff a las rutas afectadas, las audita y bloquea la fusión solo en hallazgos que introduce el PR (consciente de la línea base) — con un comentario de PR idempotente y una Check Run.
Añade a los secretos de tu repositorio (Settings → Secrets → Actions):
| Secreto | Requerido | Valor |
|---|---|---|
TARGET_STAGING_URL | Sí | Tu URL base de staging |
SLACK_BOT_TOKEN | No | Token xoxb-... (omítelo para modo solo HTML) |
SLACK_CHANNEL_CRITICAL | No* | ID de canal (necesario cuando Slack está configurado) |
SLACK_CHANNEL_WARNINGS | No* | ID de canal |
SLACK_CHANNEL_DIGEST | No* | ID de canal |
GITHUB_TOKEN | No | Inyectado automáticamente por Actions para comentarios de PR + Check Runs |
El workflow incluido se ejecuta al hacer push a main, diariamente a las 6 AM UTC, y con activación manual. Si se encuentran problemas críticos, el pipeline falla.
Variables de Entorno
Referencia completa (clic para expandir)
| Variable | Predeterminado | Descripción |
|---|---|---|
TARGET_DEV_URL | — | Requerido. URL base de tu entorno de desarrollo |
TARGET_STAGING_URL | — | URL de staging — habilita argus_compare; omítela para modo solo CSS |
SLACK_BOT_TOKEN | — | Token xoxb-.... Omítelo para modo local report.html |
SLACK_SIGNING_SECRET | — | Para verificación del comando de barra /argus-retest |
SLACK_CHANNEL_CRITICAL | — | ID de canal para errores críticos |
SLACK_CHANNEL_WARNINGS | — | ID de canal para advertencias |
SLACK_CHANNEL_DIGEST | — | ID de canal para información / resumen diario |
PORT | 3001 | Puerto del servidor de comandos de barra de Slack |
REPORT_OUTPUT_DIR | ./reports | Dónde escribir informes JSON |
ARGUS_CONCURRENCY | 1 | Clientes MCP paralelos para rastreo de rutas |
ARGUS_LOG_LEVEL | info | trace / debug / info / warn / error |
ARGUS_LOG_PRETTY | — | Establece 1 para registros legibles en desarrollo |
ARGUS_RETRY_ATTEMPTS | 3 | Reintentos máximos para llamadas MCP navigate/fill |
ARGUS_WATCH_INTERVAL_MS | 1000 | Intervalo de sondeo del modo de observación (ms) |
ARGUS_WATCH_UI_PORT | 3002 | Puerto del panel web del modo de observación |
ARGUS_SOURCE_DIR | — | Ruta del código fuente de la app — habilita análisis de variables de entorno / feature flags / rutas muertas y mapeo de rutas de PR consciente del framework (grafo de importación: un componente/hoja de estilos cambiado → solo las rutas que lo renderizan) |
ARGUS_ENV_FILE | — | Ruta al .env de la app para referencias cruzadas del código base |
SCREENSHOT_DIFF_THRESHOLD | 0.5 | Umbral de % de diff de píxeles para comparación de entornos |
GITHUB_TOKEN | — | Para comentarios de PR + Check Runs |
GITHUB_REPOSITORY | — | Formato owner/repo |
GITHUB_PR_NUMBER | — | Inyectado automáticamente por Actions desde el contexto del PR |
ARGUS_CRITICAL_THRESHOLD | 1 | Nuevos críticos antes de bloquear la fusión (0 = nunca bloquear) |
ARGUS_DIFF_IMAGE_URL | — | URL de imagen de diff visual para incrustar en el comentario del PR |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Colector OTLP para Jaeger / Grafana Tempo |
FIGMA_API_TOKEN | — | Requerido para argus_design_audit |
FONT_SLOW_MS | 1000 | Umbral de carga lenta de fuentes web (ms) |
A11Y_CONTRAST_AA | 4.5 | Relación de contraste mínima WCAG AA para simulación CVD |
ARGUS_REDACT_SENSITIVE | ON | Redacción de salida Aegis. 0 la desactiva (salida byte-idéntica pre-Aegis) |
ARGUS_REDACT_MODE | mask | Estilo de tramo coincidente: mask / label / hash / token / drop |
ARGUS_REDACT_HTML | off local / ON en CI | 1 redacta también el informe HTML alojado |
ARGUS_REDACT_VAULT | OFF | 1 (con ARGUS_REDACT_MODE=token) acuña tokens reversibles AEGIS_<hmac16> en una bóveda local 0600; re-infla con npm run report:rehydrate |
Solución de Problemas
Primer recurso para cualquier problema:
npx -y -p argusqa-os argus-doctor— verifica la accesibilidad de Chrome, la validez de la configuración MCP y las claves de entorno requeridas, e imprime la solución exacta para cada fallo.
Chrome DevTools MCP no se conecta
claude mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
# Restart Claude Code after adding
Los mensajes de Slack no se publican
- El token debe comenzar con
xoxb-(noxoxp-,xoxe-oxapp-) - Ejecuta
/invite @BugBoten cada canal - Ámbitos requeridos:
chat:write,files:write,files:read
Las capturas de pantalla están en blanco
- La página no se ha estabilizado — aumenta
pageSettleMsensrc/config/targets.jso añade un selectorwaitForpara la ruta
/argus-retest devuelve "dispatch_failed"
- La URL del túnel cambió — actualiza la URL de solicitud en Slack App → Slash Commands y reinstala
El análisis CSS devuelve resultados vacíos
- La página puede estar detrás de autenticación — asegúrate de haber iniciado sesión en la instancia de Chrome que Argus controla
El pipeline de CI falla inmediatamente
- Chrome puede no iniciar lo suficientemente rápido — aumenta
sleep 3asleep 5en .github/workflows/argus.yml
Cómo Argus se Diferencia de Playwright / Cypress
Argus es una capa complementaria, no un reemplazo para pruebas unitarias o E2E:
| Playwright / Cypress | MCP de navegador crudo (Playwright MCP, chrome-devtools-mcp) | Argus | |
|---|---|---|---|
| Propósito | Probar tu lógica y contratos de API | Darle al agente manos y ojos de navegador | Darle al agente (y a ti) juicio sobre lo que está roto |
| Lo que obtienes | Aprobado / fallido en scripts que escribiste | Acceso crudo a DOM/consola/red | 149 tipos de hallazgos codificados, severidades, líneas base, filtrado de ruido, pistas de causa raíz |
| Mantenimiento | Archivos de prueba, para siempre | Re-preguntar las verificaciones en cada sesión | Cero — audita la app renderizada |
| Cuándo se ejecuta | En tu suite de pruebas | Cuando el agente piensa en mirar | Bajo demanda, en CI como puerta de PR, o continuamente (modo de observación) |
| Salida | Aprobado / fallido | Lo que el agente notó | Informes estructurados con capturas de pantalla — Slack, HTML, comentarios de PR — secretos redactados |
Limitaciones Conocidas
Las 998 aserciones del harness pasan (998/998) — actualmente no hay restricciones conocidas a nivel MCP o Chrome. Lighthouse se ejecuta en headless (después de la corrección del argumento lighthouse_audit); las aserciones suaves restantes (trazas de rendimiento, crecimiento de heap dependiente de GC) se promueven a aserciones duras contadas solo en el carril semanal estricto-suave (harness-strict.yml) mediante ARGUS_HARNESS_STRICT_SOFT. Límites de alcance: solo Chrome/Chromium, solo aplicaciones web — consulta Funciona con tu Stack.
Argus Alojado — Miembros Fundadores
¿Quieres auditorías sin ejecutar Chrome o npm — con historial, tendencias, horarios y un panel de equipo? Argus Cloud está en acceso temprano para miembros fundadores: $19/mes, bloqueado para siempre (regular $29).
Conviértete en miembro fundador → argus-qa.com
El motor de código abierto en esta página permanece MIT y con todas las funciones, siempre — el nivel alojado vende conveniencia y memoria, nunca detecciones.
Estructura del Proyecto
src/
argus.js — single-page audit entry point
mcp-server.js — 9 MCP tools exposed to Claude / any MCP client
orchestration/ — crawl loop, Slack/GitHub dispatch, env comparison, watch mode
utils/ — 32 analysis engines (accessibility, security, performance, PDF, recording, etc.)
adapters/browser.js — CdpBrowserAdapter — wraps all chrome-devtools-mcp calls
config/targets.js — routes, thresholds, auth steps
cli/
init.js — argus init interactive setup wizard
chrome-launcher.js — npm run chrome / argus-chrome — launches Chrome with correct flags
doctor.js — npm run doctor / argus-doctor — pre-flight checks
pr-validate.js — headless CI entry point for GitHub Actions
test-harness/ — 171-block correctness harness, 998 hard assertions, 64 fixture pages
test/unit/ — 562 Vitest unit tests (no Chrome required)
landing/ — Product landing page (React 19 + Vite + Tailwind)
Mapa de código fuente completo → CLAUDE.md · Referencia MCP/DSL → SKILL.md
Contribuciones
Las contribuciones son bienvenidas — páginas de fixtures, nuevas categorías de detección, descubrimiento de rutas de frameworks, documentación. Comienza con CONTRIBUTING.md.
- Haz un fork del repositorio y crea una rama
npm run test:unit— verifica sin Chrome (562 pruebas)npm run test:harness— cobertura completa de integración (requiere Chrome en el puerto 9222)- Abre un PR — Argus se audita a sí mismo mediante el workflow de CI
Licencia
MIT © ironclawdevs27
Argus Panoptes — el gigante que todo lo ve de la mitología griega que nunca dormía.