Skip to content

Automation bridge: enable driving stream/render burst states (line-edit commit, menu actions, render size) #3813

Description

@ten9876

Summary

While using the automation bridge to test the VITA-49 buffer-drop burst states (#3810), I hit three gaps that made the burst conditions undrivable headlessly. Filing them together since they share a theme: the bridge can introspect and nudge controls, but can't reproduce the stream-affecting state changes (retune, zoom, band, connect) or the render-size-dependent behavior that those bugs actually depend on.

Bridge background: docs/automation-bridge.md, AutomationServer, introduced in #3646.

Gaps found

1. QLineEdit has no commit action

invoke "Frequency entry" setText 14.200 sets the text but never fires returnPressed/editingFinished, so the radio doesn't retune. Verified: setTextle->setText(value) only (AutomationServer.cpp ~1388). So band-jumps — a primary panadapter re-prime trigger — can't be driven.

Proposal: add a commit action, e.g. invoke <target> submit (or returnPressed) that calls le->setText(v); emit le->returnPressed(); emit le->editingFinished();, or have setText optionally commit.

2. Menu / context-menu actions are unreachable unless already popped up

invoke "Zoom In", "Connect to Radio…", "Radio Setup…" all return widget or visible menu action not found — they live in a menu bar / panadapter right-click menu that isn't open, and invoke only resolves visible QActions. So zoom, band-plan, connect/disconnect, and opening dialogs (incl. the new RX-buffer slider in Radio Setup) can't be driven.

Proposal: allow invoking a QAction by exact text/objectName even when its menu isn't shown (trigger it directly), and/or an openMenu <name> verb to pop a menu so its actions become resolvable.

3. No way to set render size → headless panadapter never bursts

Offscreen (QT_QPA_PLATFORM=offscreen), the panadapter stays at x_pixels≈50, vs x_pixels=1873 on a real full-size window. The FFT/waterfall stream rate (and the rhiFlush composite cost in #3797) scale with that size, so render-size-dependent behavior can't be exercised headlessly — a buffer-overflow burst that drops 370 packets on a real window produces 0 packets headless. This blocks automated burst/perf regression testing.

Proposal: a verb to set the top-level window geometry / the offscreen virtual-screen size (or force a panadapter x_pixels), so headless runs can reproduce a realistic render size.

Why it matters

These three would let an agent drive the full "snapshot → act → assert" loop for streaming and rendering states — band changes, zoom, connect/disconnect, and realistic panadapter sizes — which is exactly what's needed to regression-test #3810 (buffer drops) and #3797 (render bottleneck) headlessly. Today the bridge can assert on control state but can't create these conditions.

Found while driving the bridge for the #3810 buffer-drop A/B (the headless arms all showed 0 drops because the offscreen panadapter never bursts — gap #3).

cc @jensenpat (bridge author)

Metadata

Metadata

Assignees

Labels

GUIUser interfaceenhancementImprovement to existing featuremaintainer-reviewRequires maintainer review before any action is takenspectrumPanadapter and waterfall

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions