vibe-testing

Pruebas de navegador Playwright conscientes del código para agentes de codificación de IA, con 14 herramientas MCP, memoria de regresión e informes HTML.

Documentación

vibe-testing

npm version npm downloads GitHub stars Node.js MCP License: MIT CI

Pruebas de navegador conscientes del código para agentes de IA de codificación.

Sitio del producto · npm · Registro MCP · Smithery · Privacidad · Estado de lanzamiento

Listado en Awesome MCP Servers. La insignia de descargas muestra las descargas acumuladas del paquete npm; las descargas de paquetes npx contribuyen a ese total.

vibe-testing lee tu código base para que las pruebas usen tus rutas y nombres de campos reales, las ejecuta en un navegador Playwright real, recuerda lo que se rompió y te dice qué arregló o rompió tu último cambio. Funciona como un servidor MCP que le da a tu editor (Claude Code, Cursor, Windsurf, VS Code Copilot, Roo Code) 14 herramientas de prueba, o como una CLI independiente.

El repositorio también es un Agent Plugin con una habilidad release-qa. Los agentes compatibles obtienen tanto las herramientas de prueba como un flujo de trabajo de control de calidad senior para cobertura, evidencia, verificaciones de regresión y un veredicto de lanzamiento claro.

cd /path/to/your/project
npx vibe-testing@latest init

Luego abre tu editor y di:

"Escanea este código base y pruébalo contra http://localhost:3000"


Qué añade la prueba consciente del código

Playwright MCP le da manos a tu agente. vibe-testing le da un flujo de trabajo de prueba: escenarios derivados del código, memoria entre ejecuciones y un informe. Dos cosas que una herramienta de navegador sin estado no puede hacer:

1. Ejecútalo dos veces y te dice qué rompiste. Cada ejecución escribe .vibe/run-snapshot.json y lo compara con la ejecución anterior. Cada escaneo escribe .vibe/route-manifest.json y compara tus rutas. La segunda ejecución imprime regresiones y correcciones en lugar de un muro de resultados:

Changes since last run
  Fixed:      /login
  Regression: /checkout
  New:        /admin/users

La misma diferencia llega a tu editor como snapshot_diff en run_full_test y run_converge, y como route_changes en scan_codebase, para que el agente pueda señalar "el checkout se rompió después de ese commit" sin que nadie tenga que desplazarse por un informe. Las rutas inestables, los selectores que funcionan y los tiempos de espera medidos también se recuerdan entre ejecuciones.

2. Cero llamadas LLM dentro de la herramienta. La verificación de aprobado/reprobado es heurística: cambios de URL, detección de toasts, errores de API. El modelo de tu editor decide qué probar; vibe-testing hace la navegación y la verificación. Sin clave API, sin costo por ejecución más allá de la suscripción del editor que ya pagas.


Contenido


Cómo funciona

npx vibe-testing@latest init
        |
Registers 14 MCP tools in your editor
        |
You ask: "Test the checkout flow"
        |
AI calls: scan_codebase -> get_context("checkout") -> login -> explore_page -> execute_scenario -> generate_report
        |
HTML report opens in browser with screenshots of every step

No hay casos de prueba que escribir. La IA lee tu código fuente para entender los nombres de campos y rutas reales, abre un navegador, prueba todo y te muestra lo que está roto.

init también:

  • Detecta qué editores de IA tienes instalados
  • Registra vibe-test en las configuraciones globales del editor (~/.claude/settings.json, ~/.cursor/mcp.json, etc.) para que las herramientas estén disponibles en cada proyecto y sesión
  • Crea configuraciones MCP a nivel de proyecto y archivos de instrucciones de IA
  • Auto-detecta la URL de tu aplicación (lee .env, vite.config, valores predeterminados del framework)
  • Crea VIBE.md (edítalo con tus credenciales de prueba) y vibe.config.json
  • Instala la compilación de Playwright Chromium correspondiente

