INVENTARIO DE STEPS POR CATEGORÍA - HAKALAB FRAMEWORK
=====================================================

Documento generado: Enero 2026
Versión Framework: 1.3.17+

Este documento proporciona un inventario detallado de todos los steps disponibles
en el framework, organizados por categoría funcional.

RESUMEN EJECUTIVO
=================

Total de Steps en el Framework: 1,477+

Distribución por Categoría:
- Frontend (Web UI):        962 steps (65.1%)
- Utilidades:               195 steps (13.2%)
- APIs REST:                129 steps (8.7%)
- Archivos y Datos:         124 steps (8.4%)
- GenAI (Inteligencia Artificial): 39 steps (2.6%)
- Base de Datos:             28 steps (1.9%)

NOTA: Cada step tiene múltiples decoradores (inglés/español), por lo que el número
real de funciones es aproximadamente la mitad, pero cada una es accesible en ambos idiomas.


================================================================================
1. FRONTEND (WEB UI) - 962 STEPS
================================================================================

Categoría más grande del framework, cubre todas las interacciones con aplicaciones web.

1.1 NAVEGACIÓN (navigation_steps.py)
-------------------------------------
Funcionalidad: Navegación entre páginas, URLs, historial del navegador
Ejemplos:
- navego a "https://ejemplo.com"
- voy hacia atrás en el navegador
- recargo la página
- navego a la URL almacenada en "${url_variable}"

1.2 INTERACCIÓN (interaction_steps.py)
---------------------------------------
Funcionalidad: Clicks, inputs, selección de elementos
Ejemplos:
- hago click en el elemento "Botón Login" con identificador "$.LOGIN.btn_submit"
- ingreso "texto" en el campo "Email" con identificador "$.FORM.input_email"
- selecciono la opción "Opción 1" del dropdown "País" con identificador "$.FORM.select_country"
- hago doble click en el elemento "Item" con identificador "$.LIST.item"

1.3 VALIDACIONES/ASSERTIONS (assertion_steps.py)
-------------------------------------------------
Funcionalidad: Verificación de textos, elementos, estados
Ejemplos:
- debería ver el texto "Bienvenido"
- el elemento "Botón" debería estar visible con identificador "$.HOME.btn_action"
- el campo "Email" debería tener el valor "test@ejemplo.com" con identificador "$.FORM.input_email"
- la URL actual debería contener "/dashboard"
- el título de la página debería ser "Mi Aplicación"

1.4 ELEMENTOS WEB (web_elements_steps.py)
------------------------------------------
Funcionalidad: Manipulación avanzada de elementos DOM
Ejemplos:
- obtengo el atributo "href" del elemento "Link" con identificador "$.NAV.link_home"
- verifico que el elemento "Imagen" tiene la clase "active" con identificador "$.GALLERY.img_main"
- cuento los elementos "Items" con identificador "$.LIST.items" y guardo en "total_items"

1.5 FORMULARIOS (form_handling_steps.py)
-----------------------------------------
Funcionalidad: Manejo completo de formularios
Ejemplos:
- lleno el formulario con los datos del archivo "datos_usuario.json"
- limpio el campo "Búsqueda" con identificador "$.HEADER.input_search"
- marco el checkbox "Acepto términos" con identificador "$.FORM.chk_terms"
- subo el archivo "documento.pdf" en el campo "Adjunto" con identificador "$.FORM.file_upload"

1.6 VENTANAS Y PESTAÑAS (window_steps.py)
------------------------------------------
Funcionalidad: Gestión de múltiples ventanas/tabs
Ejemplos:
- cambio a la nueva ventana
- cambio a la ventana con título "Google Calendar"
- cambio a la ventana con url que contiene "calendar.google.com"
- cierro la ventana actual
- verifico que hay 2 ventanas abiertas

