Wi-Fi setup is the first thing a connected device asks of its owner, yet it crosses firmware, mobile OS dialogs, radio discovery, credentials, and router behavior. Groundrun put an ESP32-C6 and an Android phone into the same hardware-in-the-loop rig and turned five commissioning paths into repeatable CI flows.
The suite exercises the real user paths:
- Bluetooth LE sends credentials directly from phone to board
- Soft AP makes the phone join a temporary network created by the board
- Captive portal adds a short-lived, OS-controlled browser form
- SmartConfig broadcasts encoded credentials while the board listens
- WPS has the router and board negotiate without an app
Each run records firmware flashing, app launch, access-point setup, provisioning, confirmation, and teardown separately. That split showed what one total would hide:
- Full scenarios ranged from 45 seconds for WPS to 124 seconds for Soft AP
- The provisioning step alone took 6 seconds for WPS and 77 seconds for Soft AP
- Captive-portal tests must submit before Android closes the sign-in page
- Bluetooth and Soft AP must wait for unpredictable system dialogs
- WPS requires the rig to create and remove its own 2.4 GHz network
The broader lesson is that onboarding reliability lives at system boundaries. A firmware unit test cannot tell you whether Android displayed its dialog late, closed a portal early, or whether retained credentials changed the next boot.
Treat those user-visible flows as product contracts: exercise the real hardware and OS, run them on every change, and retain phase-level timings so a passing test cannot quietly become an unusably slow one.