Configuración MCP

Agent Plugin

Instala este repositorio como un plugin cuando tu agente sea compatible con el estándar Agent Plugins. Incluye la habilidad portátil release-qa y inicia el servidor MCP npm publicado sin clave API.

  • Cursor: envía o instala https://github.com/AishwaryShrivastav/vibe-testing como un Agent Plugin.

  • Claude Code:

    claude plugin marketplace add AishwaryShrivastav/vibe-testing
    claude plugin install vibe-testing@vibe-testing
    
  • Otros agentes compatibles: carga la raíz del repositorio que contiene plugin.json, skills/ y mcp.json.

La configuración directa de MCP y CLI a continuación sigue disponible para editores sin soporte de plugins.

Paquete MCPB

Claude Desktop y otros hosts MCPB pueden instalar un paquete local. Compílalo y valídalo desde este repositorio:

npm ci
npm run build:mcpb

El artefacto se escribe en artifacts/vibe-testing-<version>.mcpb. Consulta la guía de distribución MCPB para conocer el contenido del paquete, los pasos de validación, la entrega a Smithery y el requisito previo único de Playwright Chromium.

Opción 1: automática (recomendada)

npx vibe-testing@latest init

Detecta y configura todos los editores instalados. Listo.

Opción 2: manual por editor

Claude Code

Añade a ~/.claude/settings.json (global, funciona en todos los proyectos):

{
  "mcpServers": {
    "vibe-test": {
      "command": "npx",
      "args": ["-y", "vibe-testing@latest", "--mcp"]
    }
  }
}

O añade a .mcp.json en la raíz de tu proyecto (solo a nivel de proyecto):

{
  "mcpServers": {
    "vibe-test": {
      "command": "npx",
      "args": ["-y", "vibe-testing@latest", "--mcp"]
    }
  }
}

Cursor

Añade a ~/.cursor/mcp.json (global) o .cursor/mcp.json (proyecto):

{
  "mcpServers": {
    "vibe-test": {
      "command": "npx",
      "args": ["-y", "vibe-testing@latest", "--mcp"]
    }
  }
}

Windsurf

Añade a ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "vibe-test": {
      "command": "npx",
      "args": ["-y", "vibe-testing@latest", "--mcp"]
    }
  }
}

VS Code (GitHub Copilot)

Añade a .vscode/mcp.json en tu proyecto:

{
  "servers": {
    "vibe-test": {
      "command": "npx",
      "args": ["-y", "vibe-testing@latest", "--mcp"]
    }
  }
}

Roo Code / Cline

Añade a .roo/mcp.json:

{
  "mcpServers": {
    "vibe-test": {
      "command": "npx",
      "args": ["-y", "vibe-testing@latest", "--mcp"]
    }
  }
}

Desde compilación local (desarrollo)

{
  "mcpServers": {
    "vibe-test": {
      "command": "node",
      "args": ["/path/to/vibe-testing/dist/mcp-server.js"]
    }
  }
}

Referencia de herramientas MCP

14 herramientas disponibles para tu editor de IA después de la configuración:

