Changed SDK in our bench setup. Old wrapper expected one status value; the replacement gives a container with extra information. A failed request now reaches the display as a plausible reading. I've stopped using that screen for the trial. Need to untangle the parsing before restoring it.
Capture successful and failed returns from that exact installed version, with the documented return contract beside them. Check success before extracting the reading. Don't select the first numeric field simply because it resembles the value your old wrapper used.
Saved both. The wrapper's fallback takes a numeric field after the old extraction fails. That explains the plausible number. Removing it and testing the parser offline first.
What happens to the previous successful reading when the next request fails? Leaving it unchanged can make the screen look current even after you remove the bad fallback.
Had a test substitute hide a version mismatch on our teaching setup. Use the recorded returns here, not a fake response invented to suit the new parser
Include malformed and missing data too. A successful request with no usable reading still shouldn't paint a current status. Or rather, request success and a valid reading need separate checks.
Will, it currently keeps the old value with no stale indication. Added that to the offline cases. Jasper, missing data now has its own expected unavailable state rather than falling through to a number.
Show the time of the last valid observation if you retain it for reference. Make its age and the failed update visible; don't require the operator to infer them from a stationary number.
Parser tests now separate valid readings, reported request failures and invalid responses. Unexpected parser errors stay visible in diagnostics. The proposed screen marks retained data as old, but the operator review hasn't happened yet. Still offline.
When you review that screen, include startup before any valid reading exists. There isn't an old value to label in that case (and zero shouldn't quietly stand in for one).