#!/usr/bin/env python3 """ 测试修复后的最终Canvas 2D版 """ import asyncio from playwright.async_api import async_playwright import time async def test_final_version(): """测试最终Canvas 2D版""" print("🎮 测试修复后的最终Canvas 2D版") print("="*60) async with async_playwright() as p: browser = await p.chromium.launch(headless=True) context = await 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 = await context.new_page() try: # 导航到页面 await page.goto("http://129.211.173.87:8895/games/tetris/tetris_final_canvas2d.html", timeout=10000) print("✅ 页面加载成功") # 等待页面完全加载 await page.wait_for_load_state('networkidle', timeout=5000) # 捕获控制台日志 console_logs = [] def handle_console(msg): console_logs.append(msg.text) print(f" 控制台: {msg.text}") page.on('console', handle_console) # 检查Canvas canvas_count = await page.locator('canvas').count() print(f"✅ Canvas数量: {canvas_count}") if canvas_count > 0: canvas = page.locator('canvas').first canvas_size = await canvas.bounding_box() if canvas_size: print(f"✅ Canvas尺寸: {canvas_size['width']}x{canvas_size['height']}") # 点击开始按钮 await page.locator('#start-btn').click(timeout=3000) print("✅ 点击开始按钮") # 等待游戏开始 await asyncio.sleep(2) # 检查日志 spawn_logs = [log for log in console_logs if '生成新方块' in log] move_logs = [log for log in console_logs if '移动方块到' in log] if spawn_logs: print(f"✅ 方块生成: {spawn_logs[-1]}") else: print("❌ 未检测到方块生成") if move_logs: print(f"✅ 方块移动: {len(move_logs)}次") for i, log in enumerate(move_logs[:3]): # 显示前3次移动 print(f" 移动{i+1}: {log}") else: print("❌ 未检测到方块移动") # 等待更多移动 await asyncio.sleep(3) # 检查是否有更多移动 move_logs = [log for log in console_logs if '移动方块到' in log] print(f"✅ 总移动次数: {len(move_logs)}") # 检查位置是否正确 valid_positions = [log for log in move_logs if 'NaN' not in log] if valid_positions: print(f"✅ 有效位置: {len(valid_positions)}/{len(move_logs)}") print(f" 示例: {valid_positions[-1]}") else: print("⚠️ 所有位置都是NaN,需要进一步调试") # 截图 screenshot_path = "/tmp/test_final_fixed.png" await page.screenshot(path=screenshot_path, full_page=True) print(f"✅ 截图保存: {screenshot_path}") # 显示所有相关日志 print("\n📋 相关日志:") for log in console_logs: if any(keyword in log for keyword in ['生成', '移动', 'Canvas', '初始化', '开始']): print(f" {log}") return True except Exception as e: print(f"❌ 测试失败: {str(e)}") return False finally: await browser.close() if __name__ == "__main__": success = asyncio.run(test_final_version()) if success: print("\n🎉 测试成功!最终Canvas 2D版工作正常!") print("访问: http://129.211.173.87:8895/games/tetris/tetris_final_canvas2d.html") else: print("\n⚠️ 测试失败,需要进一步调试")