HerramientaCuándo llamarlaDevuelve
configureEmpieza aquí en un proyecto nuevo. Detecta framework, servidor y autenticaciónResultado de configuración estructurado y archivos de proyecto idempotentes
scan_codebaseSiempre primero. Lee el código fuente, encuentra rutas/formularios/pruebas/vacíosRutas, formularios, mapa de cobertura, escenarios generados, route_changes desde el último escaneo
get_contextAntes de escribir pasos de prueba. Devuelve archivos fuente de una funciónCódigo fuente real con nombres de campos y selectores reales
loginCuando la aplicación requiere autenticaciónCaptura de pantalla posterior al inicio de sesión, estado del token, llamadas API observadas
scan_page_elementsPara ver todos los elementos interactivos en una páginaLista de elementos con selectores más captura de pantalla de la página
explore_pagePruebas amplias de "¿funciona todo?"Resultados de interacción, llamadas API, errores, captura de pantalla
execute_scenarioEjecutar pasos de prueba específicosRegistros paso a paso más capturas de pantalla
get_coverageVer el mapa de cobertura y rutas no probadasEntradas de cobertura, vacíos, escenarios disponibles
suggest_testsEncontrar vacíos de cobertura después de la exploraciónEscenarios priorizados y listos para ejecutar con pasos
take_screenshotVerificación visual rápidaCaptura de pantalla de cualquier URL
generate_reportConstruir informe HTML (se abre automáticamente)Ruta del informe más resumen
run_full_testDe una sola vez: escanear, ejecutar, explorar, informarResultados completos más snapshot_diff vs última ejecución
run_convergePruebas iterativas hasta alcanzar umbralesResumen de todas las rondas más snapshot_diff vs última ejecución
cleanupCerrar navegadores, liberar recursos-

Entradas de herramientas

scan_codebase

{
  "codebase_path": "/path/to/project",
  "url": "http://localhost:3000",
  "mode": "deep"
}

get_context

{ "feature": "login" }
{ "feature": "/checkout" }
{ "feature": "user profile form" }

login

{
  "email": "test@example.com",
  "password": "TestPass123!",
  "login_url": "/login"
}

scan_page_elements / explore_page

{
  "route": "/dashboard",
  "authenticated": true
}

execute_scenario

{
  "scenario": {
    "id": "create-item",
    "name": "Create a new item",
    "route": "/items",
    "steps": [
      { "action": "navigate", "url": "/items", "description": "Open items page" },
      { "action": "click", "selector": "text=Add Item", "description": "Open create form" },
      { "action": "fill", "selector": "[name='title']", "value": "Test Item", "description": "Fill title" },
      { "action": "fill", "selector": "[name='description']", "value": "Test description", "description": "Fill description" },
      { "action": "click", "selector": "button[type='submit']", "description": "Submit form" }
    ],
    "expected_outcome": "New item appears in the list",
    "requires_auth": true
  }
}

Acciones de paso: navigate, fill, click, select, wait, assert, upload

CLI y MCP usan el mismo ejecutor de escenarios. Un paso assert evalúa cada condición proporcionada:

  • selector: el objetivo debe ser visible. Se admiten CSS, text=, label= y placeholder=; los localizadores nombrados coinciden exactamente.
  • value: el texto visible debe contener esta cadena, en el elemento seleccionado o en el cuerpo de la página cuando no se proporciona un selector.
  • url: la URL actual debe coincidir exactamente con esta URL absoluta o ruta resuelta contra la URL base configurada, incluidos consulta y fragmento.

Por ejemplo:

{ "action": "assert", "selector": "#confirmation", "value": "Saved", "url": "/settings", "timeout": 5000, "description": "Check saved settings" }

Estas verificaciones esperan hasta el tiempo de espera del paso (predeterminado 15000 ms por verificación). Una aserción fallida detiene el escenario, registra un paso fallido y el motivo, y devuelve status: "fail"; MCP también establece isError: true. Las condiciones explícitas se usan como el veredicto después de las verificaciones existentes de autenticación y API de formularios. El texto en prosa description y expected_outcome no son aserciones ejecutables. Sin selector, value o url, assert solo verifica la salud de la página: al menos 10 caracteres de texto visible en el cuerpo y sin indicadores de error visibles no vacíos. Esta verificación de compatibilidad no demuestra un resultado comercial descrito.

upload requiere un selector de entrada de archivo y una ruta de archivo no vacía en value. Las rutas relativas se resuelven contra la raíz del código base. Se admiten entradas de archivo ocultas. Un archivo faltante, directorio, objetivo faltante o un objetivo que no es una entrada de archivo devuelve status: "error". La acción selecciona un archivo usando Playwright; añade una aserción de la interfaz resultante para verificar el procesamiento del lado de la aplicación. No automatiza los diálogos nativos del selector de archivos.

