QA harness CLI
Every hugin qa subcommand for release-time UI and design-system validation — walkthroughs, wiring audits, runtime traversals, E2E gates, and design audits.
The hugin qa commands are the release-time validation harness. They drive
the running Hugin binary through its UI command socket (~/.config/hugin/ui_command.sock)
to walk every sidebar tab, exercise controls, and assert the design system
hasn't drifted. Use these before cutting a release.
All commands write a JSON report to the output directory and exit non-zero on failure (configurable per command).
walkthrough
Walk every sidebar tab: navigate to it, list registered components, read their state, and optionally capture a screenshot. The broadest smoke test.
hugin qa walkthrough --out /tmp/hugin-release-0.1.0
hugin qa walkthrough --capture --settle-ms 400
hugin qa walkthrough --views SiteMap,Repeater,Scanner --strict-views
| Flag | Default | Description |
|---|---|---|
--out | /tmp/hugin-release-0.1.0 | Output directory for report JSON + PNGs |
--capture | off | Capture per-tab window screenshots (needs screencapture on macOS) |
--settle-ms | 250 | Milliseconds to wait after NavigateView before probing |
--strict-views | off | Treat unknown views (no from_name match) as fatal |
--views | all | Comma-separated filter using variant names or labels |
wiring-audit
Runtime wiring audit: navigate tabs, list registered controls, read supported
state. Similar to walkthrough but focuses on control readback rather than
screenshots.
hugin qa wiring-audit --out /tmp/hugin-ui-wiring --fail-on-unreadable
| Flag | Default | Description |
|---|---|---|
--out | /tmp/hugin-ui-wiring | Output directory for report JSON |
--settle-ms | 250 | Wait after NavigateView before probing |
--strict-views | off | Unknown views are fatal |
--views | all | Comma-separated filter |
--fail-on-unreadable | off | Exit non-zero when readable components fail state readback |
settings-audit
Settings window wiring audit: open Settings and read each nested tab.
hugin qa settings-audit --fail-on-unreadable
| Flag | Default | Description |
|---|---|---|
--out | /tmp/hugin-ui-settings | Output directory for report JSON |
--settle-ms | 250 | Wait after settings tab changes |
--fail-on-unreadable | off | Exit non-zero when components fail state readback |
runtime-traversal
Runtime traversal: navigate tabs and exercise safe controls through UiAction
dispatch. Goes beyond wiring-audit by actually interacting with controls,
not just reading their state.
hugin qa runtime-traversal --strict
| Flag | Default | Description |
|---|---|---|
--out | /tmp/hugin-ui-runtime | Output directory for report JSON |
--settle-ms | 250 | Wait after view changes or UI actions |
--strict-views | off | Unknown views are fatal |
--views | all | Comma-separated filter |
--strict | off | Exit non-zero on any failed runtime probe |
e2e
Launch E2E gate: seed data and verify core UI/backend workflows through the live socket. The gate that must pass before a release ships.
hugin qa e2e --strict
| Flag | Default | Description |
|---|---|---|
--out | /tmp/hugin-ui-e2e | Output directory for report JSON |
--settle-ms | 300 | Wait after view changes or UI actions |
--strict | off | Exit non-zero on any failed workflow |
design-audit
Static design-system audit: checks primitive token drift and inventories raw Dioxus controls. Does not need a running binary — this is a source-tree scan.
hugin qa design-audit --strict-shared-controls
hugin qa design-audit --fail-on-raw-controls
| Flag | Default | Description |
|---|---|---|
--out | /tmp/hugin-ui-design | Output directory for report JSON |
--strict-shared-controls | off | Fail on raw Dioxus controls in shared components already migrated to UI primitives |
--fail-on-raw-controls | off | Also fail while raw Dioxus controls exist outside UI primitives |
The QA harness requires a running Hugin binary (except design-audit).
Start the desktop app or a headless instance before running walkthrough,
wiring-audit, runtime-traversal, or e2e.