Summary
Every test in tests/ mocks the HTTP layer with respx. Nothing runs the server against a real gateway. A change in the gateway API, a mismatch between the generated client and the live OpenAPI document, or a transport problem would leave the whole suite green.
A manual run against the published gateway image shows the chain works today. ros2_medkit_status_get returns ready for an app and for the host component, and all five lifecycle transitions return 501 [not-implemented] Lifecycle control not available for this entity when no lifecycle provider is registered. None of this is repeatable in CI.
Proposed solution (optional)
Start the published gateway image in CI, wait for /health, discover one app and one component from the running graph, then drive the registered MCP handlers against them.
Lifecycle is a good first case. Both of its outcomes are stable on a plain gateway with no plugins, so the test needs no fixture beyond the image itself.
Additional context (optional)
This is new test infrastructure for this repository, not a change to existing tests.
Summary
Every test in
tests/mocks the HTTP layer with respx. Nothing runs the server against a real gateway. A change in the gateway API, a mismatch between the generated client and the live OpenAPI document, or a transport problem would leave the whole suite green.A manual run against the published gateway image shows the chain works today.
ros2_medkit_status_getreturnsreadyfor an app and for the host component, and all five lifecycle transitions return501 [not-implemented] Lifecycle control not available for this entitywhen no lifecycle provider is registered. None of this is repeatable in CI.Proposed solution (optional)
Start the published gateway image in CI, wait for
/health, discover one app and one component from the running graph, then drive the registered MCP handlers against them.Lifecycle is a good first case. Both of its outcomes are stable on a plain gateway with no plugins, so the test needs no fixture beyond the image itself.
Additional context (optional)
This is new test infrastructure for this repository, not a change to existing tests.