Los escenarios deben contener al menos un paso. Las acciones desconocidas son errores.

take_screenshot

{ "url": "/settings", "authenticated": true, "full_page": false }

run_full_test

{ "url": "http://localhost:3000", "codebase_path": "/path/to/project", "mode": "deep" }

run_converge

{
  "url": "http://localhost:3000",
  "max_followup_rounds": 4,
  "target_pass_rate": 0.92,
  "max_high_severity_gaps": 2
}

Flujo de trabajo recomendado

Sesión de prueba completa

Dile a tu editor de IA:

Scan this codebase and test it against http://localhost:3000.
Log in with test@example.com / pass123. Explore the dashboard and
settings pages, run the suggested tests, and generate a report.

La IA:

  1. scan_codebase, para entender rutas, formularios, pruebas existentes
  2. get_context("login"), para leer el código fuente del formulario de inicio de sesión real
  3. login, para autenticarse en un navegador real
  4. explore_page("/dashboard"), haciendo clic en todo y observando qué se rompe
  5. explore_page("/settings"), igual
  6. suggest_tests, para encontrar vacíos de cobertura
  7. execute_scenario x N, ejecutando flujos de prueba específicos
  8. generate_report, el informe HTML se abre automáticamente
  9. cleanup, cerrando navegadores

Probar una función específica

Test the checkout flow using vibe-test. Get context for checkout,
then run the full purchase flow with card number 4242424242424242.

La IA:

  1. scan_codebase (si aún no se hizo)
  2. get_context("checkout"), leyendo CheckoutForm.tsx, api/orders/route.ts, etc.
  3. login
  4. execute_scenario, completando los campos de formulario reales desde el código fuente
  5. generate_report

Verificar una corrección de error

I fixed the login redirect bug. Use vibe-test to confirm it's working.

La IA:

  1. login, probando el flujo de inicio de sesión
  2. take_screenshot, confirmación visual del estado posterior al inicio de sesión
  3. Informa lo que ve

Encontrar qué está roto

Explore every page and tell me what's broken.

La IA ejecutará explore_page en cada ruta, recopilando errores de API, elementos rotos e interacciones fallidas, luego suggest_tests con los elementos rotos marcados como alta prioridad.


Comando init

npx vibe-testing@latest init [options]

Lo que crea:

ArchivoDóndePropósito
.mcp.jsonRaíz del proyectoConfig MCP de Claude Code (nivel de proyecto)
~/.claude/settings.jsonGlobalConfig MCP de Claude Code (todos los proyectos)
.cursor/mcp.jsonRaíz del proyectoConfig MCP de Cursor
~/.cursor/mcp.jsonGlobalConfig MCP de Cursor (todos los proyectos)
.cursor/rules/vibe-test.mdcProyectoReglas de Cursor, alwaysApply: true
.windsurfrulesProyectoInstrucciones de Windsurf
~/.codeium/windsurf/mcp_config.jsonGlobalConfig MCP de Windsurf (todos los proyectos)
.vscode/mcp.jsonProyectoConfig MCP de VS Code Copilot
.github/copilot-instructions.mdProyectoInstrucciones de GitHub Copilot
.roo/mcp.jsonProyectoConfig MCP de Roo Code
CLAUDE.mdProyectoInstrucciones de sesión de Claude Code
AGENTS.mdProyectoInstrucciones universales de agente (Codex, Devin, Zed)
VIBE.mdProyectoGuía de pruebas, edítala con tus credenciales
vibe.config.jsonProyectoConfig, URL auto-detectada de tu proyecto

Opciones:

npx vibe-testing@latest init                     # auto-detect editors, register globally + project
npx vibe-testing@latest init --no-global         # project-level only, skip global registration
npx vibe-testing@latest init --skip-browser-install
npx vibe-testing@latest init --editor cursor     # only configure Cursor
npx vibe-testing@latest init --editor claude-code windsurf

Después de init, edita VIBE.md con tu URL de inicio de sesión y credenciales de prueba.


Comandos CLI

# Set up in current project
npx vibe-testing@latest init

# Install or repair the matching browser build
npx vibe-testing@latest install-browser

# Run tests against a URL
npx vibe-testing@latest run http://localhost:3000
npx vibe-testing@latest run https://staging.myapp.com --mode deep
npx vibe-testing@latest run http://localhost:3000 --codebase /path/to/project --scope /login /dashboard

# Iterative testing until coverage thresholds
npx vibe-testing@latest converge http://localhost:3000
npx vibe-testing@latest converge http://localhost:3000 --max-rounds 6 --target-pass-rate 0.95

# Open last report in browser
npx vibe-testing@latest report

# Reset memory and screenshots for a clean run
npx vibe-testing@latest reset

Opciones de run

OpciónPredeterminadoDescripción
--mode fast|deepdeepfast: escaneo rápido. deep: extracción completa de características más exploración
--no-headed-Ejecutar el navegador en modo headless (predeterminado: visible)
--codebase <path>cwdRuta a la raíz del proyecto
--scope <routes...>allProbar solo rutas específicas
-c <path>vibe.config.jsonRuta del archivo de configuración

run y converge fallan con una salida distinta de cero cuando no se descubren escenarios o un lote de ejecución está vacío. MCP run_full_test y run_converge devuelven isError: true para estos casos. Las ejecuciones vacías no escriben una instantánea de ejecución exitosa ni reemplazan el informe anterior.

Opciones de converge

OpciónPredeterminadoDescripción
--max-rounds <n>4Máximo de rondas de seguimiento después de la línea base
--target-pass-rate <r>0.92Detenerse cuando la tasa de aprobación alcance este valor (0-1)
--max-gaps <n>2Detenerse cuando las brechas críticas más importantes caigan a este valor

VIBE.md, guía del proyecto

Crea VIBE.md en la raíz de tu proyecto. vibe-testing lo lee automáticamente en cada ejecución.

## Login URL
/login

## Test Credentials
- Email: test@example.com
- Password: TestPass123!

## Never Automate
- delete account
- cancel subscription
- [data-testid="danger-zone"]
- .billing-section

## Known Flaky
- /notifications (WebSocket dependent, skip or expect retry)
- /live-feed

## Notes
- Admin panel at /admin, use admin@example.com / adminpass
- Dashboard data loads async, wait for [data-loaded="true"]
- Profile page: click "Edit Profile" before form fields appear

Consulta VIBE.example.md para ver la plantilla completa.


Configuración

vibe.config.json

Creado automáticamente por init con la URL auto-detectada. Edítalo según sea necesario:

