#!/usr/bin/env python3 """ Test de debug du backend VWB pour identifier le problème de capture. Auteur : Dom, Alice, Kiro - 09 janvier 2026 Ce test examine les logs du serveur pour identifier pourquoi la capture échoue. """ import sys import os import time import requests import subprocess from pathlib import Path # Ajouter le répertoire racine au path ROOT_DIR = Path(__file__).parent.parent.parent sys.path.insert(0, str(ROOT_DIR)) def start_backend_server_debug(): """Démarre le serveur backend VWB en mode debug.""" print("🚀 Démarrage du serveur backend VWB en mode debug...") # Utiliser l'environnement virtuel venv_python = ROOT_DIR / "venv_v3" / "bin" / "python3" backend_script = ROOT_DIR / "visual_workflow_builder" / "backend" / "app_lightweight.py" # Variables d'environnement pour le serveur env = os.environ.copy() env['PYTHONPATH'] = str(ROOT_DIR) env['PORT'] = '5002' print(f"🐍 Utilisation de: {venv_python}") print(f"📁 Script: {backend_script}") # Démarrer le serveur en mode interactif pour voir les logs process = subprocess.Popen( [str(venv_python), str(backend_script)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, # Rediriger stderr vers stdout cwd=str(ROOT_DIR), env=env, text=True, bufsize=1, universal_newlines=True ) # Attendre que le serveur démarre et afficher les logs print("⏳ Attente du démarrage du serveur...") time.sleep(3) # Lire les logs de démarrage print("\n📋 Logs de démarrage du serveur:") print("-" * 40) # Lire quelques lignes de sortie for i in range(20): # Lire les 20 premières lignes try: line = process.stdout.readline() if line: print(f"LOG: {line.strip()}") else: break except: break print("-" * 40) return process def test_capture_with_logs(server_process): """Teste la capture en surveillant les logs.""" print("\n📷 Test de capture avec surveillance des logs...") # Faire une requête de capture try: print("🔄 Envoi de la requête de capture...") response = requests.post( "http://localhost:5002/api/screen-capture", json={"format": "png", "quality": 90}, timeout=15 ) print(f"📊 Statut de réponse: {response.status_code}") # Lire les logs pendant la requête print("\n📋 Logs pendant la capture:") print("-" * 40) # Lire quelques lignes supplémentaires for i in range(10): try: line = server_process.stdout.readline() if line: print(f"LOG: {line.strip()}") else: break except: break print("-" * 40) if response.status_code == 200: data = response.json() if data.get('success'): print(f"✅ Capture réussie - {data['width']}x{data['height']}") return True else: print(f"❌ Erreur capture: {data.get('error', 'inconnue')}") return False else: print(f"❌ Erreur HTTP: {response.status_code}") print(f"Réponse: {response.text}") return False except Exception as e: print(f"❌ Erreur lors de la capture: {e}") return False def main(): """Fonction principale de test.""" print("=" * 60) print(" TEST DEBUG BACKEND VWB") print("=" * 60) print("Auteur : Dom, Alice, Kiro - 09 janvier 2026") print("") # Démarrer le serveur backend server_process = start_backend_server_debug() if not server_process: print("❌ Impossible de démarrer le serveur backend") return False try: # Attendre un peu plus pour le démarrage complet time.sleep(5) # Tester la capture avec logs success = test_capture_with_logs(server_process) return success finally: # Arrêter le serveur if server_process: print("\n🛑 Arrêt du serveur backend...") server_process.terminate() server_process.wait() if __name__ == '__main__': success = main() sys.exit(0 if success else 1)