# Testwire: Integración de agentes IA en pruebas de integración de Flutter con MCP y recarga en caliente
Los agentes de IA tienen problemas para escribir pruebas de integración en Flutter debido al alto consumo de tokens, tiempos de compilación largos y falta de contexto visual. Testwire resuelve estos inconvenientes con una herramienta que permite la ejecución paso a paso conectada al Servicio VM mediante MCP. Esto permite a los agentes controlar el proceso, capturar pantallas y usar recarga en caliente para correcciones rápidas.
Arquitectura de Testwire y cómo funciona
Testwire consta de tres componentes clave que interactúan mediante el Protocolo de Contexto de Modelo (MCP). Las pruebas se ejecutan en modo flutter run con la bandera --dart-define=AGENT_MODE=true, que activa el modo debug y las extensiones del servicio Dart VM. El servidor MCP testwire_mcp se conecta a la prueba vía el servicio VM, proporcionando al agente un conjunto de herramientas para gestionar la ejecución. Como cliente MCP, el agente de IA usa estas herramientas para monitorear estados de pasos, ejecutar comandos y analizar errores con acceso a visuales de la UI.
Herramientas MCP clave disponibles para el agente:
connect: Conectarse a la prueba vía URI del servicio VM.step_forward: Ejecutar el siguiente paso y pausar.run_remaining: Ejecutar todos los pasos restantes, deteniéndose en errores.retry_step: Reintentar un paso fallido.get_test_state: Obtener el estado de todos los pasos de la prueba.hot_reload_testwire_test: Recarga en caliente preservando el progreso.hot_restart_testwire_test: Reinicio completo de la prueba.screenshot: Capturar pantalla actual de la UI.disconnect: Desconectarse de la prueba.
Implementación de pruebas en Testwire: Código y estructura
Las pruebas de Testwire se estructuran como clases que extienden TestwireTest para soportar recarga en caliente. Cada prueba se divide en pasos lógicos con estados: pendiente, completado, ejecutándose o fallido. Los pasos se definen con el método step, que incluye descripción, contexto y acción. Aquí un ejemplo de estructura de prueba para validar un formulario de feedback:
class MyTest extends TestwireTest {
MyTest() : super(
'Submit feedback form',
setUp: (tester) async {
app.main();
await tester.pumpAndSettle();
},
);
@override
Future<void> body(WidgetTester tester) async {
await step(
description: 'Navigate to Leave Review',
context: 'Tap the "Leave Review" tile on the home screen.',
action: () async {
await tester.tap(find.byKey(const Key('leave_review_tile')));
await tester.pumpAndSettle();
},
);
await step(
description: 'Enter name',
context: 'Type "Alex" into the name field.',
action: () async {
await tester.enterText(
find.byKey(const Key('name_field')), 'Alex');
await tester.pumpAndSettle();
},
);
await step(
description: 'Tap 5-star rating',
context: 'Tap the 5th star to set rating to 5.',
action: () async {
await tester.tap(find.byKey(const Key('star_5')));
await tester.pumpAndSettle();
},
);
await step(
description: 'Verify result',
context: 'Check that the success message is displayed.',
action: () async {
expect(find.text('Thank you!'), findsOneWidget);
expect(find.text('5 stars from Alex'), findsOneWidget);
},
);
}
}
Recarga en caliente como mecanismo central de depuración
La recarga en caliente de Testwire permite a los agentes corregir el código de pruebas sin recompilaciones completas, preservando el progreso de ejecución. Cuando un paso falla, la prueba se pausa, el agente revisa logs, estado VM y capturas de UI, luego activa recarga en caliente y reintenta. Esto reduce los ciclos de desarrollo de 15-20 minutos a solo unas iteraciones, bajando costos de tokens y uso de ventana de contexto. El soporte de recarga en caliente requiere pruebas basadas en clases (no funciones) para mantener el estado entre recargas.
Integración en flujos de desarrollo y CI/CD
Testwire ofrece dos modos: modo agente para desarrollo y modo estándar para CI/CD. En desarrollo, ejecuta pruebas con flutter run --dart-define=AGENT_MODE=true para activar MCP y recarga en caliente. En CI, usa flutter test como prueba de integración normal sin banderas extras. Este enfoque de un solo archivo de prueba asegura consistencia y simplifica el mantenimiento. Integrar Testwire puede requerir ajustes en habilidades del agente y documentación, pero convierte las pruebas de integración en una tarea central, no un complemento.
Lecciones clave
- Testwire resuelve los dolores de los agentes IA en escritura de pruebas: altos costos de tokens, compilaciones lentas, sin feedback visual.
- Usa MCP para engancharse al Servicio VM, dando control paso a paso a los agentes.
- Recarga en caliente permite correcciones sin recompilaciones, acelerando ciclos de desarrollo.
- Pruebas basadas en clases para recarga en caliente y compatibilidad dual CI/CD.
- Requiere configuración, pero integra pruebas en todos los flujos de desarrollo.
— Editorial Team
Aún no hay comentarios.