Documents the E2E scaling investigation: POC findings for GHA-hosted and Mac mini runners, known blockers to resolve before reliable CI E2E, and next steps.
What belongs in E2E
Limit E2E to flows that genuinely require a real device:
- Multi-screen user journeys (e.g. login, find job, complete checklist, submit)
- Flows that depend on native modules (push notifications, camera, permissions)
- Anything that requires testing the real API end-to-end
- Deep links and background state handling
Issues in the current suite
- OS versions out of date - newer OS versions include permission changes that cause the current suite to fail.
- Screen size constraints - tests were written against specific screen dimensions and don't accommodate smaller device profiles.
- Admin user creation - simultaneous runs of the test suite share the same admin user, so runs can kick each other out mid-test.
- Platform skipping - some tests conditionally skip on one platform, hiding coverage gaps. Tests should work on both platforms or be split into two clearly-named tests.
- Backend duplication - some tests validate API behaviour rather than app behaviour. These are better owned by backend test suites.
- Silent passes when no job is available - if no suitable job is found, tests are skipped rather than failed. Coverage gaps are invisible in CI.
- Insufficient step logging - logging is inconsistent across helpers, making it hard to pinpoint failures from logs alone.
- Noisy logs from expected failures - conditional element checks cause WebdriverIO to log errors that look like real failures but aren't, polluting test output.
- Parallel runs stealing jobs - parallel runs against a shared staging environment can pick up the same job, leaving one run with corrupted or missing state.
Next steps
Resolve blockers - nothing else can be fully validated until these are fixed.
TypeScript migration - low risk, no test logic changes, improves everything that comes after. The E2E tests are plain JavaScript; the rest of the app is TypeScript, so method signatures and step functions can drift silently without compile-time errors.
E2E removal - biggest impact on suite speed and maintenance cost. Form validation errors and tests that stay on a single screen don't need a real device and belong in RNTL.
Claude skills - build skills to support E2E test development, aimed at devs with no E2E experience. See TODOs for the full list.
Backend duplication - remove tests that duplicate backend coverage once sufficient backend test coverage exists.