Two of my checks were brittle, not e6adfd9

Ran the suite against the pulled commit. Two failures, both mine.

check_design_parity read the Overview column as findChildren(QScrollArea)[0].
e6adfd9 gives each event table a detail panel, which is also a scroll area and
is built first — so the probe was inspecting a detail panel and reporting the
pricing table as missing from a column it had never looked at. It now picks the
scroll area that actually contains ov_usage_group.

check_controls_alive flagged self.refresh_btn as vanished. It did, and on
purpose: the single Refresh in the Monitoring header became one per table
(title_refresh_btn on Bảo mật / MCP / Hành động / Agent). Tổng quan has none
because it auto-refreshes every 3s on _REFRESH_MS, and Icon has nothing to
refresh — I checked both before recording it in MOVED rather than assuming.

Nothing in e6adfd9 needed changing. 24/24 pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nam Pham Dinh Thanh
2026-08-19 19:21:04 +09:00
co-authored by Claude Opus 5
parent 527092f8f9
commit 2ea20a8548
2 changed files with 399 additions and 381 deletions
+7
View File
@@ -67,6 +67,13 @@ MOVED = {
"ui\\help_agent_widget.py": {
"self.collapse_btn": "→ mục 'Ẩn trợ lý' trong menu ⋯ của panel",
},
"ui\\monitoring_tab.py": {
# e6adfd9 turned one Refresh in the Monitoring header into one per
# table (page.title_refresh_btn on Bảo mật / MCP / Hành động / Agent).
# Tổng quan gets none because it auto-refreshes every 3s (_REFRESH_MS);
# Icon has nothing to refresh.
"self.refresh_btn": "→ nút 'Làm mới' riêng trên từng bảng (title_refresh_btn)",
},
"ui\\schedule_task_tab.py": {
"self.view_combo": "→ cặp tab Kanban | Lịch (view_tabs)",
},
+12 -1
View File
@@ -240,7 +240,18 @@ def main() -> int:
# --- 9/15 Monitoring ---
from PySide6.QtWidgets import QHBoxLayout, QScrollArea
from PySide6.QtWidgets import QSpinBox as QSpinBoxT
ov = mon.findChildren(QScrollArea)[0].widget()
# The Overview column is not simply the first scroll area any more — the
# event tables' detail panels are scroll areas too, and are built first
# (e6adfd9). Pick the one that actually holds Overview's own sections.
ov = None
for area in mon.findChildren(QScrollArea):
body = area.widget()
if body is None or body.layout() is None:
continue
if body.layout().indexOf(mon.ov_usage_group) >= 0:
ov = body
break
assert ov is not None, "khong tim thay cot Tong quan"
one_col = not isinstance(ov.layout(), QHBoxLayout)
add("monitoring-tổng-quan", "Một cột chính, mục có tiêu đề", one_col,
"cột dọc" if one_col else "vẫn 2 cột")