257 lines
7.0 KiB
Python
257 lines
7.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script to verify mobile responsive functionality for eveai_chat_client
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
def test_files_exist():
|
|
"""Test that all required files exist"""
|
|
print("Testing file existence...")
|
|
|
|
files_to_check = [
|
|
# Vue components
|
|
'eveai_chat_client/static/assets/vue-components/MobileHeader.vue',
|
|
'eveai_chat_client/static/assets/vue-components/SideBar.vue',
|
|
'eveai_chat_client/static/assets/vue-components/index.js',
|
|
|
|
# Templates
|
|
'eveai_chat_client/templates/base.html',
|
|
'eveai_chat_client/templates/scripts.html',
|
|
|
|
# CSS
|
|
'eveai_chat_client/static/assets/css/chat.css',
|
|
|
|
# Source files
|
|
'frontend_src/js/chat-client.js',
|
|
|
|
# Built files
|
|
'eveai_chat_client/static/dist/chat-client.js',
|
|
'eveai_chat_client/static/dist/chat-client.css',
|
|
]
|
|
|
|
missing_files = []
|
|
for file_path in files_to_check:
|
|
if not os.path.exists(file_path):
|
|
missing_files.append(file_path)
|
|
else:
|
|
print(f"✓ {file_path}")
|
|
|
|
if missing_files:
|
|
print(f"\n❌ Missing files:")
|
|
for file_path in missing_files:
|
|
print(f" - {file_path}")
|
|
return False
|
|
|
|
print("✅ All required files exist")
|
|
return True
|
|
|
|
def test_mobile_header_component():
|
|
"""Test MobileHeader component structure"""
|
|
print("\nTesting MobileHeader component...")
|
|
|
|
mobile_header_path = 'eveai_chat_client/static/assets/vue-components/MobileHeader.vue'
|
|
|
|
with open(mobile_header_path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check for required elements
|
|
required_elements = [
|
|
'class="mobile-header"',
|
|
'SideBarLogo',
|
|
'LanguageSelector',
|
|
'@media (min-width: 769px)',
|
|
'display: none'
|
|
]
|
|
|
|
missing_elements = []
|
|
for element in required_elements:
|
|
if element not in content:
|
|
missing_elements.append(element)
|
|
else:
|
|
print(f"✓ Found: {element}")
|
|
|
|
if missing_elements:
|
|
print(f"❌ Missing elements in MobileHeader:")
|
|
for element in missing_elements:
|
|
print(f" - {element}")
|
|
return False
|
|
|
|
print("✅ MobileHeader component structure is correct")
|
|
return True
|
|
|
|
def test_css_responsive_rules():
|
|
"""Test CSS responsive rules"""
|
|
print("\nTesting CSS responsive rules...")
|
|
|
|
css_path = 'eveai_chat_client/static/assets/css/chat.css'
|
|
|
|
with open(css_path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check for required CSS rules
|
|
required_rules = [
|
|
'#mobile-header-container',
|
|
'#sidebar-container',
|
|
'@media (max-width: 768px)',
|
|
'flex-direction: column',
|
|
'display: none',
|
|
'display: block'
|
|
]
|
|
|
|
missing_rules = []
|
|
for rule in required_rules:
|
|
if rule not in content:
|
|
missing_rules.append(rule)
|
|
else:
|
|
print(f"✓ Found: {rule}")
|
|
|
|
if missing_rules:
|
|
print(f"❌ Missing CSS rules:")
|
|
for rule in missing_rules:
|
|
print(f" - {rule}")
|
|
return False
|
|
|
|
print("✅ CSS responsive rules are correct")
|
|
return True
|
|
|
|
def test_base_html_structure():
|
|
"""Test base.html structure"""
|
|
print("\nTesting base.html structure...")
|
|
|
|
base_html_path = 'eveai_chat_client/templates/base.html'
|
|
|
|
with open(base_html_path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check for required elements
|
|
required_elements = [
|
|
'id="mobile-header-container"',
|
|
'id="sidebar-container"',
|
|
'class="content-area"'
|
|
]
|
|
|
|
missing_elements = []
|
|
for element in required_elements:
|
|
if element not in content:
|
|
missing_elements.append(element)
|
|
else:
|
|
print(f"✓ Found: {element}")
|
|
|
|
if missing_elements:
|
|
print(f"❌ Missing elements in base.html:")
|
|
for element in missing_elements:
|
|
print(f" - {element}")
|
|
return False
|
|
|
|
print("✅ base.html structure is correct")
|
|
return True
|
|
|
|
def test_component_exports():
|
|
"""Test component exports"""
|
|
print("\nTesting component exports...")
|
|
|
|
index_js_path = 'eveai_chat_client/static/assets/vue-components/index.js'
|
|
|
|
with open(index_js_path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check for required exports
|
|
required_exports = [
|
|
'export { default as SideBar }',
|
|
'export { default as MobileHeader }'
|
|
]
|
|
|
|
missing_exports = []
|
|
for export in required_exports:
|
|
if export not in content:
|
|
missing_exports.append(export)
|
|
else:
|
|
print(f"✓ Found: {export}")
|
|
|
|
if missing_exports:
|
|
print(f"❌ Missing exports:")
|
|
for export in missing_exports:
|
|
print(f" - {export}")
|
|
return False
|
|
|
|
print("✅ Component exports are correct")
|
|
return True
|
|
|
|
def test_chat_client_js():
|
|
"""Test chat-client.js mounting logic"""
|
|
print("\nTesting chat-client.js mounting logic...")
|
|
|
|
chat_client_path = 'frontend_src/js/chat-client.js'
|
|
|
|
with open(chat_client_path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check for required mounting logic
|
|
required_elements = [
|
|
'getElementById(\'sidebar-container\')',
|
|
'getElementById(\'mobile-header-container\')',
|
|
'Components.SideBar',
|
|
'Components.MobileHeader',
|
|
'mount(\'#sidebar-container\')',
|
|
'mount(\'#mobile-header-container\')'
|
|
]
|
|
|
|
missing_elements = []
|
|
for element in required_elements:
|
|
if element not in content:
|
|
missing_elements.append(element)
|
|
else:
|
|
print(f"✓ Found: {element}")
|
|
|
|
if missing_elements:
|
|
print(f"❌ Missing elements in chat-client.js:")
|
|
for element in missing_elements:
|
|
print(f" - {element}")
|
|
return False
|
|
|
|
print("✅ chat-client.js mounting logic is correct")
|
|
return True
|
|
|
|
def main():
|
|
"""Run all tests"""
|
|
print("🧪 Testing Mobile Responsive Implementation")
|
|
print("=" * 50)
|
|
|
|
tests = [
|
|
test_files_exist,
|
|
test_mobile_header_component,
|
|
test_css_responsive_rules,
|
|
test_base_html_structure,
|
|
test_component_exports,
|
|
test_chat_client_js
|
|
]
|
|
|
|
passed = 0
|
|
failed = 0
|
|
|
|
for test in tests:
|
|
try:
|
|
if test():
|
|
passed += 1
|
|
else:
|
|
failed += 1
|
|
except Exception as e:
|
|
print(f"❌ Test failed with error: {e}")
|
|
failed += 1
|
|
print()
|
|
|
|
print("=" * 50)
|
|
print(f"📊 Test Results: {passed} passed, {failed} failed")
|
|
|
|
if failed == 0:
|
|
print("🎉 All tests passed! Mobile responsive implementation is complete.")
|
|
return True
|
|
else:
|
|
print("⚠️ Some tests failed. Please review the implementation.")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = main()
|
|
sys.exit(0 if success else 1) |