Real Devices vs. Emulators: What You Only Catch on Hardware
Emulators are good. They're fast, free, scriptable, and they belong in your pipeline — most of your suite should run on them. This isn't an argument for replacing them.
It's an argument about the last mile: the class of bug that an emulator, by construction, cannot show you.
What an emulator actually is
An emulator runs the OS on your machine's CPU and GPU, backed by your machine's network and your machine's memory. That's exactly why it's fast. It also means every layer where mobile hardware is different has been replaced with something convenient.
So the bugs that live in those layers don't appear.
What only shows up on hardware
Real GPU and thermals. Your laptop has more graphics power and better cooling than a phone. Scroll jank, dropped frames and animation stutter that a user sees after ten minutes of use often don't reproduce on a desktop GPU that never throttles.
Real networks. An emulator's network is your office Wi-Fi. Not a train tunnel, not a congested cell, not a captive portal that intercepts your first request. Timeout and retry logic is precisely the code that only gets exercised under bad conditions.
OEM skins. Stock Android in an emulator is not One UI, or MIUI, or a carrier build with its own permission prompts and battery-optimisation rules. Background work that survives on stock Android gets killed on a real handset with aggressive power management.
Permission and system dialogs. The real OS interrupts. A permission sheet, a "low storage" warning, an OS update banner, an incoming call — each can land on top of your flow at the wrong moment. Emulator runs are suspiciously undisturbed.
Hardware-backed features. Biometrics, the actual camera, NFC, real GPS drift, Bluetooth pairing, push delivery through the real notification service. These are stubbed or absent.
Real touch. Fingers are imprecise and fast. A tap target that's comfortable with a mouse click at exact coordinates can be genuinely hard to hit on glass.
The practical split
A reasonable division of labour:
| Run on emulators | Run on real devices |
|---|---|
| Unit and integration tests | Release smoke tests |
| Most functional regression | Performance and scroll behaviour |
| Fast PR feedback | Anything touching camera, biometrics, push, GPS |
| Broad OS-version sweeps | The bug a customer reported that you can't reproduce |
The failure mode isn't "we used emulators." It's "everything passed on emulators, so we shipped."
Getting a real device into the loop
The reason teams skip hardware is friction: buying handsets, keeping them charged, updating them, wiring them to CI. That's the part worth removing rather than the testing itself.
On RobotActions, a device is dedicated to you — provisioned on demand, not pulled from a shared pool, so state persists between runs and there's no queue. Point your existing Appium, Selenium or Playwright suite at the grid and keep every test you've written; nothing needs rewriting to start running the last mile on hardware.
Ready to test on real devices?
Sign in with Google or GitHub and get real iOS and Android devices in your browser — free to try.