Skip to main content
Glama

🚀 Analizador de Grafos de Características de Karate

Una potente herramienta MCP (Model Context Protocol) para analizar archivos de características del Framework Karate y generar gráficos de dependencia interactivos.

Python Tests License


📋 Tabla de Contenidos


Related MCP server: GID MCP Server

✨ Características

Capacidades Principales

  • 🔍 Análisis de Archivos de Características - Analiza archivos de características de Karate con sintaxis Gherkin

  • 🎯 Análisis de Dependencias - Extrae y analiza dependencias (flujos de trabajo, APIs, páginas, BD)

  • 📊 Visualización Interactiva - Genera hermosos gráficos HTML con leyenda

  • 🎫 Integración con Jira - Extrae y rastrea etiquetas de Jira (@PROJ-123)

  • 🔄 Análisis de Impacto - Identifica casos de prueba afectados cuando cambian los componentes

  • 📈 Soporte Multi-Proyecto - Gestiona y analiza múltiples proyectos

  • 💾 Exportación/Importación - Exporta gráficos a formatos JSON/GraphML

  • Optimizado para el Rendimiento - Análisis rápido con caché e índices

Características de Visualización

  • 🎨 Nodos codificados por colores según el tipo (Prueba, Flujo de trabajo, API, Página, Base de datos)

  • 🔍 Información sobre herramientas interactiva con metadatos (ruta del archivo, números de línea, etiquetas de Jira)

  • 🖱️ Clic para resaltar conexiones y dependencias

  • 📊 Leyenda en la esquina superior derecha que explica colores y formas

  • 🔄 Simulación física para diseño automático

  • 🎯 Vista de impacto que resalta los componentes modificados y las pruebas afectadas


🚀 Inicio Rápido

1. Instalar Dependencias

pip install -e .
pip install pyvis  # For visualization

2. Ejecutar Demo

# Set UTF-8 encoding (Windows)
$env:PYTHONIOENCODING="utf-8"

# Run large project demo
python test_large_project.py

3. Ver Resultados

cd output
start ecommerce-platform_full.html

📦 Instalación

Requisitos Previos

  • Python 3.8 o superior

  • Gestor de paquetes pip

Instalar desde el Código Fuente

# Clone repository
git clone <repository-url>
cd karate-feature-graph-analyzer

# Install dependencies
pip install -e .

# Install visualization library
pip install pyvis

# Verify installation
pytest tests/ -v

Dependencias

Dependencias principales (instaladas automáticamente):

  • networkx - Operaciones de grafos

  • hypothesis - Pruebas basadas en propiedades

  • pydantic - Validación de datos

Dependencias opcionales:

  • pyvis - Visualizaciones interactivas


💻 Uso

Uso Básico

from karate_graph_analyzer.mcp_interface.mcp_tool import KarateGraphAnalyzerTool

# Initialize tool
tool = KarateGraphAnalyzerTool()

# Register project
tool.register_project(
    name="my-project",
    root_path="/path/to/karate/project",
    feature_file_patterns=["**/*.feature"]
)

# Analyze project
analysis = tool.analyze_project("my-project")
print(f"Found {analysis['statistics']['total_nodes']} nodes")

# Query dependencies
deps = tool.query_dependencies("tc_0001", transitive=True)
print(f"Found {deps['count']} dependencies")

# Impact analysis
impact = tool.impact_analysis("api_0001")
print(f"Affected: {impact['total_count']} test cases")

# Export graph
export = tool.export_graph("my-project", format="json")
with open("graph.json", "w") as f:
    f.write(export['data'])

Visualización

from karate_graph_analyzer.visualization.graph_visualizer import GraphVisualizer

# Get graph
graph = tool.graphs["my-project"]

# Create visualizer
visualizer = GraphVisualizer(graph)

# Render full graph
visualizer.render("output/graph.html", height="900px")

# Render impact view
visualizer.render_impact_view(
    changed_component_id="api_0001",
    affected_test_case_ids=["tc_0001", "tc_0002"],
    output_path="output/impact.html"
)

Línea de Comandos (vía Script)

