- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
129 lines
4.5 KiB
JavaScript
129 lines
4.5 KiB
JavaScript
/**
|
||
* 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');
|