DESKTOP TESTING, UNDER THE SURFACE
One protocol.
Two ways in.
Real actions.
Choose the backend for the application—not the other way around. Use the interface that fits your workflow.
INSIDE OR OUTSIDE
Your app.
Your machine.
The Qt generic plugin runs inside the application. The external backend reaches it through OS accessibility and input. Python, CLI and MCP clients speak the same local protocol.
The probe listens on a local socket restricted to the current user, or a Windows named pipe—not an exposed remote testing endpoint.
Explore the Qt probeCHOOSE YOUR INTERFACE
One toolkit.
Your kind of workflow.
Small terminal commands, Python composition or MCP tools for an AI agent.
SMALL COMMANDS. PRECISE TARGETS.
Speak the language of the interface.
Find a named button, type into a field, wait for a result and save a screenshot. Launch and connect to the application first.
python3 -m testhand click '#greetButton'
python3 -m testhand type Ada --target '#nameEdit'
python3 -m testhand screenshot --out result.pngA LIBRARY FOR YOUR WORKFLOW.
Compose tests in Python.
Use the Python client for actions, selectors and inspection. Keep application setup and assertions in the workflow you already use.
Python library: client/testhand/
Actions, selectors, waits and screenshots
See the product README for the APITOOLS FOR AI AGENTS.
Give an agent a desktop view.
Connect an MCP-compatible agent to the TestHand server. It can inspect an application, use controls, wait for changes and receive screenshots.
launch_app → get_tree → find
click → type_text → wait_for
screenshot → inspect → quit_appDIFFERENT REACH. CLEAR BOUNDARIES.
Built for local testing.
Not every app, everywhere.
Qt probe
Widgets, QML, object properties, supported offscreen execution and Qt recording.
Desktop backend
External accessibility, screen capture and actual keyboard/mouse input. Permission and OS differences apply.
Local testing. Real platform differences.macOS, Linux and Windows support differs. External desktop access may require OS permissions; available targets depend on accessibility support. No universal app compatibility or zero-permission promise.
FROM AN IDEA TO A REPEATABLE TEST
Your next test.
A little more human.
Choose the right backend, connect to your application and start with one small workflow.
Get started