Files
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

115 lines
4.3 KiB
Python

#!/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⚠️ 测试失败,需要进一步调试")