Our controller is unavailable, so I am checking the sample-status screen offline. The substitute returns true from every SDK method and accepts any arguments. A deliberately incomplete call still makes the screen look healthy. I need this test to notice an interface mistake, not congratulate it.
Make the substitute enforce the specific call contract you use. Start with the documented arguments and response shape for your installed SDK version, then make the incomplete call fail. You do not need a pretend physical robot to test that boundary.
We identified the installed version and the read-only query definition. The incomplete call now fails in the substitute. The parser still accepts a failed response because it tests whether the whole response exists.
Keep that failed response as another explicit test. Assert unavailable, not merely a nonempty label, and make successful fields distinct enough that reading the wrong one cannot accidentally pass.
It showed the default sample state as if read. We changed startup to unavailable until a successful documented response arrives. Failure after success retains the old value with its observation time and a separate current-read failure.
Good set of cases now. Does the exported report preserve that distinction between the last value and the failed current request? A screen-only correction can leave the report inventing a fresh observation.
The export failed that check. It now preserves the observation time and request outcome separately, and the offline cases pass for screen and export. Comparison with the actual controller response remains pending while the bench is unavailable.