Connected devices
Quality engineering across a server, a desktop client and device firmware
Contract, desktop and firmware test automation for the GEMS Hub platform that controls GEM-CELL recorders, finding defects at every layer before releases went to testers.
- Client
- Acustek
- Period
- June to September 2026
- Our role
- QA lead and automation engineer alongside the product team
The platform
GEMS Hub is the control server and desktop client for GEM-CELL recorders, devices that store and forward audio, video and GPS over LTE and are woken by SMS. The product team was shipping quickly and needed independent assurance across three layers: the .NET server, the Avalonia desktop client and the device firmware.
The server
We audited every one of the server's 83 routes and wrote a Karate contract suite that covers all of them, with 702 negative scenarios for the ways each route can be misused. The suite runs in GitLab CI on every build and found 17 confirmed server bugs, each raised as a tracked issue with a failing test attached. The v2 suite adds system-integration flows and a role-based access control check, and was green on the release build.
The desktop client
The installed desktop application is driven the way an operator would use it, with Appium and Reqnroll scenarios written in Gherkin. Each action is cross-checked against the server, so a passing test means the device really did the thing, not just that a label changed. The rig includes a physical GEM-CELL woken over SMS, under a safety policy that forbids firmware uploads and cellular writes from any test.
Alongside the automation we delivered a 14-phase UI reskin of the client and built ACU-TEST, a small test management tool with a case repository, cycles, an execution board, evidence capture and a release gate, seeded with a 424-scenario regression pack.
The firmware
To test the device's C firmware without tying up hardware, we built a simulator that runs the real firmware on a host machine. Its suite has 282 passing tests and has documented 20 defects, from a DNS parser over-read to a debug image overflowing flash, several of which the firmware vendor has since fixed.
Have something similar?