1.7 ESPERAS (wait_steps.py)
----------------------------
Funcionalidad: Esperas inteligentes y sincronización
Ejemplos:
- espero 3 segundos
- espero hasta que el elemento "Loader" desaparezca con identificador "$.COMMON.loader"
- espero hasta que el elemento "Mensaje" sea visible con identificador "$.ALERT.message"
- espero hasta que la URL contenga "/success"

1.8 SCROLL (scroll_steps.py)
-----------------------------
Funcionalidad: Desplazamiento en la página
Ejemplos:
- hago scroll hasta el elemento "Footer" con identificador "$.PAGE.footer"
- hago scroll hacia abajo 500 píxeles
- hago scroll hasta el final de la página
- hago scroll hasta el inicio de la página

1.9 DRAG & DROP (drag_drop_steps.py)
-------------------------------------
Funcionalidad: Arrastrar y soltar elementos
Ejemplos:
- arrastro el elemento "Item 1" y lo suelto en "Zona Drop" con identificadores "$.LIST.item_1" y "$.DROP.zone"
- arrastro el elemento "Archivo" con identificador "$.FILES.file_1" 100 píxeles a la derecha

1.10 TECLADO Y MOUSE (keyboard_mouse_steps.py)
-----------------------------------------------
Funcionalidad: Eventos de teclado y mouse avanzados
Ejemplos:
- presiono la tecla "Enter"
- presiono las teclas "Control+C"
- muevo el mouse al elemento "Botón" con identificador "$.NAV.btn_menu"
- hago hover sobre el elemento "Tooltip" con identificador "$.INFO.tooltip"

1.11 MODALES (modal_steps.py)
------------------------------
Funcionalidad: Interacción con ventanas modales
Ejemplos:
- espero a que aparezca el modal "Confirmación" con identificador "$.MODAL.confirm"
- cierro el modal "Alerta" con identificador "$.MODAL.alert"
- verifico que el modal "Error" está visible con identificador "$.MODAL.error"

1.12 IFRAMES (iframe_steps.py)
-------------------------------
Funcionalidad: Trabajo con iframes
Ejemplos:
- cambio al frame "Video" con identificador "$.FRAMES.video_frame"
- salgo del frame
- verifico que estoy en el frame principal

1.13 TABLAS (table_steps.py)
-----------------------------
Funcionalidad: Extracción y validación de datos de tablas
Ejemplos:
- extraigo los datos de la tabla "Usuarios" con identificador "$.TABLES.users_table"
- verifico que la tabla "Productos" tiene 10 filas con identificador "$.TABLES.products"
- obtengo el valor de la celda fila 2 columna 3 de la tabla "Datos" con identificador "$.TABLES.data"

1.14 COMBOBOX (combobox_steps.py + combobox_validation_steps.py)
-----------------------------------------------------------------
Funcionalidad: Manejo avanzado de dropdowns y combobox
Ejemplos:
- selecciono la opción "Chile" del combobox "País" con identificador "$.FORM.cmb_country"
- verifico que el combobox "Estado" tiene la opción "Activo" con identificador "$.FORM.cmb_status"
- obtengo todas las opciones del combobox "Categoría" con identificador "$.FORM.cmb_category"

1.15 CONTROL DEL NAVEGADOR (browser_control_steps.py + browser_advanced_config_steps.py)
-----------------------------------------------------------------------------------------
Funcionalidad: Configuración y control del navegador
Ejemplos:
- maximizo la ventana del navegador
- establezco el tamaño de ventana a 1920x1080
- tomo una captura de pantalla y la guardo como "evidencia.png"
- limpio las cookies del navegador
- establezco la geolocalización a latitud 40.7128 longitud -74.0060

1.16 RESPONSIVE (responsive_steps.py)
--------------------------------------
Funcionalidad: Testing responsive y dispositivos móviles
Ejemplos:
- establezco el viewport a 375x667 (iPhone)
- emulo el dispositivo "iPhone 12"
- verifico que el elemento "Menu Mobile" es visible en mobile con identificador "$.NAV.mobile_menu"

