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:
661
tests/results/test_proprietes_etapes_vwb_10jan2026.json
Normal file
661
tests/results/test_proprietes_etapes_vwb_10jan2026.json
Normal file
@@ -0,0 +1,661 @@
|
||||
{
|
||||
"backend_disponible": true,
|
||||
"actions_disponibles": [
|
||||
{
|
||||
"category": "vision_ui",
|
||||
"complexity": "simple",
|
||||
"description": "Clique sur un élément UI identifié par une ancre visuelle avec reconnaissance automatique",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Clique sur le bouton 'Valider' d'un formulaire",
|
||||
"name": "Clic sur bouton de validation",
|
||||
"parameters": {
|
||||
"click_type": "left",
|
||||
"wait_before_click_ms": 200
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Clic droit sur un élément pour ouvrir le menu",
|
||||
"name": "Clic droit pour menu contextuel",
|
||||
"parameters": {
|
||||
"click_type": "right"
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "🖱️",
|
||||
"id": "click_anchor",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "simple",
|
||||
"tags": [
|
||||
"ui",
|
||||
"interaction",
|
||||
"vision",
|
||||
"click"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Clic sur Ancre Visuelle",
|
||||
"parameters": {
|
||||
"click_offset_x": {
|
||||
"default": 0,
|
||||
"description": "Décalage horizontal en pixels depuis le centre",
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"click_offset_y": {
|
||||
"default": 0,
|
||||
"description": "Décalage vertical en pixels depuis le centre",
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"click_type": {
|
||||
"default": "left",
|
||||
"description": "Type de clic à effectuer",
|
||||
"options": [
|
||||
"left",
|
||||
"right",
|
||||
"double",
|
||||
"middle"
|
||||
],
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle pour localiser l'élément cible",
|
||||
"properties": {
|
||||
"anchor_type": {
|
||||
"default": "screenshot",
|
||||
"options": [
|
||||
"screenshot",
|
||||
"text",
|
||||
"icon",
|
||||
"composite"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"confidence_threshold": {
|
||||
"default": 0.8,
|
||||
"max": 1.0,
|
||||
"min": 0.0,
|
||||
"type": "number"
|
||||
},
|
||||
"screenshot_base64": {
|
||||
"description": "Image de référence en base64",
|
||||
"type": "string"
|
||||
},
|
||||
"text_content": {
|
||||
"description": "Texte à rechercher",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
},
|
||||
"wait_before_click_ms": {
|
||||
"default": 100,
|
||||
"description": "Délai d'attente avant le clic en millisecondes",
|
||||
"min": 0,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "vision_ui",
|
||||
"complexity": "simple",
|
||||
"description": "Saisit du texte dans un champ identifié par une ancre visuelle avec validation automatique",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Saisit une adresse email dans un champ de connexion",
|
||||
"name": "Saisie d'email",
|
||||
"parameters": {
|
||||
"clear_field_first": true,
|
||||
"press_enter_after": false,
|
||||
"text_to_type": "user@example.com",
|
||||
"validate_after_typing": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Saisit un mot de passe avec validation",
|
||||
"name": "Saisie de mot de passe",
|
||||
"parameters": {
|
||||
"press_enter_after": true,
|
||||
"text_to_type": "********",
|
||||
"typing_speed_ms": 30
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "⌨️",
|
||||
"id": "type_text",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "simple",
|
||||
"tags": [
|
||||
"ui",
|
||||
"input",
|
||||
"text",
|
||||
"vision",
|
||||
"typing"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Saisie de Texte Visuelle",
|
||||
"parameters": {
|
||||
"clear_field_first": {
|
||||
"default": true,
|
||||
"description": "Vider le champ avant la saisie (Ctrl+A puis suppression)",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"click_before_typing": {
|
||||
"default": true,
|
||||
"description": "Cliquer sur le champ avant la saisie pour le focus",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"press_enter_after": {
|
||||
"default": false,
|
||||
"description": "Appuyer sur Entrée après la saisie",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"text_to_type": {
|
||||
"description": "Texte à saisir dans le champ",
|
||||
"max_length": 1000,
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
"typing_speed_ms": {
|
||||
"default": 50,
|
||||
"description": "Délai entre chaque caractère en millisecondes",
|
||||
"max": 1000,
|
||||
"min": 0,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"validate_after_typing": {
|
||||
"default": false,
|
||||
"description": "Valider que le texte a été correctement saisi",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle pour localiser le champ de saisie",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "control",
|
||||
"complexity": "intermediate",
|
||||
"description": "Attend qu'une ancre visuelle apparaisse ou disparaisse avec surveillance intelligente",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Attend qu'un indicateur de chargement disparaisse",
|
||||
"name": "Attendre fin de chargement",
|
||||
"parameters": {
|
||||
"check_interval_ms": 250,
|
||||
"max_wait_time_ms": 15000,
|
||||
"wait_mode": "disappear"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Attend qu'une boîte de dialogue apparaisse",
|
||||
"name": "Attendre apparition de dialogue",
|
||||
"parameters": {
|
||||
"max_wait_time_ms": 10000,
|
||||
"stability_duration_ms": 500,
|
||||
"wait_mode": "appear"
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "⏳",
|
||||
"id": "wait_for_anchor",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "intermediate",
|
||||
"tags": [
|
||||
"control",
|
||||
"wait",
|
||||
"vision",
|
||||
"synchronization"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Attente d'Ancre Visuelle",
|
||||
"parameters": {
|
||||
"check_interval_ms": {
|
||||
"default": 500,
|
||||
"description": "Intervalle de vérification en millisecondes",
|
||||
"max": 5000,
|
||||
"min": 100,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"confidence_threshold": {
|
||||
"default": 0.8,
|
||||
"description": "Seuil de confiance pour la détection",
|
||||
"max": 1.0,
|
||||
"min": 0.0,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"max_wait_time_ms": {
|
||||
"default": 30000,
|
||||
"description": "Délai d'attente maximum en millisecondes",
|
||||
"max": 300000,
|
||||
"min": 1000,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"stability_duration_ms": {
|
||||
"default": 1000,
|
||||
"description": "Durée de stabilité requise pour le mode 'stable'",
|
||||
"min": 100,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle à surveiller",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
},
|
||||
"wait_mode": {
|
||||
"default": "appear",
|
||||
"description": "Mode d'attente (apparition, disparition, ou stabilisation)",
|
||||
"options": [
|
||||
"appear",
|
||||
"disappear",
|
||||
"stable"
|
||||
],
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "navigation",
|
||||
"complexity": "intermediate",
|
||||
"description": "Fait défiler la page jusqu'à ce qu'une ancre visuelle soit visible",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Fait défiler vers le bas pour atteindre un bouton",
|
||||
"name": "Défiler vers bouton en bas de page",
|
||||
"parameters": {
|
||||
"scroll_direction": "down",
|
||||
"scroll_step_pixels": 150
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "📜",
|
||||
"id": "scroll_to_anchor",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "intermediate",
|
||||
"tags": [
|
||||
"navigation",
|
||||
"scroll",
|
||||
"vision"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Défilement vers Ancre",
|
||||
"parameters": {
|
||||
"max_scroll_attempts": {
|
||||
"default": 20,
|
||||
"description": "Nombre maximum de tentatives de défilement",
|
||||
"max": 100,
|
||||
"min": 1,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"pause_between_scrolls_ms": {
|
||||
"default": 200,
|
||||
"description": "Pause entre chaque défilement en millisecondes",
|
||||
"min": 50,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"scroll_direction": {
|
||||
"default": "auto",
|
||||
"description": "Direction de défilement",
|
||||
"options": [
|
||||
"auto",
|
||||
"up",
|
||||
"down",
|
||||
"left",
|
||||
"right"
|
||||
],
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"scroll_step_pixels": {
|
||||
"default": 100,
|
||||
"description": "Nombre de pixels par étape de défilement",
|
||||
"max": 500,
|
||||
"min": 10,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle à atteindre par défilement",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "data",
|
||||
"complexity": "advanced",
|
||||
"description": "Extrait le texte d'un élément identifié par une ancre visuelle",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Extrait le prix affiché sur une page produit",
|
||||
"name": "Extraire prix d'un produit",
|
||||
"parameters": {
|
||||
"extraction_method": "ocr",
|
||||
"output_variable": "product_price",
|
||||
"text_processing": "clean"
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "📤",
|
||||
"id": "extract_text_from_anchor",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "advanced",
|
||||
"tags": [
|
||||
"data",
|
||||
"extraction",
|
||||
"ocr",
|
||||
"vision"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Extraction de Texte",
|
||||
"parameters": {
|
||||
"extraction_method": {
|
||||
"default": "ocr",
|
||||
"description": "Méthode d'extraction du texte",
|
||||
"options": [
|
||||
"ocr",
|
||||
"clipboard",
|
||||
"accessibility"
|
||||
],
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"output_variable": {
|
||||
"description": "Nom de la variable pour stocker le texte extrait",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"text_processing": {
|
||||
"default": "trim",
|
||||
"description": "Traitement du texte extrait",
|
||||
"options": [
|
||||
"none",
|
||||
"trim",
|
||||
"normalize",
|
||||
"clean"
|
||||
],
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle de l'élément contenant le texte",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "validation",
|
||||
"complexity": "simple",
|
||||
"description": "Valide qu'une ancre visuelle est présente ou absente sur l'écran",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Vérifie qu'un message de succès est affiché",
|
||||
"name": "Valider succès de connexion",
|
||||
"parameters": {
|
||||
"expected_presence": true,
|
||||
"fail_on_mismatch": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "✅",
|
||||
"id": "validate_anchor_presence",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "simple",
|
||||
"tags": [
|
||||
"validation",
|
||||
"verification",
|
||||
"vision"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Validation de Présence",
|
||||
"parameters": {
|
||||
"confidence_threshold": {
|
||||
"default": 0.8,
|
||||
"description": "Seuil de confiance pour la validation",
|
||||
"max": 1.0,
|
||||
"min": 0.0,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"expected_presence": {
|
||||
"default": true,
|
||||
"description": "Présence attendue (true = doit être présent, false = doit être absent)",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"fail_on_mismatch": {
|
||||
"default": true,
|
||||
"description": "Échouer si la validation ne correspond pas à l'attente",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle à valider",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "vision_ui",
|
||||
"complexity": "simple",
|
||||
"description": "Met le focus sur un élément UI identifié par une ancre visuelle",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Met le focus sur un champ en le survolant",
|
||||
"name": "Focus par survol",
|
||||
"parameters": {
|
||||
"focus_method": "hover",
|
||||
"hover_duration_ms": 300
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "🎯",
|
||||
"id": "focus_anchor",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "simple",
|
||||
"tags": [
|
||||
"ui",
|
||||
"focus",
|
||||
"vision",
|
||||
"interaction"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Donner le Focus",
|
||||
"parameters": {
|
||||
"focus_method": {
|
||||
"default": "hover",
|
||||
"description": "Méthode pour donner le focus",
|
||||
"options": [
|
||||
"hover",
|
||||
"tab",
|
||||
"click_light"
|
||||
],
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"hover_duration_ms": {
|
||||
"default": 500,
|
||||
"description": "Durée du survol en millisecondes",
|
||||
"max": 3000,
|
||||
"min": 100,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle pour localiser l'élément cible",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "vision_ui",
|
||||
"complexity": "intermediate",
|
||||
"description": "Saisit un secret (mot de passe) de manière sécurisée dans un champ identifié par ancre visuelle",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Saisit un mot de passe de manière sécurisée",
|
||||
"name": "Saisie mot de passe",
|
||||
"parameters": {
|
||||
"press_enter_after": true,
|
||||
"secret_value": "********",
|
||||
"typing_speed_ms": 50
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "🔐",
|
||||
"id": "type_secret",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "intermediate",
|
||||
"tags": [
|
||||
"ui",
|
||||
"security",
|
||||
"password",
|
||||
"vision",
|
||||
"secret"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Saisie de Secret",
|
||||
"parameters": {
|
||||
"clear_field_first": {
|
||||
"default": true,
|
||||
"description": "Vider le champ avant la saisie",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"press_enter_after": {
|
||||
"default": false,
|
||||
"description": "Appuyer sur Entrée après la saisie",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"secret_ref": {
|
||||
"description": "Référence vers un secret stocké de manière sécurisée",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"secret_value": {
|
||||
"description": "Valeur du secret à saisir (masquée dans les logs)",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
"typing_speed_ms": {
|
||||
"default": 30,
|
||||
"description": "Délai entre chaque caractère (plus lent pour sécurité)",
|
||||
"max": 200,
|
||||
"min": 10,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"visual_anchor": {
|
||||
"description": "Ancre visuelle pour localiser le champ de saisie",
|
||||
"required": true,
|
||||
"type": "VWBVisualAnchor"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"category": "control",
|
||||
"complexity": "simple",
|
||||
"description": "Exécute un raccourci clavier (combinaison de touches)",
|
||||
"examples": [
|
||||
{
|
||||
"description": "Copie le contenu sélectionné",
|
||||
"name": "Copier",
|
||||
"parameters": {
|
||||
"key_combination": "ctrl+c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Actualise la page web",
|
||||
"name": "Actualiser page",
|
||||
"parameters": {
|
||||
"key_combination": "f5"
|
||||
}
|
||||
}
|
||||
],
|
||||
"icon": "⌨️",
|
||||
"id": "hotkey",
|
||||
"metadata": {
|
||||
"author": "Dom, Alice, Kiro",
|
||||
"complexity": "simple",
|
||||
"tags": [
|
||||
"control",
|
||||
"keyboard",
|
||||
"shortcut",
|
||||
"hotkey"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"name": "Raccourci Clavier",
|
||||
"parameters": {
|
||||
"hold_duration_ms": {
|
||||
"default": 100,
|
||||
"description": "Durée de maintien des touches en millisecondes",
|
||||
"max": 2000,
|
||||
"min": 50,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
},
|
||||
"key_combination": {
|
||||
"description": "Combinaison de touches (ex: 'ctrl+c', 'alt+tab', 'f5')",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
"repeat_count": {
|
||||
"default": 1,
|
||||
"description": "Nombre de répétitions du raccourci",
|
||||
"max": 10,
|
||||
"min": 1,
|
||||
"required": false,
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"frontend_disponible": true,
|
||||
"composants_presents": {
|
||||
"VWBActionProperties": true,
|
||||
"PropertiesPanel": true,
|
||||
"useVWBStepIntegration": true,
|
||||
"catalogService": true,
|
||||
"catalog_types": true
|
||||
},
|
||||
"integration_fonctionnelle": true,
|
||||
"erreurs": []
|
||||
}
|
||||
Reference in New Issue
Block a user