#!/usr/bin/env python3 """ Test des Corrections de la Palette VWB Auteur : Dom, Alice, Kiro - 10 janvier 2026 Ce script teste si les corrections apportées à la Palette permettent maintenant d'afficher correctement les actions du catalogue. """ import requests import json import time from datetime import datetime def test_backend_still_working(): """Vérifier que le backend fonctionne toujours""" print("🔍 Vérification du backend...") try: response = requests.get("http://localhost:5004/api/vwb/catalog/actions", timeout=5) if response.status_code == 200: data = response.json() action_count = len(data.get('actions', [])) print(f"✅ Backend OK: {action_count} actions disponibles") return True, action_count else: print(f"❌ Backend erreur: {response.status_code}") return False, 0 except Exception as e: print(f"❌ Backend inaccessible: {e}") return False, 0 def test_frontend_accessible(): """Vérifier que le frontend est accessible""" print("\n🌐 Vérification du frontend...") try: response = requests.get("http://localhost:3000", timeout=5) if response.status_code == 200: print("✅ Frontend accessible sur port 3000") return True else: print(f"❌ Frontend erreur: {response.status_code}") return False except Exception as e: print(f"❌ Frontend inaccessible: {e}") return False def check_typescript_compilation(): """Vérifier s'il y a des erreurs de compilation TypeScript""" print("\n🔧 Vérification de la compilation TypeScript...") # Lire les logs de compilation récents try: # Vérifier si le fichier Palette a des erreurs de syntaxe évidentes with open('visual_workflow_builder/frontend/src/components/Palette/index.tsx', 'r') as f: content = f.read() # Vérifications basiques checks = { 'Imports corrects': 'import React' in content and 'useMemo' in content, 'Hook useCatalogActions': 'useCatalogActions' in content, 'État catalogState': 'catalogState' in content, 'Fonction handleReloadCatalog': 'handleReloadCatalog' in content, 'Pas de setCatalogState orphelin': content.count('setCatalogState') <= 1, # Devrait être supprimé 'Syntaxe JSX correcte': content.count('{') == content.count('}'), } print("📋 Vérifications du code:") all_good = True for check, result in checks.items(): status = "✅" if result else "❌" print(f" {check}: {status}") if not result: all_good = False return all_good except Exception as e: print(f"❌ Erreur lors de la vérification: {e}") return False def main(): """Fonction principale de test""" print("=" * 60) print("🧪 TEST DES CORRECTIONS PALETTE VWB") print("=" * 60) print(f"📅 Date: {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}") print() # Tests séquentiels results = {} # 1. Backend toujours fonctionnel backend_ok, action_count = test_backend_still_working() results['backend'] = backend_ok # 2. Frontend accessible frontend_ok = test_frontend_accessible() results['frontend'] = frontend_ok # 3. Code TypeScript correct typescript_ok = check_typescript_compilation() results['typescript'] = typescript_ok # Résumé print("\n" + "=" * 60) print("📊 RÉSUMÉ DES TESTS") print("=" * 60) success_count = sum(results.values()) total_tests = len(results) for test_name, result in results.items(): status = "✅ OK" if result else "❌ PROBLÈME" print(f"{test_name.capitalize():15} : {status}") print(f"\n📈 Score: {success_count}/{total_tests} ({success_count/total_tests*100:.1f}%)") # Diagnostic print("\n🔧 DIAGNOSTIC:") if not backend_ok: print("❌ PROBLÈME CRITIQUE: Le backend ne fonctionne plus") print(" → Redémarrer le backend: python scripts/start_vwb_backend_catalogue_complet_10jan2026.py") elif not frontend_ok: print("❌ PROBLÈME CRITIQUE: Le frontend ne répond plus") print(" → Vérifier les logs du serveur de développement React") elif not typescript_ok: print("⚠️ PROBLÈME CODE: Erreurs dans le code TypeScript") print(" → Vérifier la console du navigateur pour les erreurs de compilation") else: print("✅ CORRECTIONS APPLIQUÉES AVEC SUCCÈS") print(f"🎯 {action_count} actions disponibles dans le catalogue") print("\n💡 PROCHAINES ÉTAPES:") print("1. Ouvrir http://localhost:3000 dans un navigateur") print("2. Cliquer sur l'onglet 'Test Catalogue' dans le tiroir de documentation") print("3. Vérifier que le composant de test affiche les actions du catalogue") print("4. Vérifier que la palette principale affiche maintenant les actions VisionOnly") return success_count == total_tests if __name__ == "__main__": success = main() exit(0 if success else 1)