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
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
- Configuración MCP (por editor)
- Referencia de herramientas MCP
- Flujo de trabajo recomendado
- Comando init
- Comandos CLI
- VIBE.md, guía de proyecto
- Configuración (vibe.config.json)
- Frameworks compatibles
- Memoria y detección de regresiones
- Preguntas frecuentes
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) yvibe.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-testingcomo 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/ymcp.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:
| Herramienta | Cuándo llamarla | Devuelve |
|---|---|---|
configure | Empieza aquí en un proyecto nuevo. Detecta framework, servidor y autenticación | Resultado de configuración estructurado y archivos de proyecto idempotentes |
scan_codebase | Siempre primero. Lee el código fuente, encuentra rutas/formularios/pruebas/vacíos | Rutas, formularios, mapa de cobertura, escenarios generados, route_changes desde el último escaneo |
get_context | Antes de escribir pasos de prueba. Devuelve archivos fuente de una función | Código fuente real con nombres de campos y selectores reales |
login | Cuando la aplicación requiere autenticación | Captura de pantalla posterior al inicio de sesión, estado del token, llamadas API observadas |
scan_page_elements | Para ver todos los elementos interactivos en una página | Lista de elementos con selectores más captura de pantalla de la página |
explore_page | Pruebas amplias de "¿funciona todo?" | Resultados de interacción, llamadas API, errores, captura de pantalla |
execute_scenario | Ejecutar pasos de prueba específicos | Registros paso a paso más capturas de pantalla |
get_coverage | Ver el mapa de cobertura y rutas no probadas | Entradas de cobertura, vacíos, escenarios disponibles |
suggest_tests | Encontrar vacíos de cobertura después de la exploración | Escenarios priorizados y listos para ejecutar con pasos |
take_screenshot | Verificación visual rápida | Captura de pantalla de cualquier URL |
generate_report | Construir informe HTML (se abre automáticamente) | Ruta del informe más resumen |
run_full_test | De una sola vez: escanear, ejecutar, explorar, informar | Resultados completos más snapshot_diff vs última ejecución |
run_converge | Pruebas iterativas hasta alcanzar umbrales | Resumen de todas las rondas más snapshot_diff vs última ejecución |
cleanup | Cerrar 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=yplaceholder=; 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:
scan_codebase, para entender rutas, formularios, pruebas existentesget_context("login"), para leer el código fuente del formulario de inicio de sesión reallogin, para autenticarse en un navegador realexplore_page("/dashboard"), haciendo clic en todo y observando qué se rompeexplore_page("/settings"), igualsuggest_tests, para encontrar vacíos de coberturaexecute_scenariox N, ejecutando flujos de prueba específicosgenerate_report, el informe HTML se abre automáticamentecleanup, 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:
scan_codebase(si aún no se hizo)get_context("checkout"), leyendoCheckoutForm.tsx,api/orders/route.ts, etc.loginexecute_scenario, completando los campos de formulario reales desde el código fuentegenerate_report
Verificar una corrección de error
I fixed the login redirect bug. Use vibe-test to confirm it's working.
La IA:
login, probando el flujo de inicio de sesióntake_screenshot, confirmación visual del estado posterior al inicio de sesión- 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:
| Archivo | Dónde | Propósito |
|---|---|---|
.mcp.json | Raíz del proyecto | Config MCP de Claude Code (nivel de proyecto) |
~/.claude/settings.json | Global | Config MCP de Claude Code (todos los proyectos) |
.cursor/mcp.json | Raíz del proyecto | Config MCP de Cursor |
~/.cursor/mcp.json | Global | Config MCP de Cursor (todos los proyectos) |
.cursor/rules/vibe-test.mdc | Proyecto | Reglas de Cursor, alwaysApply: true |
.windsurfrules | Proyecto | Instrucciones de Windsurf |
~/.codeium/windsurf/mcp_config.json | Global | Config MCP de Windsurf (todos los proyectos) |
.vscode/mcp.json | Proyecto | Config MCP de VS Code Copilot |
.github/copilot-instructions.md | Proyecto | Instrucciones de GitHub Copilot |
.roo/mcp.json | Proyecto | Config MCP de Roo Code |
CLAUDE.md | Proyecto | Instrucciones de sesión de Claude Code |
AGENTS.md | Proyecto | Instrucciones universales de agente (Codex, Devin, Zed) |
VIBE.md | Proyecto | Guía de pruebas, edítala con tus credenciales |
vibe.config.json | Proyecto | Config, 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ón | Predeterminado | Descripción |
|---|---|---|
--mode fast|deep | deep | fast: 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> | cwd | Ruta a la raíz del proyecto |
--scope <routes...> | all | Probar solo rutas específicas |
-c <path> | vibe.config.json | Ruta 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ón | Predeterminado | Descripción |
|---|---|---|
--max-rounds <n> | 4 | Máximo de rondas de seguimiento después de la línea base |
--target-pass-rate <r> | 0.92 | Detenerse cuando la tasa de aprobación alcance este valor (0-1) |
--max-gaps <n> | 2 | Detenerse 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
}
}
| Clave | Descripción |
|---|---|
url | URL de la aplicación, localhost o staging. Auto-detectada por init. |
mode | fast (escaneo heurístico) o deep (extracción completa más exploración) |
auth.strategy | credentials (inicio de sesión con formulario), basic (HTTP Basic Auth) o skip |
auth.login_url | Ruta de inicio de sesión explícita para rutas no estándar que la coincidencia de palabras clave no detectaría |
auth.credentials | Credenciales de inicio de sesión, utilizadas para el inicio de sesión y para escenarios generados, persistidas entre ejecuciones |
never_interact | Patrones de texto o selectores CSS para omitir durante la exploración |
scope.include | Patrones 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.exclude | Patrones de ruta a excluir de las pruebas |
scope.max_routes | Limitar cuántas rutas se prueban por ejecución |
scope.seed_routes | URLs 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.headed | true = navegador visible. CLI predeterminado true, servidor MCP predeterminado false (headless) para que las sesiones del editor no se interrumpan con ventanas emergentes. |
browser.slowMo | Milisegundos entre acciones (útil para depuración) |
routes | auto (predeterminado) descubre rutas desde el código base. config usa solo rutas listadas explícitamente en la configuración. |
Frameworks compatibles
| Framework | Rutas | Endpoints de API | Formularios |
|---|---|---|---|
| Next.js App Router | sí | sí | sí |
| Next.js Pages Router | sí | sí | sí |
| Next.js (variante src/) | sí | sí | sí |
| React SPA (react-router) | sí | - | sí |
| Vue + Vite (vue-router) | sí | - | sí |
| Nuxt | sí | sí | sí |
| SvelteKit | sí | 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 comoroute_changesen los resultados descan_codebasepara 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_diffmarcanewly_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.
initinstala 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
- npm: https://www.npmjs.com/package/vibe-testing
- GitHub: https://github.com/AishwaryShrivastav/vibe-testing
- Issues: https://github.com/AishwaryShrivastav/vibe-testing/issues
- Registro oficial de MCP: listado como
io.github.AishwaryShrivastav/vibe-testingen https://registry.modelcontextprotocol.io - Model Context Protocol
- Playwright