Testing at AptixLabs is layered, not exhaustive. The standard the studio holds to is "no crash, no data loss, no broken auth flow" — and the tests follow that priority.
The four layers
- Pure logic — anything that takes data in and returns data out — gets Vitest unit tests
- Firestore security rules — tested with the official Firebase emulator so a bad write can't reach production
- Mobile end-to-end — Detox on a real-device farm for the auth + workout + sync flows
- Web end-to-end — Playwright smoke + visual regression against staging on every deploy
What we deliberately don't test
The studio doesn't chase 100% coverage. It covers the paths that, if they break, lose user trust: auth, payments, programme writes, any AI tool-call boundary. UI snapshot tests on pure-display components are skipped — they break on every styling change and add no real safety.
Visual regression with Playwright
Every staging deploy captures full-page screenshots of every route at desktop and mobile widths. The CI diffs against a baseline; differences over a threshold open a PR comment for review. This catches CSS regressions that pass type-check and unit tests.
Before every store release
- Manual exploratory testing on a real device, real network
- Crash-free-session rate check on the previous build
- A 24-hour TestFlight + internal-test soak before promoting to production
