Skip to content

v0.8.1 — QA automation infrastructure

Choose a tag to compare

@pizzimenti pizzimenti released this 28 Apr 23:05
· 48 commits to main since this release
7c65dd6

QA automation infrastructure. Adds a headless QML/UI verification suite that closes the gap left by the v0.8.0 fast-path subagent workflow.

What's new

  • voiceagent-qatest.sh — single-command headless QA gate. Runs pytest tests/ then tests/qml/qmltest_main.py (a QtQuickTest.QUICK_TEST_MAIN_WITH_SETUP driver that registers i18nCtx on the test engine before any tst_*.qml parses).
  • 16 new Quick Tests under tests/qml/:
    • tst_session_setup_pane.qml — Kirigami.FormLayout shape, FormData.label rows, wideMode flips with compactMode (PR #22).
    • tst_main_window.qml — page-header actions and verbose-log toggle reachability (PR #22).
    • tst_scroll_mode.qml — locks in inertial vs direct branching of MainWindow.scrollList (PR #23).
  • tests/test_replay_toast.py — pytest verification of the replay-failure toast wiring round-trip into the Kirigami passive-notifications overlay (PR #24).

Bug fix discovered by the new suite

The PR #24 QML wiring used Connections { target: voiceAgent; function onReplayFailed }, but Qt does not auto-camelCase a snake_case Python signal (replay_failed) for runtime Connections-handler resolution, so the toast silently never fired. Switched to Component.onCompleted: voiceAgent.replay_failed.connect(...), which binds correctly. The new test_replay_toast.py locks the wiring in.

Test gates

Gate Coverage
pytest tests/ Python-side logic + pytest-qt interaction
voiceagent-compiletest.sh "does QML load?" — qmllint + real-engine load
voiceagent-qatest.sh "does QML behave?" — Quick Tests + interaction

The user's manual smoke test now reduces to subjective items only: visual layout feel and animation tempo.