Tests funcionales (test-personality.spec.ts): - Saludo con personalidad pirata espacial (keywords flexibles) - Personalidad consistente en respuestas serias (fotosintesis + pirata) - !help y !ping funcionan (assertions estrictas) - Sin errores E2EE Tests de pipeline (create-agent-pipeline.spec.ts): - Valida agent.go con Rules() y ActionKindLLM - Config sin type: robot (es agent por defecto) - System prompt con personalidad + seccion de seguridad - LLM configurado (openai/gpt-4o) - Encryption habilitada, import en launcher Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
E2E Tests — agents_and_robots
Tests end-to-end con Playwright para verificar que los agentes Matrix responden correctamente via Element Web.
Requisitos
- Node.js v18+
- Agentes corriendo contra el homeserver (
./dev-scripts/server/start.sh) - Credenciales de un usuario de test en el homeserver
Instalacion
./dev-scripts/e2e/install.sh
Esto instala dependencias npm y Chromium para Playwright.
Configuracion
cp e2e/.env.example e2e/.env
Editar e2e/.env con las credenciales del usuario de test:
| Variable | Descripcion |
|---|---|
ELEMENT_URL |
URL de Element Web local (default: http://localhost:8090) |
MATRIX_HOMESERVER |
URL del homeserver Matrix |
MATRIX_USER |
MXID del usuario de test (@user:server) |
MATRIX_PASSWORD |
Password del usuario de test |
MATRIX_RECOVERY_KEY |
Recovery key para cross-signing/E2EE |
Ejecucion
# Ejecutar todos los tests (headless)
./dev-scripts/e2e/run.sh
# Con browser visible (requiere DISPLAY)
./dev-scripts/e2e/run.sh --headed
# Ejecutar un spec especifico
./dev-scripts/e2e/run.sh assistant-bot
# Directamente con Playwright
cd e2e && npx playwright test
cd e2e && npx playwright test --headed
cd e2e && npx playwright test assistant-bot.spec.ts
El script run.sh se encarga de:
- Verificar que los agentes estan corriendo
- Levantar Element Web si no esta activo
- Ejecutar los tests
- Generar reporte en caso de fallos
- Teardown de Element Web (si lo levanto)
Estructura
e2e/
├── package.json dependencias (Playwright, dotenv)
├── playwright.config.ts configuracion de Playwright
├── global-setup.ts login unico antes de todos los tests
├── .env.example template de credenciales
├── fixtures/
│ ├── element-auth.ts login y verificacion E2EE
│ └── matrix-room.ts helpers: goToRoom, sendMessage, waitForBotReply
├── tests/
│ ├── login.spec.ts smoke test: sesion y E2EE
│ ├── assistant-bot.spec.ts tests del assistant-bot
│ └── asistente-2.spec.ts tests del asistente-2 (con tools)
├── scripts/
│ └── setup-element.sh descarga y sirve Element Web local
└── element-web/ Element Web descargado (gitignored)
dev-scripts/e2e/
├── install.sh instalacion de dependencias
└── run.sh orquestacion completa de tests
Debug de fallos
Screenshots
Cuando un test falla, Playwright captura screenshot automaticamente en e2e/test-results/. Revisarlos para entender el estado de la UI al momento del fallo.
Reporte HTML
Si hay fallos, run.sh genera un reporte HTML:
cd e2e && npx playwright show-report
Modo headed
Para ver el browser en tiempo real (requiere entorno grafico):
./dev-scripts/e2e/run.sh --headed
Traces
En el primer retry, Playwright captura un trace completo. Verlo con:
cd e2e && npx playwright show-trace test-results/<test-name>/trace.zip
Login cacheado
El global-setup cachea la sesion autenticada en e2e/.auth/state.json por 12 horas. Si hay problemas de autenticacion:
rm -rf e2e/.auth/
Y re-ejecutar los tests para forzar login fresco.
Notas de diseno
- Assertions flexibles para LLM: las respuestas de los bots son no-deterministicas. Solo se verifica que responde, que no esta vacio, y longitud razonable.
- Commands con assertions estrictas:
!helpy!pingtienen respuestas deterministicas y se validan con mayor precision. - Tests secuenciales:
fullyParallel: falseyworkers: 1para evitar race conditions en el timeline de Matrix. - Timeouts generosos: 60s por test, 30s para expect. Los LLMs pueden tardar 5-20s en responder.
- Retry en CI: 1 retry en CI para manejar timeouts ocasionales.