ci(e2e): run the web, iOS, and Android e2e suites on GitHub Actions

Merged
KA
1d ago
+144-1
  • .github/workflows/e2e.yml runs the suite on every pull request and push to main, one job per target:
JobRunnerBuildDevice
webubuntu-latestnone, the target starts MetroChromium
iosmacos-26expo run:ios --configuration Release --device generic --no-bundleriPhone 17 Pro on iOS-26-5
androidubuntu-latest (KVM)expo prebuild + gradlew :app:assembleReleaseAPI 36 emulator, pixel_7
  • ios/ and android/ are generated, so each mobile job prebuilds them. Release builds bundle their JS, so they don't depend on Metro.
  • The iOS runtime is pinned to 26.5, the version the replay cache was recorded on. The runner image already has a simulator named iPhone 17 Pro on its default runtime, so the job passes its own simulator's UDID to the ios target:
engine: mobile({ platform: 'ios', device: process.env.E2E_IOS_DEVICE || 'iPhone 17 Pro' }),
  • Mobile jobs run with --workers 1 (one device each). Each job uploads .e2e/ even when tests fail.
  • Reads one secret: AI_GATEWAY_API_KEY.

Verified

Ran it locally: no - CI-only change; the workflow runs on this PR.