- 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>
113 lines
4.1 KiB
Python
113 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test de la capture externe - Visual Workflow Builder
|
|
|
|
Ce script teste la nouvelle fonctionnalité de capture d'application externe
|
|
"""
|
|
|
|
import time
|
|
import subprocess
|
|
import sys
|
|
|
|
def test_capture_workflow():
|
|
"""Test du workflow complet de capture externe"""
|
|
print("🎯 Test du Workflow de Capture Externe")
|
|
print("=" * 50)
|
|
|
|
print("\n1. 📋 Instructions de test :")
|
|
print(" - Ouvrez une application (ex: calculatrice, éditeur de texte)")
|
|
print(" - Gardez cette application visible")
|
|
print(" - Ouvrez Visual Workflow Builder dans votre navigateur")
|
|
print(" - Créez un nœud Action et ouvrez la sélection visuelle")
|
|
|
|
print("\n2. 🔄 Workflow attendu :")
|
|
print(" ✅ Interface de choix de mode s'affiche")
|
|
print(" ✅ Clic sur 'Capturer Application Externe'")
|
|
print(" ✅ Countdown 5-4-3-2-1 s'affiche en plein écran")
|
|
print(" ✅ Capture automatique de l'application cible")
|
|
print(" ✅ Retour à l'interface avec la capture")
|
|
|
|
print("\n3. 🎮 Test interactif :")
|
|
input(" Appuyez sur Entrée quand vous êtes prêt à tester...")
|
|
|
|
# Ouvrir une application de test
|
|
print("\n📱 Ouverture d'une application de test (calculatrice)...")
|
|
try:
|
|
if sys.platform == "linux":
|
|
subprocess.Popen(["gnome-calculator"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
elif sys.platform == "darwin":
|
|
subprocess.Popen(["open", "-a", "Calculator"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
elif sys.platform == "win32":
|
|
subprocess.Popen(["calc.exe"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
|
|
time.sleep(2)
|
|
print("✅ Application de test ouverte")
|
|
except Exception as e:
|
|
print(f"⚠️ Impossible d'ouvrir l'application de test: {e}")
|
|
print(" Ouvrez manuellement une application pour le test")
|
|
|
|
print("\n🌐 Ouvrez maintenant votre navigateur sur http://localhost:3000")
|
|
print(" et testez la sélection visuelle avec le mode externe")
|
|
|
|
print("\n✅ Critères de réussite :")
|
|
print(" - Le countdown s'affiche correctement")
|
|
print(" - La capture montre l'application cible (pas le navigateur)")
|
|
print(" - L'interface permet de sélectionner des éléments")
|
|
print(" - Les sélecteurs sont générés correctement")
|
|
|
|
def test_api_capture():
|
|
"""Test direct de l'API de capture"""
|
|
print("\n🔧 Test de l'API de capture...")
|
|
|
|
import requests
|
|
|
|
try:
|
|
# Test de capture immédiate
|
|
response = requests.post(
|
|
'http://localhost:5002/api/screen-capture/capture',
|
|
json={},
|
|
timeout=10
|
|
)
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"✅ API de capture fonctionnelle: {data['width']}x{data['height']}")
|
|
return True
|
|
else:
|
|
print(f"❌ Erreur API: {response.status_code}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"❌ Erreur de connexion API: {e}")
|
|
return False
|
|
|
|
def main():
|
|
"""Fonction principale"""
|
|
print("🚀 Test de Capture Externe - Visual Workflow Builder")
|
|
print("=" * 60)
|
|
|
|
# Test de l'API
|
|
if not test_api_capture():
|
|
print("\n❌ L'API de capture ne fonctionne pas.")
|
|
print(" Assurez-vous que le backend est démarré avec ./start_full.sh")
|
|
return 1
|
|
|
|
# Test du workflow
|
|
test_capture_workflow()
|
|
|
|
print("\n" + "=" * 60)
|
|
print("📝 Rapport de test :")
|
|
print(" - API de capture : ✅ Fonctionnelle")
|
|
print(" - Interface utilisateur : 🔄 À tester manuellement")
|
|
print(" - Workflow complet : 🔄 À valider")
|
|
|
|
print("\n💡 Prochaines améliorations possibles :")
|
|
print(" - Sélection de fenêtre spécifique")
|
|
print(" - Raccourci clavier pour capture")
|
|
print(" - Prévisualisation avant capture")
|
|
print(" - Capture de région spécifique")
|
|
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |