批2(QA harness·B覆盖总览面板+本体枚举器): 义务层=tools/extract_capability_list.py(README能力清单四列表按旅程段解析,7段103行,用例指针剥反引号); 执行层=tools/coverage_receipts.py六源回执明细化(冒烟/单元集成/系统/探针/渲染/静态各一.js,名×结果×计数粒度,日志缺失=not_run亮灰不冒充绿)+run_all_gates.sh末尾挂点(观测件非判定件,解析失败打红字不翻闸判)+probe_manifest.js(面板file://无法列目录,按现存登记文件落清单); 机器义务双源之本体源=tools/coverage_enum.py(两扫描器+比对:.tres行集/schema词表字段/tscn按钮/gui_input自绘类/屏模态清单×extract_checks断言文料,865实体/缺口212); 呈现层=tools/coverage_report.html(四节:六层闸况/能力行×六层灯按旅程段/控件下钻交互源+渲染golden展示源/本体对账缺口×探针命中降级探针承载;状态灯四态+数据时间戳陈旧可见+完备性边界页眉;JSONP直载file://即开); 豁免=tools/coverage_exemptions.js人工维护母版; 登记件扩seen面(场景树全量BaseButton+db布局表hotspot_key公共面枚举,seen-hit=存在但零真输入覆盖缺口数据源)。读数: 两探针窄跑绿(screen_flow 19命中/116存在,ui_click 27命中/91存在——停手钮/树购买重建代等真缺口在册,弃图刷新确认链走视图方法属衔接条目余项); 六源明细化对真实闸日志抽核(unit82套件/系统69检查/探针10段/静态13条/golden逐屏L1-L3); 面板浏览器真实入口四节渲染验过; 全量档闸【验收通过】无新增红(exit=0,回执commit 07d4977f,六源明细化在闸内实跑=挂点真路径验证)
This commit is contained in:
1 parent
07d4977f41
commit
bb9ce8a117
7 files changed
+745
No files matched your search
@@ -164,6 +164,38 @@ func _bump(key: String) -> void:
|
||||
_hits[key] = int(_hits.get(key, 0)) + 1
|
||||
|
||||
|
||||
# ---- 场景树全量交互面枚举(控件缺口数据源:seen−hit=「存在但零真输入覆盖」)----
|
||||
# 成员面与登记同源:场景树全部 BaseButton(main 建树常驻——未开过的屏的钮也算存在;
|
||||
# 已接线钮复用接线键防序位错位,未接线者落盘期才补键——落盘是终态动作,序位计数此后不再消费)
|
||||
# +营地物件(经 db 布局表 hotspot_key 公共数据面枚举;物件命中见 _on_camp_object 的 #物件id 后缀)。
|
||||
func enumerate_seen() -> Array[String]:
|
||||
var keys: Array[String] = []
|
||||
_seen_into(_main, keys)
|
||||
var db = _main.get("db")
|
||||
if db != null and db.get("presentation") != null:
|
||||
var layout = db.presentation.camp_scene_layout
|
||||
if layout != null:
|
||||
for spec in layout.layers:
|
||||
var hk: StringName = spec.hotspot_key
|
||||
var ck := "camp_object#" + String(hk)
|
||||
if hk != &"" and not keys.has(ck):
|
||||
keys.append(ck)
|
||||
return keys
|
||||
|
||||
|
||||
func _seen_into(node: Node, keys: Array[String]) -> void:
|
||||
if node is BaseButton:
|
||||
var id := node.get_instance_id()
|
||||
var key := String(_node_keys.get(id, ""))
|
||||
if key == "":
|
||||
key = _assign_key(node)
|
||||
_node_keys[id] = key
|
||||
if not keys.has(key):
|
||||
keys.append(key)
|
||||
for child in node.get_children():
|
||||
_seen_into(child, keys)
|
||||
|
||||
|
||||
# ---- 落盘(JSONP 式 .js——file:// 页面 <script src> 直载)----
|
||||
|
||||
func dump_js() -> void:
|
||||
@@ -183,6 +215,7 @@ func dump_js() -> void:
|
||||
var total := 0
|
||||
for k in _hits:
|
||||
total += int(_hits[k])
|
||||
var seen := enumerate_seen()
|
||||
var payload := {
|
||||
"meta": {
|
||||
"probe": _probe_name,
|
||||
@@ -192,9 +225,11 @@ func dump_js() -> void:
|
||||
"driver": "InputEvent via Viewport.push_input(真输入管线)",
|
||||
"key_shape": "锚链归一化(具名/脚本锚+类#文本+序位;@ 临时名不入键)",
|
||||
"hits_total": total,
|
||||
"seen_total": seen.size(),
|
||||
"skipped_temp_names": _skipped_temp,
|
||||
},
|
||||
"hits": _hits,
|
||||
"seen": seen,
|
||||
}
|
||||
var js := "/* 真输入覆盖登记——探针每次运行自动覆写,人工修订无效(豁免面走人工清单,不落本文件)。 */\n"
|
||||
js += "window.__QA_COVERAGE__ = window.__QA_COVERAGE__ || {};\n"
|
||||
|
||||
Reference in new issue
Block a user