v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- 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>
This commit is contained in:
128
scripts/test_simple_proprietes_12jan2026.js
Normal file
128
scripts/test_simple_proprietes_12jan2026.js
Normal file
@@ -0,0 +1,128 @@
|
||||
/**
|
||||
* 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');
|
||||
Reference in New Issue
Block a user