# Analyze large project
python test_large_project.py

# Output will be in output/ directory:
# - ecommerce-platform_full.html (full graph)
# - ecommerce-platform_impact.html (impact view)
# - ecommerce-platform_graph.json (graph data)
# - LARGE_PROJECT_ANALYSIS_REPORT.md (detailed report)

📁 Estructura del Proyecto

karate-feature-graph-analyzer/
├── src/karate_graph_analyzer/
│   ├── models.py                    # Data models
│   ├── parser/                      # Feature file parsing
│   │   └── feature_parser.py
│   ├── graph/                       # Graph construction
│   │   └── graph_builder.py
│   ├── analyzer/                    # Dependency analysis
│   │   └── dependency_analyzer.py
│   ├── mcp_interface/               # MCP protocol
│   │   └── mcp_tool.py
│   ├── storage/                     # Project registry
│   │   └── project_registry.py
│   ├── cache/                       # AST caching
│   │   └── cache_manager.py
│   ├── visualization/               # Graph visualization
│   │   └── graph_visualizer.py
│   └── logging_config.py            # Logging setup
│
├── tests/
│   ├── unit/                        # 306 unit tests
│   ├── integration/                 # Integration tests
│   └── fixtures/                    # Test data
│
├── output/                          # Generated files
│   ├── ecommerce-platform_full.html
│   ├── ecommerce-platform_impact.html
│   ├── ecommerce-platform_graph.json
│   ├── LARGE_PROJECT_ANALYSIS_REPORT.md
│   └── README.md
│
├── test_project_demo/               # Small demo project
├── test_project_large/              # Large demo project (e-commerce)
├── examples/                        # Usage examples
├── docs/                            # Documentation
│   ├── API.md
│   └── jira_tag_extraction.md
│
├── test_large_project.py            # Demo script
├── pyproject.toml                   # Project config
├── pytest.ini                       # Test config
└── README.md                        # This file

📚 Documentación

Documentación Principal

Especificaciones


🎯 Ejemplos

Ejemplo 1: Analizar Proyecto de Demostración

# Run demo
python test_large_project.py

# View results
cd output
start ecommerce-platform_full.html

Lo que verás:

  • 84 nodos (73 casos de prueba, 6 flujos de trabajo, 3 páginas, 1 API, 1 BD)

  • 26 aristas (dependencias)

  • Gráfico interactivo con leyenda

  • Codificado por colores según el tipo

  • Información sobre herramientas al pasar el ratón con metadatos

Ejemplo 2: Análisis de Impacto

# Find what tests are affected by API change
impact = tool.impact_analysis("api_0001")

print(f"Changed: {impact['changed_component']}")
print(f"Affected: {impact['total_count']} test cases")

for tc in impact['affected_test_cases']:
    print(f"  - {tc['name']} (depth: {tc['depth']})")
    if tc['jira_tags']:
        print(f"    Jira: {', '.join(tc['jira_tags'])}")

Salida:

Changed: api_0001
Affected: 14 test cases
  - Successful login (depth: 1)
    Jira: @AUTH-101
  - Get user profile (depth: 1)
    Jira: @USER-101
  ...

Ejemplo 3: Encontrar Componentes Comunes

# Find reusable components across projects
common = tool.find_common_components(["project1", "project2"])

for comp in common['components']:
    print(f"{comp['component_type']}: {comp['identifier']}")
    print(f"  Used in {comp['usage_count']} projects")
    print(f"  Projects: {', '.join(comp['projects'])}")

🧪 Pruebas

Ejecutar Todas las Pruebas

# Run all tests
pytest tests/ -v

# Run specific test suite
pytest tests/unit/ -v
pytest tests/integration/ -v

# Run with coverage
pytest tests/ --cov=src/karate_graph_analyzer --cov-report=html

Estadísticas de Pruebas

  • Total de Pruebas: 306

  • Pasadas: 306 (100%)

  • Fallidas: 0

  • Omitidas: 1

  • Cobertura: Integral