1.17 ACCESIBILIDAD (accessibility_steps.py)
--------------------------------------------
Funcionalidad: Validaciones de accesibilidad
Ejemplos:
- verifico que el elemento "Imagen" tiene atributo alt con identificador "$.CONTENT.img_hero"
- verifico que el contraste de color es adecuado en el elemento "Texto" con identificador "$.CONTENT.text"
- verifico que la página es navegable con teclado

1.18 AVANZADOS (advanced_steps.py + advanced_input_steps.py)
-------------------------------------------------------------
Funcionalidad: Funcionalidades avanzadas y simulación humana
Ejemplos:
- escribo "texto" con velocidad humana en el campo "Búsqueda" con identificador "$.HEADER.input_search"
- escribo "email@ejemplo.com" con errores simulados en el campo "Email" con identificador "$.FORM.input_email"
- ejecuto JavaScript "document.querySelector('.btn').click()"
- intercepto la petición a "/api/users" y la modifico

1.19 RENDIMIENTO (performance_steps.py)
----------------------------------------
Funcionalidad: Medición de tiempos y rendimiento
Ejemplos:
- verifico que la página carga en menos de "3" segundos
- verifico que la imagen "Logo" carga en menos de "2" segundos con identificador "$.HEADER.img_logo"
- mido y guardo el tiempo de carga de página en la variable "load_time"


================================================================================
2. APIS REST - 129 STEPS
================================================================================

Testing completo de APIs REST con validaciones avanzadas.

2.1 API TESTING (api_testing_steps.py)
---------------------------------------
Funcionalidad: Peticiones HTTP, autenticación, headers
Ejemplos:
- realizo una petición GET a "${API_BASE_URL}/users"
- realizo una petición POST a "${API_BASE_URL}/users" con el payload del archivo "create_user.json"
- establezco el header "Authorization" con valor "Bearer ${token}"
- el código de estado de la respuesta debería ser 200
- el tiempo de respuesta debería ser menor a 2000 milisegundos
- guardo el valor del campo "id" de la respuesta en la variable "user_id"

2.2 VALIDACIÓN JSON (api_json_validation_steps.py)
---------------------------------------------------
Funcionalidad: Validaciones avanzadas de respuestas JSON
Ejemplos:
- el campo "email" de la respuesta debería ser "test@ejemplo.com"
- el campo "status" de la respuesta debería contener "active"
- el campo "items" de la respuesta debería ser una lista
- el campo "data.user.age" de la respuesta debería ser mayor que 18
- comparo la respuesta con el archivo esperado "expected_user.json"
- el campo "users" de la respuesta debería tener 10 elementos


================================================================================
3. BASE DE DATOS - 28 STEPS
================================================================================

Conexión y validación de bases de datos SQL.

3.1 DATABASE (database_steps.py)
---------------------------------
Funcionalidad: Conexión, queries, validaciones
Ejemplos:
- me conecto a la base de datos PostgreSQL con host "localhost" puerto 5432 database "testdb" user "admin" password "pass123"
- ejecuto la query "SELECT * FROM users WHERE email = 'test@ejemplo.com'"
- el resultado de la query debería tener 1 fila
- el campo "name" del resultado debería ser "Juan Pérez"
- guardo el valor del campo "id" del resultado en la variable "user_id"
- cierro la conexión a la base de datos


================================================================================
4. ARCHIVOS Y DATOS - 124 STEPS
================================================================================

Procesamiento de archivos CSV, PDF, Excel y extracción de datos.

4.1 ARCHIVOS (file_steps.py)
-----------------------------
Funcionalidad: Lectura, escritura, validación de archivos
Ejemplos:
- leo el archivo "datos.txt" y guardo su contenido en la variable "contenido"
- escribo "Hola Mundo" en el archivo "salida.txt"
- verifico que el archivo "documento.pdf" existe
- elimino el archivo "temporal.txt"
- copio el archivo "origen.txt" a "destino.txt"