{
  "url": "http://localhost:3000",
  "mode": "deep",
  "auth": {
    "strategy": "credentials",
    "login_url": "/login",
    "credentials": {
      "email": "test@example.com",
      "password": "TestPass123!"
    }
  },
  "never_interact": [
    "delete account",
    "cancel subscription",
    "[data-testid='danger-zone']"
  ],
  "scope": {
    "include": ["/**"],
    "exclude": ["/admin/**", "/api/**"],
    "max_routes": 30,
    "seed_routes": ["/live/dev-mode-a-now"]
  },
  "browser": {
    "headed": true,
    "slowMo": 40,
    "timeout": 30000
  }
}
ClaveDescripción
urlURL de la aplicación, localhost o staging. Auto-detectada por init.
modefast (escaneo heurístico) o deep (extracción completa más exploración)
auth.strategycredentials (inicio de sesión con formulario), basic (HTTP Basic Auth) o skip
auth.login_urlRuta de inicio de sesión explícita para rutas no estándar que la coincidencia de palabras clave no detectaría
auth.credentialsCredenciales de inicio de sesión, utilizadas para el inicio de sesión y para escenarios generados, persistidas entre ejecuciones
never_interactPatrones de texto o selectores CSS para omitir durante la exploración
scope.includePatrones de ruta a incluir; el predeterminado /** incluye / y todas las rutas anidadas. * permanece dentro de un segmento; un /** final incluye la raíz del subárbol y sus descendientes. Otros caracteres son literales.
scope.excludePatrones de ruta a excluir de las pruebas
scope.max_routesLimitar cuántas rutas se prueban por ejecución
scope.seed_routesURLs concretas para rutas de segmento dinámico que el analizador no puede enumerar (por ejemplo, /live/[slug] se convierte en /live/dev-mode-a-now). Cada ruta sembrada hereda requires_auth y el archivo fuente de su padre dinámico.
browser.headedtrue = navegador visible. CLI predeterminado true, servidor MCP predeterminado false (headless) para que las sesiones del editor no se interrumpan con ventanas emergentes.
browser.slowMoMilisegundos entre acciones (útil para depuración)
routesauto (predeterminado) descubre rutas desde el código base. config usa solo rutas listadas explícitamente en la configuración.

Frameworks compatibles

FrameworkRutasEndpoints de APIFormularios
Next.js App Routersísísí
Next.js Pages Routersísísí
Next.js (variante src/)sísísí
React SPA (react-router)sí-sí
Vue + Vite (vue-router)sí-sí
Nuxtsísísí
SvelteKitsísísí
Express / Fastify-sísí
Monorepos (Turborepo, pnpm, Lerna)sísísí

Los archivos de prueba existentes también se leen para construir un mapa de cobertura: se analizan los conjuntos de Jest, Vitest, Playwright y Cypress.


Memoria y detección de regresiones

vibe-testing aprende entre ejecuciones y almacena el estado en .vibe/:

  • Selectores de trabajo: recuerda [name='email'] funcionó en /login, lo usa en la próxima ejecución
  • Tiempos de ruta: ajusta los tiempos de espera según los tiempos de carga medidos
  • Credenciales de autenticación: guardadas después del primer inicio de sesión, reutilizadas automáticamente
  • Rutas inestables: rastrea rutas con alta tasa de fallos, las marca para reintento
  • Rutas omitidas: las rutas que fallan consistentemente (necesitan parámetros de URL) se omiten automáticamente
  • Manifiesto de rutas (.vibe/route-manifest.json): cada escaneo se compara con el anterior; las rutas nuevas y eliminadas aparecen como route_changes en los resultados de scan_codebase para que la IA pueda cubrirlas de inmediato
  • Instantánea de ejecución (.vibe/run-snapshot.json): cada ejecución captura aprobado/fallido por ruta y se compara con la ejecución anterior; snapshot_diff marca newly_passing (correcciones), newly_failing (regresiones), still_failing, más rutas agregadas y eliminadas
{
  "snapshot_diff": {
    "newly_passing": ["/login"],
    "newly_failing": ["/checkout"],
    "still_failing": [],
    "new_routes": ["/admin/users"],
    "removed_routes": []
  }
}

run_converge devuelve la misma forma, para que las ejecuciones iterativas en tu editor resalten lo que acabas de romper.

Restablece con npx vibe-testing@latest reset para empezar de nuevo.


Cómo se ve una sesión

Cuando le pides a tu editor que "pruebe el flujo de inicio de sesión", esto es lo que hace:

User: "Test the login flow"

AI calls:
  scan_codebase({ codebase_path: ".", url: "http://localhost:3000" })
    -> Finds /login route, LoginForm component, POST /api/auth/login endpoint
    -> Returns 8 generated test scenarios

  get_context({ feature: "login" })
    -> Returns src/app/login/page.tsx (has name="email", name="password" fields)
    -> Returns src/app/api/auth/login/route.ts (POST handler, returns { token })
    -> AI now knows the real selectors: [name='email'], [name='password']

  login({ email: "test@example.com", password: "pass123" })
    -> Opens Chromium, fills the form, clicks submit
    -> Returns: { success: true, final_url: "/dashboard", tokens_found: 2 }
    -> Returns screenshot of post-login dashboard

  execute_scenario({ scenario: { name: "Login with invalid password", ... } })
    -> Returns screenshot showing error state

  generate_report()
    -> Writes .vibe/report.html, opens in browser

AI reports: "Login works. Invalid password shows an error. All 3 login scenarios passed."

Preguntas frecuentes

¿vibe-testing usa un LLM internamente? No. Usa verificación heurística (cambios de URL, detección de toasts, errores de API). El modelo de tu editor es el cerebro: ve capturas de pantalla y decide qué probar a continuación. Las ejecuciones no tienen costo de API.

¿Cuál es la diferencia entre explore_page y execute_scenario? explore_page es amplio: hace clic en cada botón e input que encuentra y reporta los resultados. execute_scenario es preciso: le das pasos específicos y los sigue exactamente. Usa explore_page para encontrar lo que hay en una página, luego execute_scenario para probar flujos específicos.

¿Para qué sirve get_context? Devuelve el código fuente real de una característica, para que la IA sepa [name='email'] en lugar de adivinar #email-input. Siempre llámalo antes de escribir pasos de prueba para una característica específica.

¿Maneja SPAs con enrutamiento del lado del cliente? Sí. Playwright navega en el navegador real, por lo que el enrutamiento del lado del cliente (React Router, Vue Router y el resto) funciona de forma natural.

¿Maneja inicio de sesión / autenticación? Sí. La herramienta login completa las credenciales en un navegador real, captura los tokens de autenticación de localStorage/cookies y mantiene esa sesión activa para pruebas autenticadas. Las credenciales se persisten en .vibe/memory/ y se reutilizan automáticamente.

¿Hará clic en "Eliminar cuenta" u otros botones destructivos? No. Establece never_interact en vibe.config.json o VIBE.md para bloquear acciones peligrosas. Cualquier botón cuyo texto o selector coincida se omite durante la exploración.

¿Puedo usarlo sin un editor de IA? Sí. vibe-test run https://your-app.com se ejecuta de forma independiente. Escanea, genera escenarios, los ejecuta y produce un informe HTML sin necesidad de un editor.

¿Cómo pruebo un entorno de staging? Establece url en vibe.config.json a tu URL de staging, o pásala como argumento de CLI: npx vibe-testing@latest run https://staging.myapp.com.

¿Funciona con monorepos? Sí. init detecta espacios de trabajo de Turborepo/pnpm/yarn y encuentra la aplicación frontend automáticamente.


Requisitos

  • Node.js >= 20 (el conjunto de pruebas usa vitest 4.x que requiere Node 20+)
  • Playwright Chromium. init instala la compilación correspondiente. Para instalarlo o repararlo directamente:
    npx vibe-testing@latest install-browser
    

run y converge verifican el navegador antes de escanear tu proyecto e imprimen el mismo comando de recuperación cuando falta.

Docker

Se incluye una imagen de Node 20 + Chromium para entornos que prefieren servidores MCP basados en contenedores:

docker build -t vibe-test .
# wire into your editor's MCP config:
# { "command": "docker", "args": ["run", "--rm", "-i", "vibe-test"] }

Contribuciones

git clone https://github.com/AishwaryShrivastav/vibe-testing.git
cd vibe-testing
npm install
npx playwright install chromium
npm run build   # tsc -> dist/
npm run dev     # run CLI without building
npm run mcp     # run MCP server without building
npm test        # unit and isolated integration tests
VIBE_REAL_BROWSER=1 npm test  # also run real Chromium CLI/MCP regressions

Consulta CHANGELOG.md para el historial de versiones. Informes de errores y solicitudes de funciones: GitHub issues.


Licencia

MIT, Aishwary Shrivastav


Enlaces