UNPKG

estructura_automation

Version:

Paquete de estructura de automation de paguetodo

92 lines (77 loc) 3.42 kB
/* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable no-console */ /** * ======================================================================================== * GENERADOR DE CASOS DE PRUEBA A PARTIR DE ARCHIVOS GHERKIN - REFACTORIZADO * ---------------------------------------------------------------------------------------- * Este script orquesta la generación de documentos HTML con estructura de tarjetas * y breadcrumbs siguiendo la jerarquía: App → Módulo → Caso de Prueba → Pasos * * ARQUITECTURA REFACTORIZADA: * - test-scanner.cjs: Parsing y escaneo de archivos * - metadata-builder.cjs: Generación de metadata y estadísticas para los tests * - html-generator.cjs: Generación de HTML e interfaces * - generator.cjs: Llama a los helpers y ejecuta el generador * ======================================================================================== */ // Importaciones de módulos refactorizados const fs = require('fs'); const path = require('path'); // Helpers especializados const testScanner = require('./helpers/test-scanner.cjs'); const metadataBuilder = require('./helpers/metadata-builder.cjs'); const htmlGenerator = require('./helpers/html-generator.cjs'); // Configuración: Directorio base donde buscar apps y módulos const FEATURES_DIR = path.resolve(path.join(__dirname, '../../documentation')); const OUTPUT_FILE = path.resolve(path.join(__dirname, '../index.html')); const METADATA_FILE = path.resolve(path.join(__dirname, '../tests-metadata.json')); /** * Función principal que ejecuta el generador */ const main = () => { try { // 1. ESCANEAR Y PARSEAR archivos de prueba const hierarchicalData = testScanner.buildHierarchicalData(FEATURES_DIR); // Verificar que existan aplicaciones const appIds = Object.keys(hierarchicalData.apps); if (appIds.length === 0) { throw new Error('No se encontraron carpetas dentro de la carpeta documentation'); } // 2. GENERAR METADATA para sincronización externa const metadata = metadataBuilder.generateTestsMetadata(hierarchicalData); // 3. VALIDAR integridad de datos (opcional) const validation = metadataBuilder.validateHierarchicalData(hierarchicalData); if (!validation.isValid) { console.warn('⚠️ Advertencias de validación encontradas:'); validation.warnings.forEach(warning => console.warn(` - ${warning}`)); if (validation.errors.length > 0) { console.error('❌ Errores de validación encontrados:'); validation.errors.forEach(error => console.error(` - ${error}`)); } } // 4. GENERAR HTML interactivo const appId = appIds[0]; // Usar la primera aplicación disponible const app = hierarchicalData.apps[appId]; const html = htmlGenerator.generateHTML(app, { title: `Casos de Prueba - ${app.name}`, cssPath: 'styles/styles.css' }); // 5. GUARDAR archivos generados fs.writeFileSync(OUTPUT_FILE, html); fs.writeFileSync(METADATA_FILE, JSON.stringify(metadata, null, 2)); // 6. REPORTE final } catch (error) { throw new Error(`❌ Error en la generación: ${error.message}`); } }; // Ejecutar el script solo si es llamado directamente if (require.main === module) { main(); } // Exportar para uso como módulo module.exports = { main, FEATURES_DIR, OUTPUT_FILE, METADATA_FILE };