diff --git a/design/engineering/test-conventions.md b/design/engineering/test-conventions.md index c9eee8a7..32f46d5e 100644 --- a/design/engineering/test-conventions.md +++ b/design/engineering/test-conventions.md @@ -20,6 +20,8 @@ 凡模态覆盖层,探针必须断言:打开后自身 visible 且遮挡物已隐藏(模态被遮挡 = 功能存在但不可达)。 +**UI 驱动断言须走真输入管线(2026-11-06 立)**:探针里「点按钮/点场景物件」类驱动断言,一律经引擎输入管线承载(合成 InputEvent 走 `push_input`,press+release 成对;合成滚轮同样必须 press+release 成对——只发 press 会把鼠标焦点钉死在按下点控件上,后续点击全部失效);信号直发(`pressed.emit()` 等)绕过命中测试,保不了「玩家点击可达」,只许用于真输入到不了的面并当场标〔接线断言〕(现役例:置灰态穿透钉处理器兜底)。折叠区控件先以真输入滚轮滚入可视区再点。每个动线断言钉「落点」判定(点了之后到哪个屏/哪层可见),防驱动中断后的空转假绿。真输入命中控件时自动登记控件覆盖(探针共用面登记件落 `.gates/` 观测产物),覆盖面生长不靠人记。 + ## 3. 缺陷修复必须沉淀回归断言 每个缺陷修复必须在探针或冒烟中留下能抓住该缺陷的断言(例:封印动作耗尽 AP → 必须进入第 2 轮; diff --git a/game/probe/probe_coverage_recorder.gd b/game/probe/probe_coverage_recorder.gd new file mode 100644 index 00000000..feff5ca1 --- /dev/null +++ b/game/probe/probe_coverage_recorder.gd @@ -0,0 +1,207 @@ +# probe_coverage_recorder.gd — 真输入覆盖登记件(探针共用面) +# 是什么:探针/C 驱动件把合成 InputEvent 经 Viewport.push_input 送进引擎输入管线时,登记 +# 「真输入实际命中了哪些交互控件」,探针收尾落 JSONP 式 .js 到 tests/.gates/coverage/ +# (.js 供 file:// 页面