/** * Test Simple - Logique de Propriétés d'Étapes * Auteur : Dom, Alice, Kiro - 12 janvier 2026 * * Ce script teste la logique de base pour identifier le problème. */ // Configuration des paramètres (copie simplifiée) const stepParametersConfig = { click: [ { name: 'target', label: 'Élément cible', type: 'visual', required: true }, { name: 'clickType', label: 'Type de clic', type: 'select', defaultValue: 'left' }, ], type: [ { name: 'target', label: 'Champ de saisie', type: 'visual', required: true }, { name: 'text', label: 'Texte à saisir', type: 'text', required: true }, { name: 'clearFirst', label: 'Vider le champ d\'abord', type: 'boolean', defaultValue: true }, ], wait: [ { name: 'duration', label: 'Durée (secondes)', type: 'number', required: true, defaultValue: 1 }, ], condition: [ { name: 'condition', label: 'Condition', type: 'text', required: true }, ], extract: [ { name: 'target', label: 'Élément source', type: 'visual', required: true }, { name: 'attribute', label: 'Attribut à extraire', type: 'select', defaultValue: 'text' }, ], scroll: [ { name: 'direction', label: 'Direction', type: 'select', defaultValue: 'down' }, { name: 'amount', label: 'Quantité (pixels)', type: 'number', defaultValue: 300 }, ], navigate: [ { name: 'url', label: 'URL de destination', type: 'text', required: true }, ], screenshot: [ { name: 'filename', label: 'Nom du fichier', type: 'text' }, ], }; // Fonction de test (copie de PropertiesPanel) function getParameterConfig(selectedStep) { console.log('🔍 getParameterConfig appelée avec:', selectedStep); if (!selectedStep) { console.log('❌ selectedStep est null/undefined'); return []; } console.log('🔍 selectedStep.type:', selectedStep.type); console.log('🔍 Type de selectedStep.type:', typeof selectedStep.type); console.log('🔍 Clés disponibles dans stepParametersConfig:', Object.keys(stepParametersConfig)); const config = stepParametersConfig[selectedStep.type]; console.log('🔍 Configuration trouvée:', config); console.log('🔍 Longueur de la configuration:', config ? config.length : 0); const result = config || []; console.log('✅ Résultat final:', result); return result; } // Tests console.log('🚀 Début des tests de logique de propriétés d\'étapes'); console.log('=' .repeat(60)); const testSteps = [ { id: 'test1', type: 'click', name: 'Test Click' }, { id: 'test2', type: 'type', name: 'Test Type' }, { id: 'test3', type: 'wait', name: 'Test Wait' }, { id: 'test4', type: 'invalid', name: 'Test Invalid' }, { id: 'test5', type: 'click_anchor', name: 'Test VWB Click' }, // Action VWB ]; testSteps.forEach((step, index) => { console.log(`\n🧪 Test ${index + 1}: ${step.name} (type: "${step.type}")`); const config = getParameterConfig(step); console.log(`📊 Résultat: ${config.length} paramètres trouvés`); if (config.length > 0) { console.log('✅ SUCCÈS - Paramètres disponibles:'); config.forEach(param => { console.log(` - ${param.name}: ${param.label} (${param.type})`); }); } else { console.log('❌ ÉCHEC - Aucun paramètre trouvé'); // Diagnostic if (stepParametersConfig[step.type]) { console.log('🚨 PROBLÈME: Configuration existe mais non retournée!'); } else { console.log('ℹ️ INFO: Aucune configuration pour ce type (normal pour les actions VWB)'); } } }); console.log('\n' + '=' .repeat(60)); console.log('📊 RÉSUMÉ DES TESTS'); console.log('=' .repeat(60)); // Résumé const results = testSteps.map(step => ({ type: step.type, configExists: !!stepParametersConfig[step.type], paramCount: getParameterConfig(step).length, })); results.forEach(result => { const status = result.paramCount > 0 ? '✅' : '❌'; console.log(`${status} ${result.type}: ${result.paramCount} paramètres (config existe: ${result.configExists})`); }); const successCount = results.filter(r => r.paramCount > 0).length; const totalCount = results.length; console.log(`\n📈 Taux de succès: ${successCount}/${totalCount} (${((successCount/totalCount)*100).toFixed(1)}%)`); if (successCount < totalCount) { console.log('\n🔧 RECOMMANDATIONS:'); console.log('1. Vérifier que tous les types d\'étapes ont une configuration'); console.log('2. Vérifier la logique de détection des actions VWB'); console.log('3. Ajouter des logs dans le composant React pour déboguer en temps réel'); } console.log('\n✅ Tests terminés');