diff --git a/design/engineering/test-conventions.md b/design/engineering/test-conventions.md index 75f8d9aa..4c249458 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..c7f2f27f --- /dev/null +++ b/game/probe/probe_coverage_recorder.gd @@ -0,0 +1,242 @@ +# probe_coverage_recorder.gd — 真输入覆盖登记件(探针共用面) +# 是什么:探针/C 驱动件把合成 InputEvent 经 Viewport.push_input 送进引擎输入管线时,登记 +# 「真输入实际命中了哪些交互控件」,探针收尾落 JSONP 式 .js 到 tests/.gates/coverage/ +# (.js 供 file:// 页面 + + + + + + + + + + + + + diff --git a/tools/extract_capability_list.py b/tools/extract_capability_list.py new file mode 100644 index 00000000..f1fc445e --- /dev/null +++ b/tools/extract_capability_list.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +r"""extract_capability_list.py — 能力清单义务层提取器(B 覆盖总览面板·义务层) + +把 game/tests/README.md「能力清单」的四列表(能力|系统|真实入口|代表用例)按旅程段 +解析成机器可读 JSONP .js,供 tools/coverage_report.html 经