4.2 CSV (csv_file_steps.py)
----------------------------
Funcionalidad: Procesamiento completo de archivos CSV
Ejemplos:
- cargo el archivo CSV "usuarios.csv" en la variable "datos_csv"
- filtro el CSV "datos_csv" por la columna "edad" mayor que 18 y guardo en "adultos"
- obtengo la fila 5 del CSV "datos_csv" y la guardo en "fila_5"
- cuento las filas del CSV "datos_csv" y guardo en "total_filas"
- exporto el CSV "datos_csv" al archivo "resultado.csv"

4.3 PDF (pdf_steps.py)
----------------------
Funcionalidad: Extracción de texto de PDFs
Ejemplos:
- extraigo el texto del PDF "documento.pdf" y lo guardo en "texto_pdf"
- verifico que el PDF "factura.pdf" contiene el texto "Total: $1,000"
- extraigo el texto de la página 2 del PDF "manual.pdf" y lo guardo en "pagina_2"

4.4 EXTRACCIÓN DE DATOS (data_extraction_steps.py)
---------------------------------------------------
Funcionalidad: Extracción de datos de elementos web
Ejemplos:
- extraigo el texto del elemento "Título" con identificador "$.CONTENT.title" y lo guardo en "titulo"
- extraigo todos los textos de los elementos "Items" con identificador "$.LIST.items" y los guardo en "lista_items"
- extraigo la tabla "Productos" con identificador "$.TABLES.products" y la guardo en "datos_productos"

4.5 OCR (ocr_steps.py)
----------------------
Funcionalidad: Reconocimiento óptico de caracteres
Ejemplos:
- extraigo el texto de la imagen "captura.png" usando OCR y lo guardo en "texto_imagen"
- verifico que la imagen "documento.png" contiene el texto "Aprobado"
- extraigo el texto del elemento "Canvas" con identificador "$.CANVAS.drawing" usando OCR


================================================================================
5. GENAI (INTELIGENCIA ARTIFICIAL) - 39 STEPS
================================================================================

Validación semántica y evaluación con modelos de IA.

5.1 EVALUACIÓN CON GEMINI (genai_evaluation_steps.py)
------------------------------------------------------
Funcionalidad: Evaluación de respuestas con Google Gemini como juez
Ejemplos:
- el contexto de reglas de negocio "politicas" está cargado desde el archivo "contexts/politicas.txt"
- Gemini genera la respuesta para el prompt "¿Cuál es la política de devoluciones?"
- el Juez Gemini debe validar la respuesta con un umbral mínimo de 0.85
- guardo la evaluación del Juez en el archivo "evaluacion.json"
- el score de la última evaluación debe ser mayor o igual a 0.80

5.2 GEMINI AVANZADO (genai_advanced_steps.py)
----------------------------------------------
Funcionalidad: Funcionalidades avanzadas de Gemini
Ejemplos:
- genero contenido con Gemini usando el prompt "Escribe un resumen de..."
- analizo el sentimiento del texto "Me encanta este producto" con Gemini
- clasifico el texto "Quiero devolver mi pedido" en categorías con Gemini

5.3 VALIDACIÓN SEMÁNTICA (semantic_validation_steps.py)
--------------------------------------------------------
Funcionalidad: Comparación de textos por significado
Ejemplos:
- el texto "Hola mundo" debería ser semánticamente similar a "Saludos al planeta"
- el texto "Error de conexión" debería ser semánticamente similar a "Fallo de red" con umbral 0.75
- comparo semánticamente el texto "${respuesta}" con "Operación exitosa"

5.4 SEMÁNTICA AVANZADA (semantic_advanced_steps.py)
----------------------------------------------------
Funcionalidad: Análisis semántico avanzado
Ejemplos:
- calculo la similitud semántica entre "texto1" y "texto2" y la guardo en "similitud"
- encuentro el texto más similar a "búsqueda" en la lista "opciones" y lo guardo en "mejor_match"

