摘要

Arena 的选秀(开局轮流挑选英雄技能、宝物、生物等)正在迁移到新的“共享档位”实现。迁移后有一批测试失败,其中一部分并不是规则没做完,而是测试自己构造了不合法的局面。本次只改测试构造,不改任何生产规则、AI 评分、目录或校验器:修正后目标测试通过,剩余失败(档位池耗尽、依赖种子的场景假设、整局导出断言)原样保留,整体产品门槛仍是红的。

要回答的问题

在失败测试里,哪些是“夹具(测试预先搭好的局面)本身不合法”,哪些是真正的未完成规则?前者修掉之后还剩什么?

方法

  1. 终局技能类测试:原来固定使用已过时的 draft-state.v8 状态。现在先由引擎正常创建状态,再设置要展示的场景;等级与效果的原断言不变。
  2. Kittenhorn、Qilin、Halfling 的固有属性/冲突说明:原来放在一个“不同档位混在一起”的报价里,这在真实选秀中不可能出现。现在逐个单独测试,另用一次真实选秀推进到生物阶段,展示同档报价,再按玩家选的编号执行对应的权威命令。
  3. Lightweaver 等替代升级能力测试:原来把随机生物改名后沿用了原兵种的专长标记。现在用公开的部队构造夹具(施法者、两个友军、两个敌人),目标枚举、预览、实际动作、状态文字的断言全部保留。生产里的专长来源一致性检查不变。
  4. 冰刺(Icy Spikes)混合首次施加与重复施加:种子 246 下三个敌人中只有两个预先带了状态,旧断言却假设三个都有,于是在合法的空值上报错。这是测试假设错误,不是网页投影丢了状态。改为显式摆放:一个预标记的邻居、一个新目标,分别检查“延长已有来源到 4 回合”和“新施加 2 回合”,并逐个对照实际结算回执与预览。

结果

运行 结果
终局技能 + 两个 Lightweaver 用例 10 通过
改终局后的 App/Integration 全量(此时 Lightweaver 夹具尚未修) 1519 通过、15 失败,239.81 秒
Lightweaver 修正后的网页会话文件 163 通过、6 失败,13.49 秒
冰刺修正前的完整 App 回归 1418 通过、10 失败,204.64 秒;与前一次相比只少了冰刺这一项失败
冰刺最终版的网页会话文件 164 通过、5 失败,98.12 秒;5 项都是原有的共享档位/整局失败

失败与负结果

剩下的失败包括固定档位池耗尽、依赖种子的场景假设和整局导出断言。这些不是被豁免的失败:完整产品门槛仍然没有通过。是否引入“池耗尽时的回退”必须先完成对原生游戏选秀池的独立调查。

局限

  • 只改测试构造,不声明任何浏览器渲染变化,也没有新的浏览器测试。
  • 不证明原生游戏的细微结算顺序;也不修共享档位耗尽问题。
  • 文件里原有的 160 条 Ruff 提示与此前完全相同,没有顺手处理。

结论与下一步

把“夹具非法”与“规则未完成”拆开后,剩余红灯更能反映真实缺口。下一步是独立调查原生选秀池,再决定共享档位的耗尽处理。