Test Runner MCP

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Integrates with Dependabot for automated dependency updates

  • Allows running and parsing Flutter tests, with enhanced support including environment setup, error handling, and detailed output processing

  • Integrates with GitHub Actions for continuous integration, including automated testing on Node.js 18.x and 20.x, test results uploaded as artifacts

Ejecutor de pruebas MCP

Un servidor de Protocolo de Contexto de Modelo (MCP) para ejecutar y analizar resultados de pruebas de múltiples entornos de prueba. Este servidor proporciona una interfaz unificada para ejecutar pruebas y procesar sus resultados, y admite:

  • Bats (Sistema de pruebas automatizadas Bash)
  • Pytest (marco de pruebas de Python)
  • Pruebas de Flutter
  • Jest (Marco de pruebas de JavaScript)
  • Pruebas Go
  • Pruebas de óxido (prueba de carga)
  • Genérico (para ejecución de comandos arbitrarios)

Instalación

npm install test-runner-mcp

Prerrequisitos

Es necesario instalar los siguientes marcos de prueba para sus respectivos tipos de prueba:

Uso

Configuración

Agregue el ejecutor de pruebas a su configuración de MCP (por ejemplo, en claude_desktop_config.json o cline_mcp_settings.json ):

{ "mcpServers": { "test-runner": { "command": "node", "args": ["/path/to/test-runner-mcp/build/index.js"], "env": { "NODE_PATH": "/path/to/test-runner-mcp/node_modules", // Flutter-specific environment (required for Flutter tests) "FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter", "PUB_CACHE": "/Users/username/.pub-cache", "PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin" } } } }

Nota: Para las pruebas de Flutter, asegúrese de reemplazar:

  • /opt/homebrew/Caskroom/flutter/3.27.2/flutter con su ruta de instalación real de Flutter
  • /Users/username/.pub-cache con su ruta de caché de publicación actual
  • Actualice PATH para incluir las rutas reales de su sistema

Puede encontrar estos valores ejecutando:

# Get Flutter root flutter --version # Get pub cache path echo $PUB_CACHE # or default to $HOME/.pub-cache # Get Flutter binary path which flutter

Ejecución de pruebas

Utilice la herramienta run_tests con los siguientes parámetros:

{ "command": "test command to execute", "workingDir": "working directory for test execution", "framework": "bats|pytest|flutter|jest|go|rust|generic", "outputDir": "directory for test results", "timeout": "test execution timeout in milliseconds (default: 300000)", "env": "optional environment variables", "securityOptions": "optional security options for command execution" }

Ejemplo para cada marco:

// Bats { "command": "bats test/*.bats", "workingDir": "/path/to/project", "framework": "bats", "outputDir": "test_reports" } // Pytest { "command": "pytest test_file.py -v", "workingDir": "/path/to/project", "framework": "pytest", "outputDir": "test_reports" } // Flutter { "command": "flutter test test/widget_test.dart", "workingDir": "/path/to/project", "framework": "flutter", "outputDir": "test_reports", "FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter", "PUB_CACHE": "/Users/username/.pub-cache", "PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin" } // Jest { "command": "jest test/*.test.js", "workingDir": "/path/to/project", "framework": "jest", "outputDir": "test_reports" } // Go { "command": "go test ./...", "workingDir": "/path/to/project", "framework": "go", "outputDir": "test_reports" } // Rust { "command": "cargo test", "workingDir": "/path/to/project", "framework": "rust", "outputDir": "test_reports" } // Generic (for arbitrary commands, CI/CD tools, etc.) { "command": "act -j build", "workingDir": "/path/to/project", "framework": "generic", "outputDir": "test_reports" } // Generic with security overrides { "command": "sudo docker-compose -f docker-compose.test.yml up", "workingDir": "/path/to/project", "framework": "generic", "outputDir": "test_reports", "securityOptions": { "allowSudo": true } }

Características de seguridad

El ejecutor de pruebas incluye funciones de seguridad integradas para evitar la ejecución de comandos potencialmente dañinos, en particular para el marco generic :

  1. Validación de comandos
    • Bloquea sudo y su por defecto
    • Previene comandos peligrosos como rm -rf /
    • Bloquea las operaciones de escritura del sistema de archivos fuera de ubicaciones seguras
  2. Saneamiento de variables ambientales
    • Filtra variables de entorno potencialmente peligrosas
    • Evita la anulación de variables críticas del sistema
    • Garantiza un manejo seguro de la ruta
  3. Seguridad configurable
    • Anular las restricciones de seguridad cuando sea necesario a través de securityOptions
    • Control detallado sobre las funciones de seguridad
    • Configuración segura predeterminada para el uso de pruebas estándar

Opciones de seguridad que puedes configurar:

{ "securityOptions": { "allowSudo": false, // Allow sudo commands "allowSu": false, // Allow su commands "allowShellExpansion": true, // Allow shell expansion like $() or backticks "allowPipeToFile": false // Allow pipe to file operations (> or >>) } }

Soporte de pruebas de Flutter

El ejecutor de pruebas incluye soporte mejorado para pruebas de Flutter:

  1. Configuración del entorno
    • Configuración automática del entorno de Flutter
    • Configuración de PATH y PUB_CACHE
    • Verificación de la instalación de Flutter
  2. Manejo de errores
    • Recopilación de seguimientos de pila
    • Manejo de errores de aserción
    • Captura de excepciones
    • Detección de fallos en las pruebas
  3. Procesamiento de salida
    • Captura completa de la salida de prueba
    • Preservación del seguimiento de la pila
    • Informe detallado de errores
    • Conservación de la salida sin procesar

Soporte para pruebas de óxido

El ejecutor de pruebas proporciona soporte específico para cargo test de Rust:

  1. Configuración del entorno
    • Establece automáticamente RUST_BACKTRACE=1 para obtener mejores mensajes de error
  2. Análisis de salida
    • Analiza los resultados de pruebas individuales
    • Captura mensajes de error detallados para pruebas fallidas
    • Identifica las pruebas ignoradas
    • Extrae información resumida

Soporte de pruebas genéricas

Para las canalizaciones de CI/CD, las acciones de GitHub a través act o cualquier otra ejecución de comando, el marco genérico proporciona:

  1. Análisis automático de salida
    • Intenta segmentar la salida en bloques lógicos
    • Identifica los encabezados de sección
    • Detecta indicadores de aprobación/reprobación
    • Proporciona una estructura de salida razonable incluso para formatos desconocidos
  2. Integración flexible
    • Funciona con comandos de shell arbitrarios
    • No hay requisitos de formato específicos
    • Perfecto para la integración con herramientas como act , Docker y scripts personalizados.
  3. Características de seguridad
    • Validación de comandos para evitar operaciones dañinas
    • Se puede configurar para permitir permisos elevados específicos cuando sea necesario

Formato de salida

El ejecutor de pruebas produce una salida estructurada mientras preserva la salida de prueba completa:

interface TestResult { name: string; passed: boolean; output: string[]; rawOutput?: string; // Complete unprocessed output } interface TestSummary { total: number; passed: number; failed: number; duration?: number; } interface ParsedResults { framework: string; tests: TestResult[]; summary: TestSummary; rawOutput: string; // Complete command output }

Los resultados se guardan en el directorio de salida especificado:

  • test_output.log : Salida de prueba sin procesar
  • test_errors.log : Mensajes de error, si los hay
  • test_results.json : Resultados de pruebas estructuradas
  • summary.txt : Resumen legible para humanos

Desarrollo

Configuración

  1. Clonar el repositorio
  2. Instalar dependencias:
    npm install
  3. Construir el proyecto:
    npm run build

Ejecución de pruebas

npm test

El conjunto de pruebas incluye pruebas para todos los marcos compatibles y verifica escenarios de pruebas exitosos y fallidos.

CI/CD

El proyecto utiliza GitHub Actions para la integración continua:

  • Pruebas automatizadas en Node.js 18.x y 20.x
  • Resultados de pruebas cargados como artefactos
  • Dependabot configurado para actualizaciones de dependencias automatizadas

Contribuyendo

  1. Bifurcar el repositorio
  2. Crea tu rama de funciones
  3. Confirme sus cambios
  4. Empujar hacia la rama
  5. Crear una solicitud de extracción

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Facilita la ejecución unificada y el análisis de resultados para varios marcos de prueba, incluidos Bats, Pytest, Flutter, Jest y Go, a través de una interfaz de protocolo de contexto de modelo.

  1. Installation
    1. Prerequisites
      1. Usage
        1. Configuration
        2. Running Tests
        3. Security Features
        4. Flutter Test Support
        5. Rust Test Support
        6. Generic Test Support
      2. Output Format
        1. Development
          1. Setup
          2. Running Tests
          3. CI/CD
        2. Contributing
          1. License
            ID: q001c11ec3