5.5 NLP AVANZADO (semantic_nlp_steps.py)
-----------------------------------------
Funcionalidad: Procesamiento de lenguaje natural
Ejemplos:
- extraigo las entidades del texto "Juan García visitó Madrid" y las guardo en "entidades"
- genero un resumen del texto "Texto largo..." y lo guardo en "resumen"
- traduzco el texto "Hello world" de "en" a "es" y lo guardo en "traduccion"
- analizo la toxicidad del texto "Comentario..." y guardo el resultado en "es_toxico"
- extraigo las palabras clave del texto "Artículo..." y las guardo en "keywords"


================================================================================
6. UTILIDADES - 195 STEPS
================================================================================

Funcionalidades transversales y de soporte.

6.1 VARIABLES (variable_steps.py)
----------------------------------
Funcionalidad: Generación y manipulación de variables dinámicas
Ejemplos:
- genero una variable "nombre" con texto aleatorio de 10 caracteres
- genero una variable "email" con email aleatorio
- genero una variable "telefono" con teléfono aleatorio formato "+56912345678"
- genero una variable "fecha" con fecha actual en formato "%Y-%m-%d"
- genero una variable "uuid" con UUID aleatorio
- establezco la variable "ambiente" con valor "produccion"
- imprimo en consola "El valor es: ${variable}"

6.2 TIMING (timing_steps.py)
-----------------------------
Funcionalidad: Cronómetros y medición de tiempos
Ejemplos:
- inicio el cronómetro "operacion_critica"
- detengo el cronómetro "operacion_critica" y guardo el tiempo en "tiempo_operacion"
- verifico que el cronómetro "operacion_critica" es menor a 5 segundos
- espero 2 segundos
- espero un tiempo aleatorio entre 1 y 3 segundos

6.3 ENVIRONMENT (environment_steps.py)
---------------------------------------
Funcionalidad: Variables de entorno y configuración
Ejemplos:
- cargo las variables de entorno del archivo ".env"
- obtengo la variable de entorno "API_KEY" y la guardo en "api_key"
- establezco la variable de entorno "ENVIRONMENT" con valor "staging"

6.4 VALIDACIONES (validation_steps.py)
---------------------------------------
Funcionalidad: Validaciones genéricas
Ejemplos:
- verifico que la variable "edad" es mayor que 18
- verifico que la variable "email" contiene "@"
- verifico que la variable "lista" tiene 5 elementos
- verifico que la variable "status" es igual a "active"

6.5 EMAIL (email_steps.py)
---------------------------
Funcionalidad: Envío y validación de emails
Ejemplos:
- envío un email a "destinatario@ejemplo.com" con asunto "Test" y cuerpo "Mensaje de prueba"
- verifico que recibí un email con asunto "Confirmación"
- extraigo el código de verificación del último email y lo guardo en "codigo"


================================================================================
7. INTEGRACIONES - 12 STEPS
================================================================================

Integraciones con herramientas externas.

7.1 JIRA/XRAY (jira_xray_steps.py)
-----------------------------------
Funcionalidad: Integración con Jira y Xray Cloud
Ejemplos:
- creo un Test Execution en Xray para el Test Plan "PROD-123"
- actualizo el estado del test "PROD-456" a "PASS" en Xray
- adjunto el reporte HTML al issue "PROD-789" en Jira
- vinculo el Test Execution a la Historia de Usuario "PROD-100"

7.2 SALESFORCE (salesforce_steps.py)
-------------------------------------
Funcionalidad: Integración con Salesforce
Ejemplos:
- me conecto a Salesforce con username "user@ejemplo.com"
- creo un Lead en Salesforce con los datos del archivo "lead_data.json"
- busco el Account "Empresa XYZ" en Salesforce


================================================================================
ESTADÍSTICAS DETALLADAS
================================================================================

