import test from 'node:test'; import assert from 'node:assert'; import { requireCommonJS } from '../_helpers/commonjs-bridge.js'; /** * TESTS PRODUCTION WORKFLOW * Test du workflow production rĂ©el avec Google Sheets */ test('Production Workflow: handleFullWorkflow avec rowNumber 2', { timeout: 60000 }, async () => { console.log('🎯 Test Production Workflow - DĂ©marrage...'); const { handleFullWorkflow } = requireCommonJS('Main'); // Test avec les paramĂštres production rĂ©els const productionData = { rowNumber: 2, source: 'production' }; console.log('📊 DonnĂ©es de test:', productionData); try { const result = await handleFullWorkflow(productionData); // VĂ©rifications de base assert.ok(result, 'Le workflow doit retourner un rĂ©sultat'); console.log('✅ Workflow production exĂ©cutĂ© avec succĂšs'); // Log du rĂ©sultat pour debug console.log('📋 RĂ©sultat workflow:', { type: typeof result, keys: result && typeof result === 'object' ? Object.keys(result) : 'N/A' }); } catch (error) { console.error('❌ Erreur workflow production:', error.message); console.error('Stack:', error.stack); throw error; } }); test('Production Workflow: ConnectivitĂ© Google Sheets', { timeout: 30000 }, async () => { console.log('🔗 Test ConnectivitĂ© Google Sheets...'); const { readInstructionsData } = requireCommonJS('BrainConfig'); try { const data = await readInstructionsData(2); assert.ok(data, 'Les donnĂ©es Google Sheets doivent ĂȘtre disponibles'); assert.ok(data.slug || data.t0 || data.mc0, 'Les donnĂ©es doivent contenir au moins un champ'); console.log('✅ Connexion Google Sheets OK'); console.log('📊 DonnĂ©es rĂ©cupĂ©rĂ©es:', { slug: data.slug ? 'OK' : 'MANQUE', t0: data.t0 ? 'OK' : 'MANQUE', mc0: data.mc0 ? 'OK' : 'MANQUE' }); } catch (error) { console.error('❌ Erreur connexion Google Sheets:', error.message); throw error; } }); test('Production Workflow: Test personnalitĂ© alĂ©atoire', { timeout: 20000 }, async () => { console.log('🎭 Test PersonnalitĂ© AlĂ©atoire...'); const { getPersonalities, selectPersonalityWithAI } = requireCommonJS('BrainConfig'); try { const personalities = await getPersonalities(); assert.ok(Array.isArray(personalities), 'Les personnalitĂ©s doivent ĂȘtre un array'); assert.ok(personalities.length > 0, 'Il doit y avoir des personnalitĂ©s'); console.log(`✅ ${personalities.length} personnalitĂ©s chargĂ©es`); // Test sĂ©lection avec AI const selected = await selectPersonalityWithAI('test', 'test', personalities); assert.ok(selected, 'Une personnalitĂ© doit ĂȘtre sĂ©lectionnĂ©e'); assert.ok(selected.nom, 'La personnalitĂ© doit avoir un nom'); console.log(`✅ PersonnalitĂ© sĂ©lectionnĂ©e: ${selected.nom}`); } catch (error) { console.error('❌ Erreur personnalitĂ©s:', error.message); throw error; } }); test('Production Workflow: Test LLM connectivity', { timeout: 25000 }, async () => { console.log('đŸ€– Test ConnectivitĂ© LLM...'); const { testLLMManager } = requireCommonJS('LLMManager'); try { await testLLMManager(); console.log('✅ LLM connectivity OK'); } catch (error) { console.error('❌ Erreur LLM connectivity:', error.message); // Ne pas faire Ă©chouer le test si juste les LLMs sont down console.log('⚠ LLM connectivity failed - continuing test suite'); } }); test('Production Workflow: Pipeline modulaire complet', { timeout: 90000 }, async () => { console.log('🔄 Test Pipeline Modulaire Complet...'); const { handleModularWorkflow } = requireCommonJS('Main'); const config = { rowNumber: 2, source: 'test_production_pipeline', selectiveStack: 'lightEnhancement', adversarialMode: 'none', humanSimulationMode: 'none', patternBreakingMode: 'none', saveIntermediateSteps: false }; try { const result = await handleModularWorkflow(config); assert.ok(result, 'Le pipeline modulaire doit retourner un rĂ©sultat'); console.log('✅ Pipeline modulaire exĂ©cutĂ© avec succĂšs'); } catch (error) { console.error('❌ Erreur pipeline modulaire:', error.message); throw error; } });