[DRAFT] Introduce Qt test automation bridge and gui functional tests #933

pull johnny9 wants to merge 3 commits into bitcoin-core:master from johnny9:qt-test-bridge changing 22 files +1850 −13
  1. johnny9 commented at 3:17 pm on March 12, 2026: contributor

    This PR introduces an optional Qt test automation bridge and adds a first suite of GUI functional tests for bitcoin-qt.

    The goal is to improve GUI testability and reduce reliance on manual regression testing for all of the gui flows.

    Starting as a draft to get a conversation going.

    • New CMake option: ENABLE_TEST_AUTOMATION (default OFF) • New runtime arg: -test-automation= • New files: • src/qt/testbridge.h • src/qt/testbridge.cpp

    The test automation bride creates a unix socket server that has a simple json protocol defined in src/qt/testbridge.h.

    The bridge adds the following commands to enable end to end gui validation • list_windows • get_active_window • get_current_view (alias: get_current_page) • get_property • click • set_text • wait_for_window • wait_for_view (alias: wait_for_page) • wait_for_property • get_text • save_screenshot • list_objects

    Build:

    • -DBUILD_GUI=ON • -DENABLE_WALLET=ON • -DENABLE_TEST_AUTOMATION=ON

    Run:

    • test/functional/test_runner.py gui_node_window.py • test/functional/test_runner.py gui_settings_persistence.py • test/functional/test_runner.py gui_wallet_lifecycle.py • test/functional/test_runner.py gui_wallet_receive.py • test/functional/test_runner.py gui_wallet_security.py • test/functional/test_runner.py gui_wallet_send.py • test/functional/test_runner.py gui_wallet_send_advanced.py

  2. Introduce qt test bridge 08b3d6d50b
  3. Add gui functional test coverage 2e6279f7a3
  4. DrahtBot commented at 3:17 pm on March 12, 2026: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Reviews

    See the guideline for information on the review process. A summary of reviews will appear here.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #762 (Update about logo icon (colour) to denote the chain type of the QT instance in About/ Help Message Window/ Dialog by pablomartin4btc)
    • #bitcoin/bitcoin/33974 (cmake: Check dependencies after build option interaction by hebasto)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  5. DrahtBot added the label CI failed on Mar 12, 2026
  6. DrahtBot commented at 6:29 pm on March 12, 2026: contributor

    🚧 At least one of the CI tasks failed. Task lint: https://github.com/bitcoin-core/gui/actions/runs/23009276310/job/66814867840 LLM reason (✨ experimental): Python linting failed (ruff detected unused import and lint-files.py reported 7 failed tests).

    Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:

    • Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.

    • A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.

    • An intermittent issue.

    Leave a comment here, if you need help tracking down a confusing failure.

  7. test: fix gui test lint 15349fcea6

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/gui. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-03-14 01:20 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me