Files
gammaray-mcp/tests
2026-07-07 20:40:29 +08:00
..
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00
2026-07-07 20:40:29 +08:00

Test Suite

Integration tests for the gammaray-mcp bridge, written in Python using pytest. Tests communicate with the bridge over stdio JSON-RPC (the same protocol MCP clients use), exercising every tool end-to-end against a real GammaRay probe.

Prerequisites

  • The bridge must be built: cmake --build bridge/build
  • pytest (install via pip3 install pytest or pip install pytest in a venv)
  • For probe-dependent tests: a QML test app at ~/Sources/testqml/relayout.qml (configurable via TEST_QML env)

Running

# From the project root:
./tests/run_tests.sh --no-probe    # unit tests only (no probe needed)
./tests/run_tests.sh -v            # full suite, verbose
./tests/run_tests.sh -k "item"     # run only item-related tests
./tests/run_tests.sh --no-probe -x # stop on first failure, no probe

Or directly with pytest:

cd tests
LD_LIBRARY_PATH=../install-prefix/lib \
QT_QPA_PLATFORM=offscreen \
QT_PLUGIN_PATH=../bridge/build/lib/x86_64-linux-gnu/qt6/plugins \
pytest -v

Test files

File Tests Probe required
test_connection.py connectProbe, probeStatus, disconnectProbe, reconnect Yes (except test_tools_listed, test_probe_status_disconnected)
test_navigation.py listQuickWindows, selectQuickWindow, listQuickItems, listScenegraphNodes Yes
test_items.py selectQuickItem, getItemProperties, position, visual properties, groups Yes
test_scenegraph.py selectScenegraphNode, getNodeVertices, getNodeAdjacency, getMaterialShaders, getMaterialProperties, setRenderMode, setSlowMode Yes

Markers

  • @pytest.mark.probe — test requires a running GammaRay probe. Automatically skipped with --no-probe.

Fixtures

  • bridge — fresh McpClient instance per test (initialized, not connected)
  • connected_bridge — bridge connected to a probe (via connectProbeDefault)
  • probe_process — session-scoped, starts a probe via systemd-run (fallback: direct spawn) and waits for ready()

Options

Flag Default Description
--no-probe false Skip all probe-dependent tests
--probe-timeout 15s Seconds to wait for probe to become ready