Haka AI Studio - Documentación Técnica
Producto exclusivo de Haka Lab
Versión: 1.0.18
Plataforma: Visual Studio Code (extensión)
Motor IA: Google Gemini (gemini-2.0-flash por defecto)
Frameworks soportados: Playwright, Selenium
1. Descripción General
Haka AI Studio es una extensión de Visual Studio Code que automatiza la creación de pruebas funcionales mediante inteligencia artificial. Permite grabar interacciones en el navegador y generar automáticamente casos de prueba en formato Gherkin/BDD con implementaciones ejecutables.
Funcionalidades Principales
- Grabación de interacciones: Captura acciones del usuario en el navegador en tiempo real
- Generación con IA: Convierte grabaciones en tests Gherkin completos usando Gemini AI
- Dual engine: Soporta Playwright (selectores semánticos) y Selenium (XPath inteligente)
- Búsqueda vectorial: Detecta y reutiliza pasos existentes del proyecto
- Chat asistente (Kai): Asistente conversacional especializado en testing
- Validaciones manuales: Permite agregar assertions durante la grabación
- Deduplicación: Detecta código duplicado y sugiere reutilización
2. Arquitectura de Seguridad
2.1 Autenticación y Control de Acceso
La extensión implementa un sistema de autenticación dual:
- Flujo OAuth estándar con Google
- Redirect URI local (
localhost:19284/callback)
- Sesión válida por 30 días
- No requiere licencia adicional
Usuarios externos (Email + License Key)
- Validación contra API de licencias:
https://us-central1-haka-licencias-productos.cloudfunctions.net/validarLicencia
- Revalidación en cada apertura de la extensión
- Control de dispositivo único por licencia
Control de Dispositivo
Cada instalación genera un identificador único (id_disp) basado en:
vscode.env.machineId (ID único de la instalación de VS Code)
- Hash SHA-256 truncado a 32 caracteres
- Almacenado en
globalState (persistente por instalación)
Flujo de validación:
1. Usuario abre la extensión
2. Se envía POST a API de licencias con: key, mail, producto, id_disp
3. Si estado = "habilitado" y id_registrado = id_disp → acceso permitido
4. Si id_registrado ≠ id_disp → sesión cerrada inmediatamente
5. Si estado = "deshabilitado" → sesión cerrada
Esto impide que una misma licencia se use simultáneamente en múltiples dispositivos.
2.2 Almacenamiento de Credenciales
| Dato |
Almacenamiento |
Cifrado |
| API Key de Gemini |
context.secrets (SecretStorage de VS Code) |
Sí (cifrado por el SO) |
| Sesión de usuario |
context.globalState |
No (datos no sensibles) |
| Device ID |
context.globalState |
No (hash público) |
| License Key |
En sesión (globalState) |
No |
context.secrets usa el almacén de credenciales del sistema operativo (Windows Credential Manager, macOS Keychain, Linux Secret Service)
- Las API Keys nunca se almacenan en texto plano en archivos del proyecto
- Las credenciales de Google OAuth (client_id/secret) están embebidas en el código compilado (webpack bundle)
2.3 Comunicación de Red
| Destino |
Protocolo |
Propósito |
generativelanguage.googleapis.com |
HTTPS |
Generación de texto y embeddings |
accounts.google.com |
HTTPS |
OAuth login |
googleapis.com/oauth2 |
HTTPS |
Intercambio de tokens |
us-central1-haka-licencias-productos.cloudfunctions.net |
HTTPS |
Validación de licencias |
localhost:19284 |
HTTP (local) |
Callback OAuth (solo durante login) |
Toda comunicación externa usa HTTPS. No se realizan conexiones a servidores de terceros no listados.
3. Seguridad en el Uso de Inteligencia Artificial
3.1 Datos Enviados a Gemini
La extensión envía a la API de Gemini exclusivamente:
- Código capturado durante la grabación: Acciones del navegador (clicks, inputs, navegaciones)
- Contexto del framework: Reglas de generación y patrones de pasos existentes
- Consultas del chat: Preguntas del usuario sobre testing
Lo que NO se envía:
- Credenciales del usuario
- Datos personales
- Contenido de archivos del proyecto no relacionados con la grabación
- Variables de entorno
- Tokens de autenticación
3.2 Cumplimiento con Ley 21.719 (Protección de Datos Personales - Chile)
La Ley 21.719 de Protección de Datos Personales de Chile establece principios que Haka AI Studio respeta:
Principio de Finalidad
- Los datos procesados por la IA se usan exclusivamente para generar código de pruebas automatizadas
- No se almacenan datos personales de los usuarios finales de las aplicaciones testeadas
- Las grabaciones capturan selectores de elementos (XPath, roles ARIA), no datos ingresados por usuarios reales
Principio de Proporcionalidad
- Solo se envía a Gemini el código mínimo necesario para la generación
- El prompt se trunca a máximo 30.000 caracteres
- No se envían datos que no sean estrictamente necesarios para la tarea
Principio de Seguridad
- Comunicación cifrada (HTTPS/TLS) en todas las transmisiones
- API Keys almacenadas en el almacén seguro del sistema operativo
- No se persisten datos de grabación después de la generación
Principio de Temporalidad
- Las grabaciones son efímeras: se eliminan al cerrar la sesión de grabación
- Los archivos temporales (
.haka_recording_*.py) se eliminan automáticamente
- No existe almacenamiento permanente de datos procesados por la IA
Transferencia Internacional de Datos
- Los datos se procesan en servidores de Google (Gemini API) ubicados en EE.UU.
- Google cumple con estándares internacionales de protección de datos (SOC 2, ISO 27001)
- No se transfieren datos personales de terceros; solo código de automatización generado por el propio usuario
3.3 Retención de Datos por Google
Según la política de Google AI:
- Los datos enviados a la API de Gemini con API Key no se usan para entrenar modelos
- Google puede retener datos temporalmente para monitoreo de abuso (máximo 30 días)
- No se comparten datos con terceros
3.4 Mitigaciones Implementadas
| Riesgo |
Mitigación |
| Fuga de datos sensibles en prompts |
Truncamiento a 30K chars, filtrado de variables de entorno |
| Inyección de prompts |
Prompts estructurados con separadores claros |
| Almacenamiento de datos en tránsito |
Archivos temporales eliminados automáticamente |
| Acceso no autorizado a la IA |
Requiere API Key propia del usuario |
| Uso indebido de licencia |
Validación por dispositivo en cada apertura |
4. Consumo de Tokens y Costos
4.1 Modelo por Defecto
Gemini 2.0 Flash - Optimizado para velocidad y costo.
4.2 Estimación de Consumo por Operación
| Operación |
Tokens Input (aprox.) |
Tokens Output (aprox.) |
Total |
| Generación de test (grabación simple) |
3.000 - 8.000 |
1.500 - 4.000 |
~5.000 - 12.000 |
| Generación de test (con contexto framework) |
10.000 - 25.000 |
2.000 - 6.000 |
~12.000 - 31.000 |
| Generación dual Selenium (2 versiones) |
20.000 - 50.000 |
4.000 - 12.000 |
~24.000 - 62.000 |
| Chat (pregunta simple) |
1.000 - 3.000 |
500 - 2.000 |
~1.500 - 5.000 |
| Chat (con vectores de contexto) |
3.000 - 8.000 |
1.000 - 3.000 |
~4.000 - 11.000 |
| Embedding (por texto) |
50 - 200 |
N/A |
~50 - 200 |
4.3 Costos Estimados (Gemini 2.0 Flash)
Precios de referencia de Google AI (mayo 2025):
- Input: $0.10 por 1M tokens
- Output: $0.40 por 1M tokens
| Uso mensual estimado |
Costo aprox. |
| 50 generaciones de test/mes |
$0.15 - $0.50 USD |
| 200 generaciones de test/mes |
$0.60 - $2.00 USD |
| 500 generaciones + chat activo |
$1.50 - $5.00 USD |
El costo es extremadamente bajo gracias al uso de Gemini Flash. Un equipo de 5 QAs generando tests diariamente no superaría los $5 USD/mes.
4.4 Optimizaciones de Consumo
- Smart Truncate: Los prompts se recortan inteligentemente, eliminando contexto de framework antes que instrucciones críticas
- Búsqueda vectorial local: Los embeddings se almacenan localmente en JSON, evitando llamadas repetidas a la API
- Reutilización de pasos: Al detectar pasos existentes, se reduce la complejidad del prompt
- Compresión de eventos: En modo Selenium, los keystrokes intermedios se comprimen (solo se envía el valor final)
5. Datos Técnicos de la Extensión
5.1 Dependencias de Runtime
- Node.js 20+ (para ejecución de Playwright)
- Playwright (instalado por el usuario en su proyecto)
- Python 3.8+ (para ejecución de tests generados)
5.2 Permisos de la Extensión
La extensión requiere:
- Acceso a red (para Gemini API y validación de licencias)
- Acceso al sistema de archivos (para leer/escribir tests generados)
- Ejecución de procesos (para lanzar Playwright)
- Almacenamiento seguro (para API Keys)
5.3 Archivos Generados
| Archivo |
Ubicación |
Persistencia |
| Tests .feature |
Workspace del usuario |
Permanente |
| Steps .py |
Workspace del usuario |
Permanente |
| Localizadores .json |
Workspace del usuario |
Permanente |
| Grabación temporal |
Workspace (.haka_*) |
Se elimina automáticamente |
| Vectores del proyecto |
.haka-ai-studio/ |
Hasta que el usuario los elimine |
| Vectores del framework |
resources/vectors/ |
Incluidos en la extensión |
5.4 Navegadores Soportados
| Navegador |
Modo Playwright |
Modo Selenium |
| Chrome |
✅ (channel) |
✅ |
| Chromium |
✅ |
✅ |
| Firefox |
✅ |
✅ |
| WebKit |
✅ |
❌ |
| Edge |
✅ (channel) |
✅ |
6. Consideraciones de Privacidad para Clientes
6.1 Qué Datos Podrían Exponerse
Si un QA graba interacciones en un ambiente con datos reales:
- URLs visitadas se incluyen en el código capturado
- Textos visibles en la página pueden aparecer en selectores
- Valores ingresados en formularios se capturan como parte de la grabación
6.2 Recomendaciones
- Usar ambientes de prueba con datos ficticios para las grabaciones
- Revisar el código capturado antes de generar con IA (la extensión permite editar)
- No grabar en ambientes de producción con datos personales reales
- Configurar la API Key por proyecto si se requiere segregación de costos
6.3 Datos que Nunca Salen del Dispositivo
- Archivos del proyecto no relacionados con la grabación
- Historial de git
- Variables de entorno del sistema
- Credenciales de bases de datos
- Tokens de servicios externos
7. Auditoría y Trazabilidad
7.1 Logs de la Extensión
La extensión genera logs visibles en:
- Panel de "Log de Acciones" en la UI
- Output Channel de VS Code (
Haka AI Studio)
Los logs incluyen:
- Inicio/fin de grabaciones
- Acciones capturadas
- Resultado de generación con IA
- Errores de conexión
- Validaciones de licencia
7.2 No se Implementa
- No hay telemetría enviada a Haka Lab
- No hay tracking de uso
- No hay analytics
- No se reportan errores automáticamente a servidores externos
Haka Lab
Producto exclusivo - Todos los derechos reservados
- Soporte técnico: felipe.farias@hakalab.com
- Documentación interna: Confluence Haka Lab
- Repositorio: Privado (acceso solo equipo Haka Lab)
Documento generado para la versión 1.0.18 - Mayo 2025