Files
nanocode/happy-games/games/tetris/test_windows_fix.py
T
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

147 lines
5.5 KiB
Python

#!/usr/bin/env python3
"""
Windows修复验证测试
"""
from playwright.sync_api import sync_playwright
import time
from datetime import datetime
def test_windows_fix():
"""测试Windows修复"""
print("🪟 Windows修复验证测试")
print("=" * 60)
url = "http://129.211.173.87:8895/games/tetris/index.html"
print(f"🌐 测试URL: {url}")
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
# 使用Windows用户代理
context = browser.new_context(
viewport={"width": 1280, "height": 720},
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
)
page = context.new_page()
try:
# 导航到页面
print("📡 加载页面...")
page.goto(url, wait_until="networkidle", timeout=10000)
print("✅ 页面加载成功")
# 等待初始化
time.sleep(2)
# 收集日志
logs = []
page.on("console", lambda msg: logs.append({
"time": datetime.now().strftime("%H:%M:%S"),
"type": msg.type,
"text": msg.text
}))
# 点击开始按钮
print("🔘 点击开始按钮...")
start_btn = page.query_selector("#start-btn")
if start_btn:
start_btn.click(timeout=3000)
print("✅ 开始按钮点击成功")
else:
print("❌ 未找到开始按钮")
return
# 等待游戏运行
print("⏳ 等待游戏运行15秒...")
time.sleep(15)
# 分析日志
print("\n📊 日志分析:")
# 查找关键日志
init_logs = [log for log in logs if "初始化" in log["text"] or "Canvas" in log["text"]]
spawn_logs = [log for log in logs if "生成新方块" in log["text"]]
move_logs = [log for log in logs if "移动方块" in log["text"] or "自动下落" in log["text"]]
error_logs = [log for log in logs if log["type"] == "error"]
nan_logs = [log for log in logs if "NaN" in log["text"] or "undefined" in log["text"]]
print(f" 总日志数: {len(logs)}")
print(f" 初始化日志: {len(init_logs)}")
print(f" 方块生成日志: {len(spawn_logs)}")
print(f" 方块移动日志: {len(move_logs)}")
print(f" 错误日志: {len(error_logs)}")
print(f" NaN/undefined日志: {len(nan_logs)}")
# 显示关键日志
if spawn_logs:
print(f"\n🧱 方块生成记录:")
for i, log in enumerate(spawn_logs[-3:]):
print(f" {i+1}. {log['text']}")
if move_logs:
print(f"\n🚀 方块移动记录:")
for i, log in enumerate(move_logs[-5:]):
print(f" {i+1}. {log['text']}")
if error_logs:
print(f"\n❌ 错误记录:")
for i, log in enumerate(error_logs):
print(f" {i+1}. {log['text']}")
if nan_logs:
print(f"\n⚠️ NaN/undefined问题:")
for i, log in enumerate(nan_logs):
print(f" {i+1}. {log['text']}")
# 评估修复效果
print("\n📈 修复效果评估:")
if len(nan_logs) == 0:
print(" ✅ NaN/undefined问题已完全修复!")
else:
print(f" ❌ 仍有{len(nan_logs)}个NaN/undefined问题")
if len(spawn_logs) > 0:
print(f" ✅ 方块生成正常 ({len(spawn_logs)}次)")
else:
print(" ❌ 方块未生成")
if len(move_logs) > 0:
print(f" ✅ 方块移动正常 ({len(move_logs)}次)")
else:
print(" ❌ 方块未移动")
if len(error_logs) == 0:
print(" ✅ 无JavaScript错误")
else:
print(f" ❌ 有{len(error_logs)}个JavaScript错误")
# 总体评估
print("\n🏆 总体评估:")
if len(nan_logs) == 0 and len(spawn_logs) > 0 and len(move_logs) > 0 and len(error_logs) == 0:
print(" 🎉 完美! Windows兼容性问题已完全解决!")
print(" 🚀 游戏可以在Windows浏览器上正常运行!")
elif len(nan_logs) == 0 and len(spawn_logs) > 0:
print(" 👍 良好! 主要问题已修复,但仍有小问题")
print(" 🔧 需要进一步优化移动逻辑")
else:
print(" ⚠️ 一般! 仍有问题需要修复")
print(" 🔧 需要深入调试")
# 截图
screenshot_path = "/tmp/windows_fix_test.png"
page.screenshot(path=screenshot_path, full_page=True)
print(f"\n📸 截图保存: {screenshot_path}")
finally:
page.close()
context.close()
browser.close()
print("\n✅ 测试完成!")
if __name__ == "__main__":
test_windows_fix()