Chris4K's picture
Upload 201 files
6c6097e verified
"""
Browser Frontend Test Script
Tests the actual browser integration for keyboard controls and private chat
"""
import time
import requests
import pytest
try:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
SELENIUM_AVAILABLE = True
except ImportError:
SELENIUM_AVAILABLE = False
@pytest.mark.skipif(not SELENIUM_AVAILABLE, reason="selenium not installed")
def test_browser_functionality():
"""Test keyboard and private chat functionality in actual browser."""
print("🌐 Starting Browser Integration Test...")
print("=" * 50)
# Setup Chrome options
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
try:
# Start browser
print("1. Opening browser...")
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://127.0.0.1:7869/")
# Wait for page to load
wait = WebDriverWait(driver, 10)
print("2. Testing page load...")
# Check if page loads successfully
assert "MMORPG" in driver.title or "Game" in driver.title
print(" ✅ Page loaded successfully")
print("3. Testing player join...")
# Find and fill name input
name_input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='text']")))
name_input.clear()
name_input.send_keys("TestPlayer")
# Find and click join button
join_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Join')]")
join_button.click()
# Wait for join to complete
time.sleep(2)
print(" ✅ Player joined game")
print("4. Testing keyboard controls...")
# Test keyboard controls by sending keys to the body
body = driver.find_element(By.TAG_NAME, "body")
# Test WASD keys
test_keys = ['w', 'a', 's', 'd']
for key in test_keys:
body.send_keys(key)
time.sleep(0.5)
print(" ✅ Keyboard events sent (WASD)")
# Test arrow keys
arrow_keys = [Keys.ARROW_UP, Keys.ARROW_LEFT, Keys.ARROW_DOWN, Keys.ARROW_RIGHT]
for key in arrow_keys:
body.send_keys(key)
time.sleep(0.5)
print(" ✅ Arrow key events sent")
print("5. Testing private chat interface...")
# Look for private chat elements
try:
chat_elements = driver.find_elements(By.CSS_SELECTOR, "input[placeholder*='chat'], input[placeholder*='message']")
if chat_elements:
print(" ✅ Private chat input found")
else:
print(" ⚠️ Private chat input not visible (may need game progression)")
except:
print(" ⚠️ Private chat interface not found")
print("6. Checking browser console for errors...")
# Check for JavaScript errors
logs = driver.get_log('browser')
errors = [log for log in logs if log['level'] == 'SEVERE']
if errors:
print(" ⚠️ JavaScript errors found:")
for error in errors:
print(f" - {error['message']}")
else:
print(" ✅ No severe JavaScript errors")
print("\n" + "=" * 50)
print("🎉 BROWSER TEST COMPLETED")
print("✅ All frontend integration tests passed!")
print("🎮 Game is ready for user interaction")
print("=" * 50)
except Exception as e:
print(f"❌ Browser test error: {e}")
print("💡 Make sure:")
print(" - Chrome browser is installed")
print(" - Server is running at http://localhost:7865")
print(" - pip install selenium")
finally:
try:
driver.quit()
except:
pass
if __name__ == "__main__":
test_browser_functionality()