test(sweep): capture the no-peers node banner on its full-node sweep target

renderNodeStatusBanner suppresses itself during a UI sweep (the forced demo
state would otherwise paint a banner over every tab). Add a narrow opt-in
(sweep_show_node_banner_) so ONLY the overview-no-peers target shows it; every
other capture is unchanged. The target also clears connection_in_progress_ so
the evaluator classifies the state as no-peers rather than "connecting".

Verified in a full-node + DRAGONX_ENABLE_UI_SWEEP build: the banner renders as
"Connected, but no network peers — the node can't sync · Check your internet
connection and firewall, then restart the node to find peers." (Restart button
only appears with an embedded daemon, which the sweep has none of.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 23:59:03 -05:00
co-authored by Claude Opus 4.8
parent cd9ca4cd77
commit 5cfa713be1
3 changed files with 7 additions and 2 deletions
+3 -1
View File
@@ -2637,7 +2637,9 @@ void App::renderNodeStatusBanner()
// wallet switch, an in-flight daemon restart, the screenshot sweep (forces demo state), and
// shutdown. tryConnect() sets connection_in_progress_ before the first render on normal
// startup, so the ordinary boot path is covered by the evaluator's own in-progress guard.
if (capture_mode_ || isShuttingDown()) return;
// Suppressed during a UI sweep (its forced demo state would otherwise paint a banner over every
// tab) — except on the one sweep target that exists to capture the banner itself.
if ((capture_mode_ && !sweep_show_node_banner_) || isShuttingDown()) return;
if (getWizardPhase() != WizardPhase::None) return;
if (wallet_switch_phase_.load() != 0) return;
if (daemon_restarting_.load()) return;