How I Built an Autonomous Physical Device QA Farm with Python, ESP32, and n8n (Bypassing AWS Device Farm)
Description and use
An autonomous QA fleet manager for physical mobile devices using ESP32-CAM, Python, OpenCV, and a Vision LLM eliminates cloud costs and USB instability.
Problem
Running automated UI tests on a fleet of physical mobile devices is expensive with cloud farms and unreliable with local hardware due to USB hub instability and OS-level screen recording overhead.
Outcome
The system enables autonomous, low‑overhead UI testing on a fleet of physical devices, eliminating cloud costs and USB instability while providing real‑time results via n8n.
Workflow
- Trigger a GitHub Action that sends a webhook to n8n.
- n8n posts to a local Python Fleet API to allocate an idle ESP32 node and its device.
- The ESP32 streams the device screen via RTSP to the server with <100 ms latency.
- Python backend captures a frame, encodes it, and sends it to a Vision LLM (e.g., gpt‑4o) with a structured prompt to assert UI elements.
- Results are routed back to n8n, which updates Jira, posts to Slack, or logs metrics.
Evidence
Cloud-based device farms (like AWS Device Farm or BrowserStack) cost thousands of dollars per month and throttle your CI/CD pipelines due to harsh concurrent usage limits.
By physically mounting a $5 ESP32-CAM over the mobile device, we decouple the testing mechanism from the device's OS entirely.
The ESP32 utilizes optimized C++ firmware to stream the physical device's screen via RTSP to the local server with sub-100ms latency.
- Record date: 2026-10-13T17:56:20.882Z