GUÍA DE ARCHIVOS Y DATOS - HAKALAB FRAMEWORK
=============================================

Esta guía explica cómo trabajar con archivos y datos en tus pruebas automatizadas.

ÍNDICE
======
1. Manejo de Archivos
2. Procesamiento de CSV
3. Manejo de JSON
4. Descarga de Archivos
5. Ejemplos Prácticos

=============================================

1. MANEJO DE ARCHIVOS
====================

Crear Archivo:
- creo archivo de prueba "test.txt" con contenido "Contenido de prueba"
- I create test file "test.txt" with content "Test content"

Eliminar Archivo:
- elimino archivo de prueba "temp.txt"
- I delete test file "temp.txt"

Verificar Existencia:
- verifico que el archivo "output.txt" existe en el directorio "downloads"
- I verify that file "output.txt" exists in directory "downloads"

Obtener Tamaño:
- obtengo el tamaño del archivo "data.csv" y lo guardo en la variable "file_size"
- I get size of file "data.csv" and store it in variable "file_size"

=============================================

2. PROCESAMIENTO DE CSV
======================

Cargar CSV:
- cargo el archivo CSV "data/empleados.csv" en la variable "empleados"
- I load CSV file "data/empleados.csv" into variable "empleados"

Filtrar CSV:
- filtro el CSV "empleados" donde "departamento" contiene "Desarrollo" y guardo como "desarrolladores"
- I filter CSV "empleados" where "departamento" contains "Desarrollo" and save as "desarrolladores"

Ordenar CSV:
- ordeno el CSV "empleados" por columna "salario" de forma "descendente" y guardo como "ordenados"
- I sort CSV "empleados" by column "salario" in "descending" order and save as "ordenados"

Buscar en CSV:
- busco en el CSV "empleados" el valor "Desarrollo" en la columna "departamento"
- I search in CSV "empleados" for value "Desarrollo" in column "departamento"

Obtener Valor:
- obtengo el valor de la fila 0 columna "nombre" del CSV "empleados" y lo guardo en "primer_empleado"
- I get value from row 0 column "nombre" of CSV "empleados" and store in "primer_empleado"

Exportar CSV:
- exporto el CSV "empleados_filtrados" a "output/resultado.csv"
- I export CSV "empleados_filtrados" to "output/resultado.csv"

Resumen CSV:
- muestro un resumen del CSV "empleados"
- I show summary of CSV "empleados"

=============================================

3. MANEJO DE JSON
================

Cargar JSON:
- cargo el archivo JSON "config.json" en la variable "configuracion"
- I load JSON file "config.json" into variable "configuracion"

Obtener Valor JSON:
- obtengo el valor "user.name" del JSON "configuracion" y lo guardo en la variable "nombre_usuario"
- I get value "user.name" from JSON "configuracion" and store in variable "nombre_usuario"

Establecer Valor JSON:
- establezco el valor "user.email" del JSON "configuracion" con "nuevo@example.com"
- I set value "user.email" in JSON "configuracion" to "nuevo@example.com"

Validar JSON:
- verifico que el JSON "configuracion" es válido
- I verify that JSON "configuracion" is valid
- verifico que el JSON "configuracion" tiene el campo "user"
- I verify that JSON "configuracion" has field "user"

Exportar JSON:
- exporto el JSON "configuracion" a "output/config.json"
- I export JSON "configuracion" to "output/config.json"

=============================================

4. DESCARGA DE ARCHIVOS
======================

Iniciar Descarga:
- inicio descarga haciendo click en el elemento "download_btn" con identificador "#download-button"
- I start download by clicking element "download_btn" with identifier "#download-button"

Esperar Descarga:
- espero a que complete la descarga
- I wait for download to complete

Guardar Descarga:
- guardo la descarga como "report.pdf"
- I save download as "report.pdf"

Verificar Descarga:
- verifico que existe el archivo descargado
- I verify that downloaded file exists
- verifico que el nombre del archivo descargado es "data.xlsx"
- I verify that downloaded file name is "data.xlsx"
- verifico que el tamaño del archivo descargado es mayor a "1000" bytes
- I verify that downloaded file size is greater than "1000" bytes

Validar Contenido:
- verifico que el archivo descargado contiene el texto "Total:"
- I verify that downloaded file contains text "Total:"
- verifico que la descarga es JSON válido
- I verify that download is valid JSON
- verifico que la descarga es CSV válido con "name,email,phone" columnas
- I verify that download is valid CSV with "name,email,phone" columns

=============================================

5. EJEMPLOS PRÁCTICOS
=====================

Ejemplo 1: Procesamiento de CSV

Feature: Procesamiento de datos CSV

  Scenario: Cargar y filtrar datos
    # Cargar CSV
    Given cargo el archivo CSV "test_data/empleados.csv" en la variable "empleados"
    
    # Mostrar resumen
    When muestro un resumen del CSV "empleados"
    
    # Filtrar datos
    When filtro el CSV "empleados" donde "departamento" contiene "Desarrollo" y guardo como "desarrolladores"
    
    # Ordenar datos
    When ordeno el CSV "desarrolladores" por columna "salario" de forma "descendente" y guardo como "dev_ordenados"
    
    # Obtener primer elemento
    When obtengo el valor de la fila 0 columna "nombre" del CSV "dev_ordenados" y lo guardo en "mejor_dev"
    
    # Exportar resultado
    When exporto el CSV "dev_ordenados" a "output/desarrolladores.csv"
    
    # Verificar resultado
    Then verifico que el archivo "desarrolladores.csv" existe en el directorio "output"

Ejemplo 2: Descarga y Validación

Feature: Descarga y validación de archivos

  Scenario: Descargar y validar reporte
    Given voy a la url "https://example.com/reports"
    
    # Descargar archivo
    When inicio descarga haciendo click en el elemento "download_btn" con identificador "#download-report"
    And espero a que complete la descarga
    And guardo la descarga como "report.xlsx"
    
    # Verificar descarga
    Then verifico que existe el archivo descargado
    And verifico que el nombre del archivo descargado es "report.xlsx"
    And verifico que el tamaño del archivo descargado es mayor a "1000" bytes
    
    # Procesar archivo
    When cargo el archivo CSV "report.xlsx" en la variable "datos_reporte"
    Then muestro un resumen del CSV "datos_reporte"

Ejemplo 3: Manejo de JSON

Feature: Configuración con JSON

  Scenario: Cargar y usar configuración
    # Cargar configuración
    Given cargo el archivo JSON "config/app-config.json" en la variable "config"
    
    # Obtener valores
    When obtengo el valor "database.host" del JSON "config" y lo guardo en la variable "db_host"
    And obtengo el valor "database.port" del JSON "config" y lo guardo en la variable "db_port"
    
    # Usar valores en prueba
    When voy a la url "https://" + la variable "db_host" + ":" + la variable "db_port"
    
    # Validar JSON
    Then verifico que el JSON "config" es válido
    And verifico que el JSON "config" tiene el campo "database"

=============================================

CONCLUSIÓN

El manejo de archivos y datos es fundamental para crear pruebas automatizadas 
robustas. El framework proporciona herramientas completas para trabajar con 
CSV, JSON y otros formatos de datos.

=============================================
Documento generado automáticamente - Hakalab Framework v1.3.0
Guía de Archivos y Datos
Fecha: Enero 2026
=============================================
