SuperAPI AI 工具集

smoke-testing-web-games

测试与质量

查看项目

更新于 10-15 10:58

技能介绍

用途

这是一个针对浏览器游戏的烟雾测试(Smoke Testing)工具,运行于真实无头浏览器中,用于在每次可触及游戏运行时的完成改动单元后执行一次门禁检查。它的目标是捕获模拟测试(mock)或仅空闲测试容易遗漏的环境问题和输入处理器问题。

主要能力

测试按顺序执行以下阶段:

  • load(加载):通过 load 事件进行导航,导航失败即判定为立即失败。
  • idle(空闲):在无任何操作的情况下等待,以发现启动过程和帧循环中的错误。
  • input(输入):发送分散的指针点击、Space 与方向键敲击,以及一段短的方向键按住操作,并在其间留出等待计时器和生成逻辑的暂停。

测试工具会按阶段打印每一个错误。退出码含义:0 表示 PASS,1 表示运行时错误或加载失败,2 表示工具本身问题,例如缺少 Playwright 或参数错误。

使用方式

环境要求

  • Node 18 及以上版本。
  • 在被测项目中安装 Playwright 与 Chromium。脚本会从其运行所在目录解析 playwright。
  • 当页面加载 CDN 资源时需要网络访问;加载失败会以控制台错误的形式呈现。

运行命令

从游戏项目目录运行:

node <skill-dir>/scripts/smoke-test.mjs path/to/index.html            # 3s idle, 6s input
node <skill-dir>/scripts/smoke-test.mjs http://localhost:5173 --idle 5 --input 10

当游戏使用 ES 模块、fetch 或其他受同源限制的功能时,应通过 HTTP 提供服务。

工具自测

node scripts/smoke-test.mjs assets/fixtures/fixture-ok.html                    # PASS, exit 0
node scripts/smoke-test.mjs assets/fixtures/fixture-input-crash.html           # FAIL, exit 1
node scripts/smoke-test.mjs assets/fixtures/fixture-input-crash.html --input 0 # PASS: idle misses the bug

适用场景

  • 每个可到达游戏运行时的改动单元完成后,作为真实浏览器门禁执行一次。
  • 用于发现模拟测试或仅空闲测试无法覆盖的环境与输入处理器故障。

限制

  • PASS 仅表示页面已加载并经受所执行的空闲与输入路径且未报告错误。它不证明循环已启动,也不证明机制、音频、视觉效果、性能、难度或平衡性正确。
  • 对于状态转换或计分公式,应改用 probing-web-game-mechanics;对于静默无操作行为,应使用专门的运行时检查进行测试。
  • 通用输入计划不覆盖自定义按键,需要扩展该计划,或将那些控制项报告为未测试。
  • 应将 CDN/网络错误视为失败,但在将一次不稳定的外部加载归因于游戏代码之前,应重新运行确认。