Skip to main content
Glama

Need code spans preserved.

For pipeline rows, we can have distinct widths. That's okay. We preserve exact number columns.

For tables, no translation of "rdmatrix". Let's make each first cell code holes.

Let's compose final.

Need ensure no accidental " " in "``" etc.

Let's craft all sections.

Potential issue "X PREVIEW" "GXP7" etc exactly? Keep.

Let's now write final answer.

TestTrout

El asistente de pruebas para aplicaciones creadas con IA.

Ejecútala como aplicación o pásasela a tu agente de código mediante MCP. O una u otra forma, escribe las pruebas que tu aplicación (una, nunca tuvo y te avisa cuando se rompen.

License Python Status


Las truchas son una especie indicadora. Solo viven en agua limpia y bien oxigenizada — si encuentras una en un río, sabes que el agua está sana sin tener que analizarla.

Eso es un buen suite de pruebas: no una carga de trabajo, sino una señal que puedes interpretar de un preso.


El problema

Los agentes de código publican rápido. También rompen cosas en silencio, que las aplicaciones que crean — Lovable, v0, Bolt, React hechos a mano en Vercel — casi no tienen pruebas. Así que el ciclo término a término con un “me parece bien” de la misma máquina que acaba de escribir el código.

TestTrout cierra este ciclo. Lee el repositorio, se conecta al despliegue en marcha, determina qué está por probar y en qué orden importa, escribe pruebas verdaderas, la ejecuta y entrega resultados sobre los que de los que realmente puedes actuar.

Related MCP server: Lastest

Ponerlo en marcha

pip install testtrout
trout up

Eso lo arranca todo: almacenamiento, un trabajador en guiones de fondo y la interfaz en localhost:7411. Sin Docker, sin daemon, sin base de datos a instalar — el almacenamiento es SQLite bajo ~/.testtrout y el trabajador se ejecuta dentro del mismo proceso.

Conecta repositorio, desde la interfaz o desde la terminal:

trout link ~/code/my-app          # a folder you already have
trout link --github owner/name    # cloned with your GitHub token

Vincular una carpeta local nunca la modifica. El escaneo comienza automáticamente y la pestaña Configuration tiene todos los ajustes: despliegues, Supabase, cuentas de prueba, proveedores de modelos.

Dos cosas que lo hacen seguro y no útil:

Te dice las credenciales que tu aplicación, descubiertas al leer tu código fuente — las variables que busca, para qué sirve probablemente cada una y la línea en la que aparecen. No reduce a la reutilización de lo que ya dice el código.

Un conjunto parcial produce una suite parcial. Con una sola URL puedes sonar analizar y ejecutar pruebas de API; añade una clave anonymous y una second account, y las pruebas de autorización vuelven a ser posibles. Cada capacidad bloqueada nombra la única el siguiente cosa que necesita, nunca “déjalo configurado bien”.

Los valores secretos se escriben en un .env ignorado por git; la configuración del commit solo contiene referencias env:NAME, y un secreto literal en campo de configuración se rechaza.

O quédate en tu agente de código

La aplicación es una forma de entrar, no la única. Todo lo que hace también está como tools de MCP y como commands del CLI, para el que no quiere dejar su editor no tenga por qué:

pip install 'testtrout[mcp]'
trout mcp /path/to/your/project

Apunta tu agente a la skill en .claude/skills/, o díle:

Usa el servidor MCP de TestTrout. Escanea el repositorio, muéstrame lo que está sin probar editoritos por importancia, redacta las pruebas de los cinco primeros y ejecuta.

Trece herramientas, vinculadas a un único proyecto para que un agente no no pueda trabajar sobre el repositorio incorrecto:

scan surfaces

entiende la base de código. Sin clave API, sin red.

probe

Vea lo que hace la aplicación desplegada, en un navegador real.

intent gaps

Clasifica what’s été untested and por él’ you.

propose approve generate

Redacta, reseña, compila en archivos de prueba reales.

run certify report

Ejecuta, demuestra recurso, evidencia.

doctor

Qué falta y cómo resolverlo.

Además, trout://surfaces, trout://intent, trout://config y trout://scenarioscomo recursos, de manera que el volumen nunca acaba desguazando la ventana del contexto del agente.

Qué entiende

trout scan es totalmente determinista — no requiere modelo, ni red, y es seguro sin un repo que acabes de clonar. En una aplicación típica de Supabase encuentra:

Superficie

Ejemplo

Pantallas

/orders/:idOrderDetail, y los datos que llama

Operaciones de datos

supabase.from('orders').delete().eq('id', …)

Políticas RLS

Users manage own orders — una afirmación de autorización comprobable

Acciones de servidor

Funciones 'use server' — endpoints que parecen helpers

Manejadores de ruta

app/api/checkout/route.tsPOST

Terceros

Stripe, Resend — el límite de sustitución

Esquema

Tablas, columnas, claves foráneas, estado RLS

También te dice cuando se escribe una tabla desde el código del navegador con sin row-level security — es decir, que se puede escribir en el mundo entero a través de la clave anónima. Eso normalmente es una novación.

Por qué las pruebas son dignas

Construye una línea base, no conjeturas por pull request. Una prueba derivada del código de que acabas de cambiar afirma que el nuevo comportamiento es correcto por construcción: no podrá detectar un regresión. TestTrout primero urifica una suite contra un despliegue funcionante, so un fallo significa algo.

Núcleo determinista, modelo solo en los bordes. El escaneo, la clasificación, la execution y la clasificación de fallos nunca intervienen una modelo. El modelo solo interpreta tu intención, ajusta la redacción y elige qué elementos observados se usan para afirmar. Cada clasificación es la suma de contribuciones con nombre:

critical  authorization  A user cannot read another user's rows in payments   100
  · critical surface
  · policy: exists (select 1 from orders o where o.id = payments.order_id …)

Cada aserción lleva clara su procedencia. derived de una política, observed en un navegador real, o inferred por un modelo — y lo inferred nunca puede bloquear algo por sí solo.

Un fallo se clasifica antes de avisarse. Solo assertion_failure es una señal de producto. Los fallos de auth, las bases de datos inaccesibles y las llamadas de terceros bloqueadas son propensos del harness, y una ejecución no concluyente nunca se asciende paso.

Todo desde la terminal

trout scan          # understand the code
trout init          # connect a deployment
trout gaps          # what's missing, ranked, with reasons
trout run           # execute, with evidence behind every result

Todos los comandos soportan --json. Recorrido completo en docs/setup.md.

Cómo lo guarda

Tu suite de pruebas permanece en el repositorio, confirmada y revisable:

.trout/scenarios/*.yaml    what each test asserts, in plain language
.trout/config.yaml         deployments and env: references, never secrets
tests/trout/               generated Playwright and Vitest files

El historial de pruebas, la evolución de la cobertura y la cola de trabajo están en SQLite, en ~/.testtrout. Esta separación es intencional: la suite debe estar junto al código, donde una pull request puede revisarla, y las preguntas que los archivos no pueden responder — se está volviendo más inestable si la cobertura sube — están en una base de datos.

Vista web opcional

trout web

Cobertura a un vistazo, lista de huecos clasificada, revisión de escenarios, historial de ejecuciones con evidencia, log en directo. Los mismos archivos .trout/ que en el CLI — sin base de datos, nada alojado, solo loopback. Directamente opcional; la CLI y MCP se completa.

Seguridad

La herramienta necesita las credenciales de tu base de datos y tener conductor sobre despliegue, por eso garantías quedan codificadas, no podrán documentadas:

  • La producción es de lectura por defecto. Las transferencias de mutation se bloquean a nivel de red en menos que no punto de entrada esté marcado explicitally disposable. T' guard se coloca bajo la navegación, porque “solo cargar la página read-only” es falso — muchas de estas apps atacan al montar. Ningún punto y ningún clic web puede cambiar esa configuración.

  • Los terceros se interceptoran. Una ejecución de prueba no puede cargar una tarjeta ni enviar un correo mayor. Las solicitudes salientes no coincidentes fallan ruidosamente; Es un mock que simulacro en silencio concide con nada está escena la suite canta verde, máximo nada.

  • Secrets no terminan en archivos versionados. .claude/config.yaml solo contiene referencias env:. Los valores viven en un .env ignorable por git.

  • Nada está alojado. Nada coloca tu máquina, más las llamadas al proveedor de modelo elegido. Sin telemetría.

Proveedores

Anthropic, OpenAI o Kimi — or con OpenAI compatible endpoint through base_url.

model:
  provider: anthropic
  api_key: env:ANTHROPIC_API_KEY

El análisis no llama nunca a un modelo, así que trout scan, trout gaps y trout run historical sin clave.

Stacks compatibles

React + Vite (Lovable, v0, Bolt) and Next.js App Router, in TypeScript, with Supabase, desplegables en cualquier entorno access by HTTP. Auth through Supabase, Clerk or NextAuth.

Encorseta de forma adecuada. La profundidad en un stack gana a los limity superficiales de muchas — y estos codebases son lo suficientemente comunes como para que el análisis real estadístico sea exacto. Other stacks is an adaptador away: v docs/adapters.md.

Hoja de ruta

Análisis del repo, probe del despliegue, clasificación de huecos

Generación de escenarios, ejecución y certiación

Servidor MCP, CLI y app local con store y worker

Selección de pruebas por cambios, diff basado es base

Multi repositorio: enlazar carpetas locales clone con GitHub token

Configuración completa de interfaz o CLI, con discovery credencial

🔜

Comprobación de pull request GitHub

🔜

Índice de cobertura observado (la selección actual estima cobertura

Contribución

Añadir un framework, un proveedor de autenticación o un runner de test somete implementar un protocol n actualizando un punto de entrada — sin necesidad de fork. Ver CONTRIBUTING.md y docs/adapters.md.

La suite completa de pruebas funcionales corre offline sin API key. Eso es deliberate y vale that preserve.

Licencia

Apache 2.0 ```out` no.

Oops, many errors above due to rushed translation. Need final be high-quality. The current draft has bad errors: "test suite a..." etc. Need remedy before final.

Let's step back. Need produce coherent Spanish. Must not be garbage. Let's generate a clean final translation with careful wording.

We can use formal, but consistent.

Let's craft again from scratch, every paragraph.

Input (I will use all original text from user). I'll produce lines.


Title block unchanged.

Translate paragraph:

"Run it as an app, or pass it to your coding agent through MCP. Either way it writes the tests your application never had and tells you when they break."

"Los agents write fast, but also break things quietly ..." etc.

Need maintain line breaks? We'll keep.

Let's translate exactly:

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DrDroidLab/TestTrout'

If you have feedback or need assistance with the MCP directory API, please join our Discord server