FRONTEND (962 steps) - Desglose:
- Navegación: ~30 steps
- Interacción: ~80 steps
- Validaciones: ~150 steps
- Elementos Web: ~60 steps
- Formularios: ~70 steps
- Ventanas: ~25 steps
- Esperas: ~40 steps
- Scroll: ~20 steps
- Drag & Drop: ~15 steps
- Teclado/Mouse: ~50 steps
- Modales: ~20 steps
- Iframes: ~15 steps
- Tablas: ~45 steps
- Combobox: ~50 steps
- Control Navegador: ~80 steps
- Responsive: ~30 steps
- Accesibilidad: ~25 steps
- Avanzados: ~100 steps
- Rendimiento: ~57 steps

APIS (129 steps) - Desglose:
- Peticiones HTTP: ~60 steps
- Validación JSON: ~69 steps

BASE DE DATOS (28 steps) - Desglose:
- Conexión y Queries: ~28 steps

ARCHIVOS Y DATOS (124 steps) - Desglose:
- Archivos: ~30 steps
- CSV: ~50 steps
- PDF: ~15 steps
- Extracción: ~20 steps
- OCR: ~9 steps

GENAI (39 steps) - Desglose:
- Evaluación Gemini: ~15 steps
- Gemini Avanzado: ~5 steps
- Validación Semántica: ~8 steps
- Semántica Avanzada: ~4 steps
- NLP: ~7 steps

UTILIDADES (195 steps) - Desglose:
- Variables: ~80 steps
- Timing: ~40 steps
- Environment: ~20 steps
- Validaciones: ~40 steps
- Email: ~15 steps

INTEGRACIONES (12 steps) - Desglose:
- Jira/Xray: ~8 steps
- Salesforce: ~4 steps


================================================================================
NOTAS IMPORTANTES
================================================================================

1. MULTIIDIOMA:
   Cada step tiene decoradores en inglés y español, por lo que puedes usar:
   - "I navigate to" o "navego a"
   - "I click on" o "hago click en"
   - "I should see" o "debería ver"

2. VARIABLES DINÁMICAS:
   Todos los steps soportan interpolación de variables usando ${variable_name}

3. PAGE OBJECT MODEL:
   Los identificadores usan el formato $.ARCHIVO.elemento para centralizar selectores

4. EXTENSIBILIDAD:
   Puedes crear tus propios steps personalizados siguiendo las reglas de REGLAS_STEPS.md

5. DOCUMENTACIÓN:
   Cada archivo de steps tiene documentación detallada con ejemplos

6. ACTUALIZACIONES:
   Este inventario se actualiza con cada nueva versión del framework


================================================================================
CÓMO USAR ESTE INVENTARIO
================================================================================

1. BUSCAR FUNCIONALIDAD:
   - Identifica la categoría (Frontend, API, etc.)
   - Revisa los subgrupos dentro de la categoría
   - Consulta la documentación específica del archivo

2. EJEMPLOS PRÁCTICOS:
   - Revisa los archivos .feature en hakalab_framework/examples/
   - Cada ejemplo muestra steps reales en contexto

3. DOCUMENTACIÓN DETALLADA:
   - GUIA_COMPLETA_STEPS.txt: Referencia completa de todos los steps
   - GUIA_*_NotebookLM.txt: Guías específicas por tema

4. CREAR STEPS PERSONALIZADOS:
   - Sigue las reglas en REGLAS_STEPS.md
   - Evita ambigüedad en decoradores
   - Usa nombres descriptivos


================================================================================
CONTACTO Y SOPORTE
================================================================================

- Repositorio: https://github.com/pipefariashaka/haka-playwright-engine
- PyPI: https://pypi.org/project/haka-playwright-engine/
- Email: felipe.farias@hakalab.com
- Documentación: Incluida en hakalab_framework/documentacion/


================================================
Documento generado automáticamente
Hakalab Framework v1.3.17+
Fecha: Enero 2026
================================================
