A bug in a puzzle mechanic annoys someone. A bug in a payout costs money and trust, and you will hear about it in the store reviews for months. The two are not tested the same way.
Four layers, cheapest first
Nothing reaches manual testing until the layers below it are green. That is not process for its own sake - it is about spending the expensive attention where it counts.
- Unit tests on the reward and wallet logic, where the maths lives
- API tests against the backend contract, including the failure paths
- Automated UI tests on the flows that must never break: sign-up, earn, withdraw
- Manual exploratory testing, on real devices, by someone trying to break it
The flows we never ship without re-checking
Every release re-runs the same core: create an account, earn a reward, watch the balance update, request a payout, confirm it settles. It takes minutes automated and it has caught more real problems than any other single thing we do.
What we deliberately leave manual
Feel is not automatable. Whether an animation lands, whether a reward feels earned, whether a screen is confusing on a small phone - a person has to look at that. We also test on genuinely low-end hardware, because the device a lot of our players actually own is not the device the team carries.
A red build has to mean something
The fastest way to kill a test suite is to let it go flaky. If a failure might be noise, people stop reading failures. We track flake rate as its own metric and fix flaky tests as bugs, not as chores.