Categorías de Pruebas

  • Pruebas Unitarias (tests/unit/) - Prueba componentes individuales

  • Pruebas de Integración (tests/integration/) - Prueba interacciones entre componentes

  • Pruebas de Propiedades (opcional) - Pruebas basadas en propiedades con Hypothesis


🎨 Guía de Visualización

Entendiendo la Leyenda

Cuando abras un archivo HTML de visualización, busca la esquina superior derecha para ver la leyenda:

📊 Legend
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🟢 Test Case - Scenario hoặc test
🔵 Workflow - Reusable workflow
🟠 API - API endpoint
🟣 Page - Page object
🔴 Database - Database operation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 Tip: Hover để xem chi tiết
🖱️ Click để highlight connections
🔍 Scroll để zoom in/out

Características Interactivas

  1. Pasar el ratón - Mueve el ratón sobre el nodo para ver la información con:

    • Nombre del nodo

    • Tipo de nodo

    • Ruta del archivo

    • Número de línea

    • Etiquetas de Jira

  2. Clic - Haz clic en el nodo para resaltar:

    • El nodo seleccionado

    • Todos los nodos conectados

    • Todas las aristas de conexión

  3. Zoom - Desplázate con la rueda del ratón para acercar/alejar

  4. Panorámica - Arrastra el fondo para moverte

  5. Reposicionar - Arrastra los nodos para reorganizar el diseño


🔧 Configuración

Configuración del Analizador

from karate_graph_analyzer.models import ParserConfig

config = ParserConfig(
    jira_tag_patterns=[
        r'@[A-Z]+-\d+',      # @PROJ-123
        r'@[a-z]+-\d+',      # @proj-123
        r'@[A-Z]+_\d+',      # @PROJ_123
    ],
    workflow_directories=['workflows', 'common'],
    page_object_directories=['pages', 'page-objects'],
    variable_patterns=[r'\$\{(\w+)\}'],
    api_extraction_rules={
        'extract_from_variables': True,
        'extract_from_strings': True,
    }
)

# Use custom config
tool.register_project(
    name="my-project",
    root_path="/path/to/project",
    parser_config=config
)

📊 Métricas Clave

Rendimiento

  • Tiempo de Análisis: < 1 segundo para 4 archivos

  • Tiempo de Consulta: < 10ms para consultas de dependencia

  • Análisis de Impacto: < 50ms para 6 pruebas afectadas

  • Tiempo de Exportación: < 100ms para 9 nodos

  • Visualización: < 1 segundo para renderizar

Escalabilidad

  • Probado con: 84 nodos, 26 aristas

  • Soporta: 1000+ nodos (estimado)

  • Memoria: Eficiente con caché

  • Almacenamiento: Formato JSON, ~500 bytes por nodo


🤝 Contribución

¡Las contribuciones son bienvenidas! Por favor, sigue estas pautas:

  1. Haz un fork del repositorio

  2. Crea una rama de características (git checkout -b feature/amazing-feature)

  3. Confirma tus cambios (git commit -m 'Add amazing feature')

  4. Envía a la rama (git push origin feature/amazing-feature)

  5. Abre una Solicitud de Extracción (Pull Request)

Configuración de Desarrollo

# Clone your fork
git clone <your-fork-url>
cd karate-feature-graph-analyzer

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Run linter
flake8 src/

# Format code
black src/

📝 Licencia

Este proyecto está bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.


🙏 Agradecimientos

  • Karate Framework - Por el increíble framework de pruebas BDD

  • NetworkX - Para operaciones de grafos

  • Pyvis - Para visualizaciones interactivas

  • Hypothesis - Para pruebas basadas en propiedades


📞 Soporte

Documentación

Ejemplos

Problemas

Si encuentras algún problema:

  1. Revisa la documentación

  2. Revisa los ejemplos

  3. Abre un problema en GitHub


🎉 Enlaces Rápidos


Creado con ❤️ usando Desarrollo Basado en Especificaciones

Estado: ✅ Listo para Producción Versión: 1.0.0 Última Actualización: 30 de abril de 2026

🚀 ¡Feliz Análisis!

Install Server
A
license - permissive license
B
quality
D
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/duyngo91/karate-graph-mcp'

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