Skip to content

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 ​

  1. Resolve blockers - nothing else can be fully validated until these are fixed.

  2. 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.

  3. 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.

  4. Claude skills - build skills to support E2E test development, aimed at devs with no E2E experience. See TODOs for the full list.

  5. Backend duplication - remove tests that duplicate backend coverage once sufficient backend test coverage exists.