#!/usr/bin/env python3 """ Test script to verify frontend-backend communication. """ import requests import time def test_backend_endpoints(): """Test all backend endpoints""" base_url = "http://localhost:8000" print("๐Ÿงช Testing Backend Endpoints...") # Test health endpoint print("\n1๏ธโƒฃ Testing health endpoint...") try: response = requests.get(f"{base_url}/health") if response.status_code == 200: print("โœ… Health endpoint working") else: print(f"โŒ Health endpoint failed: {response.status_code}") except Exception as e: print(f"โŒ Health endpoint error: {e}") # Test onboarding check print("\n2๏ธโƒฃ Testing onboarding check...") try: response = requests.get(f"{base_url}/api/check-onboarding") if response.status_code == 200: data = response.json() print(f"โœ… Onboarding check working: {data}") else: print(f"โŒ Onboarding check failed: {response.status_code}") except Exception as e: print(f"โŒ Onboarding check error: {e}") # Test onboarding start print("\n3๏ธโƒฃ Testing onboarding start...") try: response = requests.post(f"{base_url}/api/onboarding/start") if response.status_code == 200: data = response.json() print(f"โœ… Onboarding start working: {data}") else: print(f"โŒ Onboarding start failed: {response.status_code}") except Exception as e: print(f"โŒ Onboarding start error: {e}") # Test onboarding step print("\n4๏ธโƒฃ Testing onboarding step...") try: response = requests.get(f"{base_url}/api/onboarding/step") if response.status_code == 200: data = response.json() print(f"โœ… Onboarding step working: {data}") else: print(f"โŒ Onboarding step failed: {response.status_code}") except Exception as e: print(f"โŒ Onboarding step error: {e}") def test_frontend_communication(): """Test if frontend can reach backend""" print("\n๐ŸŒ Testing Frontend-Backend Communication...") # Simulate frontend API calls base_url = "http://localhost:8000" # Test the exact endpoints the frontend uses endpoints = [ ("GET", "/api/check-onboarding"), ("POST", "/api/onboarding/start"), ("GET", "/api/onboarding/step"), ("GET", "/api/onboarding/api-keys"), ("POST", "/api/onboarding/api-keys"), ("GET", "/api/onboarding/progress"), ] for method, endpoint in endpoints: print(f"\nTesting {method} {endpoint}...") try: if method == "GET": response = requests.get(f"{base_url}{endpoint}") elif method == "POST": response = requests.post(f"{base_url}{endpoint}") if response.status_code in [200, 404]: # 404 is expected for some endpoints without data print(f"โœ… {method} {endpoint} - Status: {response.status_code}") else: print(f"โŒ {method} {endpoint} - Status: {response.status_code}") except Exception as e: print(f"โŒ {method} {endpoint} - Error: {e}") if __name__ == "__main__": print("๐Ÿš€ Starting Frontend-Backend Communication Test...") # Wait a moment for services to be ready print("โณ Waiting for services to be ready...") time.sleep(2) test_backend_endpoints() test_frontend_communication() print("\n๐ŸŽฏ Test complete!") print("๐Ÿ“ If all tests pass, the frontend should work correctly.") print("๐ŸŒ Visit http://localhost:3000 to test the onboarding flow.")