Skip to main content
Glama
test_simple.py6.59 kB
#!/usr/bin/env python3 """ Script simple pour tester l'interface web Lance automatiquement le serveur et effectue les tests """ import requests import time import subprocess import sys import threading import os def start_server_in_background(): """Lance le serveur en arrière-plan avec gestion améliorée""" try: print('🚀 Démarrage du serveur en arrière-plan...') # Changer vers le répertoire parent parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Lancer le serveur en arrière-plan proc = subprocess.Popen([ sys.executable, 'start_server.py' ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=parent_dir, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP if os.name == 'nt' else 0) # Attendre que le serveur démarre avec vérification max_wait = 15 for i in range(max_wait): try: response = requests.get('http://localhost:8080/health', timeout=2) if response.status_code == 200: print(f'✅ Serveur démarré avec succès (en {i+1}s)') return proc except: pass time.sleep(1) print(f' Attente du serveur... ({i+1}/{max_wait})') print('❌ Timeout: Le serveur n\'a pas démarré') proc.terminate() return None except Exception as e: print(f'❌ Erreur démarrage serveur: {e}') return None def test_interface(): """Test simple de l'interface web""" base_url = "http://localhost:8080" print('🚀 Test de l\'interface web dashboard') print('=' * 50) # Démarrer le serveur server_proc = start_server_in_background() if not server_proc: print('❌ Impossible de démarrer le serveur') return False try: # Test 1: Health check print('\n🧪 Test 1: Health check') response = requests.get(f'{base_url}/health', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: print(' ✅ Serveur en ligne') data = response.json() print(f' 📊 Statut: {data.get("status")}') # Test 2: Page principale print('\n🧪 Test 2: Page principale') response = requests.get(f'{base_url}/', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: print(' ✅ Page principale accessible') print(f' 📄 Taille: {len(response.text)} caractères') # Test 3: Page de connexion print('\n🧪 Test 3: Page de connexion') response = requests.get(f'{base_url}/login', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: print(' ✅ Page de connexion accessible') # Test 4: Dashboard print('\n🧪 Test 4: Dashboard') response = requests.get(f'{base_url}/dashboard', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: print(' ✅ Dashboard accessible') # Test 5: CSS print('\n🧪 Test 5: Fichier CSS') response = requests.get(f'{base_url}/static/css/main.css', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: print(' ✅ CSS accessible') print(f' 📄 Taille: {len(response.text)} caractères') # Test 6: JavaScript print('\n🧪 Test 6: Fichier JavaScript') response = requests.get(f'{base_url}/static/js/dashboard.js', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: print(' ✅ JavaScript accessible') print(f' 📄 Taille: {len(response.text)} caractères') # Test 7: API Métriques print('\n🧪 Test 7: API Métriques') response = requests.get(f'{base_url}/api/metrics', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: data = response.json() print(' ✅ API métriques fonctionnelle') print(f' 📊 Connexions actives: {data.get("active_connections", 0)}') print(f' 🔧 Outils MCP: {data.get("total_tools", 0)}') # Test 8: API Configuration print('\n🧪 Test 8: API Configuration') response = requests.get(f'{base_url}/api/config', timeout=5) print(f' Status: {response.status_code}') if response.status_code == 200: data = response.json() print(' ✅ API configuration accessible') print(f' 🏠 Home Assistant configuré: {data.get("homeassistant", {}).get("connected", False)}') # Test 9: Templates print('\n🧪 Test 9: Templates HTML') templates = ['dashboard-overview', 'permissions', 'config', 'tools', 'logs', 'admin'] for template in templates: response = requests.get(f'{base_url}/api/templates/{template}', timeout=5) if response.status_code == 200: print(f' ✅ Template {template}') else: print(f' ❌ Template {template} - Status: {response.status_code}') print('\n🎉 Tests terminés avec succès!') return True except requests.exceptions.ConnectionError: print('\n❌ Erreur: Le serveur n\'est pas accessible') return False except Exception as e: print(f'\n❌ Erreur inattendue: {e}') return False finally: # Arrêter le serveur if server_proc: print('\n🛑 Arrêt du serveur...') server_proc.terminate() try: server_proc.wait(timeout=5) except subprocess.TimeoutExpired: server_proc.kill() def main(): """Point d'entrée principal""" print('🔧 Script de test automatique du dashboard MCP') print('📋 Ce script va démarrer le serveur et effectuer des tests') print('=' * 60) success = test_interface() if success: print('\n✅ Tous les tests sont passés!') return 0 else: print('\n❌ Certains tests ont échoué') return 1 if __name__ == "__main__": exit_code = main() sys.exit(exit_code)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jonathan97480/McpHomeAssistant'

If you have feedback or need assistance with the MCP directory API, please join our Discord server