#!/usr/bin/env python3 """ 测试新的PlayCanvas版俄罗斯方块 """ from playwright.sync_api import sync_playwright import time def test_playcanvas_tetris(): print("🎮 测试 PlayCanvas版俄罗斯方块") print("=" * 60) url = "http://129.211.173.87:8895/games/tetris/" with sync_playwright() as p: browser = p.chromium.launch(headless=True) context = browser.new_context( viewport={"width": 1280, "height": 720}, user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)" ) page = context.new_page() # 收集日志 logs = [] page.on("console", lambda msg: logs.append({"type": msg.type, "text": msg.text})) try: print("📡 加载页面...") page.goto(url, wait_until="networkidle", timeout=15000) time.sleep(3) # 检查PlayCanvas加载 playcanvas_logs = [l for l in logs if "PlayCanvas" in l["text"]] print(f"✅ PlayCanvas日志: {len(playcanvas_logs)}条") for log in playcanvas_logs[:3]: print(f" {log['text']}") # 点击开始 print("\n🔘 点击开始游戏...") start_btn = page.query_selector("text=开始游戏") if start_btn: start_btn.click() print("✅ 开始按钮点击成功") else: print("❌ 未找到开始按钮") return # 等待游戏运行 print("⏳ 等待游戏运行5秒...") time.sleep(5) # 测试键盘控制 print("\n⌨️ 测试键盘控制...") page.keyboard.press("ArrowLeft") time.sleep(0.5) page.keyboard.press("ArrowRight") time.sleep(0.5) page.keyboard.press("ArrowUp") time.sleep(0.5) # 分析日志 print("\n📊 日志分析:") errors = [l for l in logs if l["type"] == "error"] print(f" 错误数: {len(errors)}") if errors: print(" ❌ 错误日志:") for err in errors[:5]: print(f" {err['text'][:100]}") else: print(" ✅ 无JavaScript错误") # 截图 page.screenshot(path="/tmp/playcanvas_tetris_test.png") print("\n📸 截图保存: /tmp/playcanvas_tetris_test.png") print("\n✅ 测试完成!") finally: browser.close() if __name__ == "__main__": test_playcanvas_tetris()