← Todas las entradas
10 mar 2026Matias Aguirre

@matware/e2e-runner 1.3.0: Learning Feedback Loop, Multi-Pool y 8 Nuevos Action Types

El release más ambicioso de nuestro test runner E2E. Sistema de aprendizaje que retroalimenta la creación de tests, routing inteligente entre múltiples Chrome pools, GraphQL declarativo, y un plugin completo para Claude Code.

e2e-runnertestingmcpclaude-codemachine-learningopen-source
E2E Runner 1.3.0 con learning feedback loop y multi-pool routing
E2E Runner 1.3.0 con learning feedback loop y multi-pool routing

La versión 1.3.0 de @matware/e2e-runner representa el salto más significativo desde el lanzamiento inicial. Con 20 commits, más de 17,000 líneas de código añadidas, y un rediseño fundamental en cómo el sistema aprende de sus propias ejecuciones, este release transforma e2e-runner de un test runner en un asistente de testing inteligente.

Multi-Pool e Infraestructura Distribuida

La primera gran área de mejoras apunta a escenarios enterprise donde un solo pool de Chrome no es suficiente.

Routing por Least-Pressure

Ahora puedes configurar múltiples endpoints de Chrome (browserless/chrome, chrome-headless-shell, o cualquier CDP-compatible) y el sistema rutea automáticamente cada test al pool con menor carga:

{
  "pools": [
    { "url": "ws://chrome-1:3000", "maxConcurrency": 10 },
    { "url": "ws://chrome-2:3000", "maxConcurrency": 10 },
    { "url": "ws://chrome-3:3000", "maxConcurrency": 5 }
  ],
  "routing": "least-pressure"
}

El balanceador considera tanto conexiones activas como tiempos de respuesta recientes, distribuyendo la carga de manera óptima.

Watch Mode

Para desarrollo iterativo, el nuevo watch mode re-ejecuta tests automáticamente cuando detecta cambios en archivos:

npx @matware/e2e-runner run --watch

Combina esto con el dashboard para un ciclo de feedback instantáneo mientras desarrollas tests.

Arquitectura Hub/Agent

Para equipos que necesitan testing distribuido geográficamente, introducimos una arquitectura hub/agent. Un hub central coordina múltiples agentes remotos, cada uno con su propio pool de Chrome. Los resultados se consolidan en tiempo real en el dashboard central.

8 Nuevos Action Types

El vocabulario de acciones disponibles en tus tests JSON creció significativamente.

GraphQL Declarativo

El nuevo action type gql elimina la necesidad de wrappear llamadas GraphQL en bloques evaluate gigantes:

{
  "action": "gql",
  "endpoint": "/graphql",
  "query": "query GetUser($id: ID!) { user(id: $id) { name email } }",
  "variables": { "id": "123" },
  "assert": {
    "user.name": { "exists": true },
    "user.email": { "contains": "@" }
  }
}

Las assertions se evalúan inline contra la respuesta, con paths JSON para navegar estructuras anidadas.

Storage Actions

Manipula y verifica localStorage/sessionStorage directamente:

{ "action": "set_storage", "key": "auth_token", "value": "test-token-123" },
{ "action": "assert_storage", "key": "auth_token", "exists": true }

Ideal para tests que necesitan simular estados de autenticación o preferencias de usuario.

Interacciones UI Complejas

Tres nuevos action types para interacciones que antes requerían selectores frágiles:

  • click_icon: Click en iconos por nombre semántico (search, menu, close)
  • click_menu_item: Navega menús dropdown por texto del item
  • click_in_context: Click relativo a un elemento contenedor
{ "action": "click_icon", "icon": "settings", "near": ".user-profile" },
{ "action": "click_menu_item", "menu": ".dropdown", "item": "Cerrar sesión" }

Wait Network Idle

Para SPAs con carga asíncrona compleja, wait_network_idle espera hasta que no haya requests pendientes por un período configurable:

{ "action": "wait_network_idle", "timeout": 5000, "idleTime": 500 }

Learning Feedback Loop

Esta es la estrella del release, y merece una explicación detallada.

Hasta ahora, los datos de ejecución fluían en una sola dirección: ejecutar tests, almacenar resultados, mostrar en dashboard. El sistema acumulaba conocimiento pero no lo utilizaba activamente.

Con 1.3.0, el sistema aprende y retroalimenta en dos momentos críticos:

Al Crear Tests

Cuando creas un nuevo test (manual o via MCP), el sistema consulta su base de learnings y te advierte:

  • Selectores que han sido inestables históricamente
  • Selectores estables con alta tasa de éxito
  • Páginas con tiempos de carga problemáticos
  • Errores frecuentes en tests similares

Al Ejecutar Tests

Cuando un test falla, el sistema no solo reporta el error — sugiere fixes concretos basados en patrones observados:

  • Selectores alternativos que funcionaron en contextos similares
  • Waits adicionales para elementos con carga asíncrona conocida
  • Configuraciones de retry para endpoints intermitentes

Validación Inteligente

El sistema detecta anti-patterns antes de que causen problemas:

// Este evaluate SIEMPRE pasa - el sistema lo detecta
{
  "action": "evaluate",
  "script": "return `Solicitudes: ${hasSolicitudes}`"
}

Genera un warning: “Este test siempre pasará porque retorna un string truthy independientemente del valor de hasSolicitudes”.

También detecta:

  • Dependencias implícitas entre tests
  • Waits con valores numéricos fijos (anti-pattern vs. wait for selector)
  • Assertions que nunca pueden fallar

Claude Code Plugin Completo

El plugin MCP se rediseñó completamente con tres agentes especializados:

test-creator

Genera tests a partir de descripciones en lenguaje natural, consultando los learnings para evitar selectores problemáticos desde el inicio.

test-analyzer

Analiza tests existentes, identifica fragilidades, y sugiere mejoras basadas en el historial de ejecuciones.

test-improver

Toma tests que fallan frecuentemente y los refactoriza aplicando los patrones exitosos del proyecto.

Los tres agentes utilizan skills con referencias on-demand — el contexto se carga solo cuando es necesario, evitando sobrecargar la ventana de contexto del LLM.

Compatible con Claude Code y OpenCode.

Instalación

Actualizar es directo:

npm install @matware/e2e-runner@1.3.0

Para el plugin de Claude Code:

claude plugin install @anthropic/claude-code-marketplace/fastslack/e2e-runner

Si vienes de una versión anterior, los learnings existentes se migran automáticamente al nuevo schema.

Conclusión

La versión 1.3.0 representa una evolución fundamental en cómo pensamos el testing automatizado. No es solo ejecutar tests y reportar resultados — es construir un sistema que aprende de cada ejecución y usa ese conocimiento para hacer tests más robustos, más mantenibles, y más fáciles de crear.

El código completo está disponible en GitHub. Issues, PRs, y feedback son bienvenidos.

Compartir
Siguiente paso

¿Listo para Iniciar su Proyecto?

Hablemos sobre cómo la tecnología puede transformar su organización. Ofrecemos consultas técnicas y soluciones a medida adaptadas a requisitos institucionales. Agende una sesión estratégica sin compromiso.

Hablemos
Consulta gratuitaSin compromisoRespuesta rápida