Mobile
What to test in mobile apps: real devices, OS versions, offline mode, push notifications and deep links.
Yes5
- Is testing on an emulator enough?
No, an emulator alone is not enough before a release: keep the automated suite on emulators, and run the main flows on one or two real phones before each store release.
Code under test: Yes
Yes, test how your app handles a slow network: with a fake server that trickles or withholds each response, assert that the screen shows a loading state, ends in an error with Retry within the call timeout, and sends no duplicate request.
Test minimally on low-end devices: before each release, run one automated test of the main flow on one real Android phone with 3 GB of RAM or less, and stop the release when the app crashes, stops responding, or starts slower than a set limit.
Yes, test a React Native app: unit tests for its logic and one component test per main screen flow, written with Jest and React Native Testing Library and run in CI on every pull request.
Yes, unit test view models: with a fake repository, assert the screen state after a successful, an empty and a failed load and after each user action, in local tests that need no device.