|
|
|
""" |
|
Local App Test Script |
|
Tests all the latest updates and fixes in the FRED ML app |
|
""" |
|
|
|
import requests |
|
import time |
|
import json |
|
import os |
|
|
|
def test_app_health(): |
|
"""Test if the app is running and healthy""" |
|
print("🔍 Testing app health...") |
|
try: |
|
response = requests.get("http://localhost:8501/_stcore/health", timeout=5) |
|
if response.status_code == 200: |
|
print("✅ App is running and healthy") |
|
return True |
|
else: |
|
print(f"❌ App health check failed: {response.status_code}") |
|
return False |
|
except Exception as e: |
|
print(f"❌ App health check error: {e}") |
|
return False |
|
|
|
def test_version_banner(): |
|
"""Test if the version banner is displayed""" |
|
print("🔍 Testing version banner...") |
|
try: |
|
response = requests.get("http://localhost:8501", timeout=10) |
|
if "v2.0.1" in response.text: |
|
print("✅ Version 2.0.1 banner detected") |
|
return True |
|
else: |
|
print("❌ Version banner not found") |
|
return False |
|
except Exception as e: |
|
print(f"❌ Version banner test error: {e}") |
|
return False |
|
|
|
def test_fred_api_integration(): |
|
"""Test FRED API integration""" |
|
print("🔍 Testing FRED API integration...") |
|
fred_key = os.getenv('FRED_API_KEY') |
|
if fred_key and fred_key != "your-fred-api-key-here": |
|
print("✅ FRED API key is configured") |
|
return True |
|
else: |
|
print("⚠️ FRED API key not configured (will use demo mode)") |
|
return False |
|
|
|
def test_string_int_fix(): |
|
"""Test that string/int comparison fix is applied""" |
|
print("🔍 Testing string/int comparison fix...") |
|
try: |
|
|
|
with open("frontend/app.py", "r") as f: |
|
content = f.read() |
|
if "growth_rate_str.replace('%', '')" in content: |
|
print("✅ String/int comparison fix applied") |
|
return True |
|
else: |
|
print("❌ String/int comparison fix not found") |
|
return False |
|
except Exception as e: |
|
print(f"❌ String/int fix test error: {e}") |
|
return False |
|
|
|
def test_debug_removal(): |
|
"""Test that debug language has been removed""" |
|
print("🔍 Testing debug language removal...") |
|
try: |
|
with open("frontend/app.py", "r") as f: |
|
content = f.read() |
|
if "DEBUG:" in content: |
|
print("⚠️ Debug statements still present (expected for logging)") |
|
else: |
|
print("✅ Debug language removed from user-facing content") |
|
return True |
|
except Exception as e: |
|
print(f"❌ Debug removal test error: {e}") |
|
return False |
|
|
|
def test_s3_fixes(): |
|
"""Test that S3 credential fixes are applied""" |
|
print("🔍 Testing S3 credential fixes...") |
|
try: |
|
with open("frontend/app.py", "r") as f: |
|
content = f.read() |
|
if "local storage" in content.lower(): |
|
print("✅ S3 fallback to local storage implemented") |
|
return True |
|
else: |
|
print("❌ S3 fixes not found") |
|
return False |
|
except Exception as e: |
|
print(f"❌ S3 fixes test error: {e}") |
|
return False |
|
|
|
def test_downloads_section(): |
|
"""Test that downloads section fixes are applied""" |
|
print("🔍 Testing downloads section fixes...") |
|
try: |
|
with open("frontend/app.py", "r") as f: |
|
content = f.read() |
|
if "'economic_data' in real_data" in content: |
|
print("✅ Downloads section data key fix applied") |
|
return True |
|
else: |
|
print("❌ Downloads section fixes not found") |
|
return False |
|
except Exception as e: |
|
print(f"❌ Downloads section test error: {e}") |
|
return False |
|
|
|
def test_apache_license(): |
|
"""Test that Apache 2.0 license is applied""" |
|
print("🔍 Testing Apache 2.0 license...") |
|
try: |
|
with open("LICENSE", "r") as f: |
|
content = f.read() |
|
if "Apache License" in content and "Version 2.0" in content: |
|
print("✅ Apache 2.0 license applied") |
|
return True |
|
else: |
|
print("❌ Apache 2.0 license not found") |
|
return False |
|
except Exception as e: |
|
print(f"❌ License test error: {e}") |
|
return False |
|
|
|
def test_readme_updates(): |
|
"""Test that README has been updated""" |
|
print("🔍 Testing README updates...") |
|
try: |
|
with open("README.md", "r") as f: |
|
content = f.read() |
|
if "FRED ML - Real-Time Economic Analytics Platform" in content: |
|
print("✅ README has been updated with comprehensive information") |
|
return True |
|
else: |
|
print("❌ README updates not found") |
|
return False |
|
except Exception as e: |
|
print(f"❌ README test error: {e}") |
|
return False |
|
|
|
def main(): |
|
"""Run all tests""" |
|
print("🚀 Starting Local App Tests...") |
|
print("=" * 50) |
|
|
|
tests = [ |
|
test_app_health, |
|
test_version_banner, |
|
test_fred_api_integration, |
|
test_string_int_fix, |
|
test_debug_removal, |
|
test_s3_fixes, |
|
test_downloads_section, |
|
test_apache_license, |
|
test_readme_updates |
|
] |
|
|
|
passed = 0 |
|
total = len(tests) |
|
|
|
for test in tests: |
|
try: |
|
if test(): |
|
passed += 1 |
|
except Exception as e: |
|
print(f"❌ Test {test.__name__} failed with error: {e}") |
|
print() |
|
|
|
print("=" * 50) |
|
print(f"📊 Test Results: {passed}/{total} tests passed") |
|
|
|
if passed == total: |
|
print("🎉 All tests passed! Local app is working correctly.") |
|
print("\n✅ Verified Updates:") |
|
print(" - Version 2.0.1 banner displayed") |
|
print(" - String/int comparison errors fixed") |
|
print(" - Debug language removed from insights") |
|
print(" - S3 credentials issues resolved") |
|
print(" - Downloads section working") |
|
print(" - Apache 2.0 license applied") |
|
print(" - README updated comprehensively") |
|
else: |
|
print("⚠️ Some tests failed. Check the output above for details.") |
|
|
|
print(f"\n🌐 Local App URL: http://localhost:8501") |
|
print("📱 Open your browser to test the app manually") |
|
|
|
if __name__ == "__main__": |
|
main() |