- mise — manages Node.js and pnpm versions
mise trust
mise install
pnpm installStart the dev server (requires the development build installed on your device):
pnpm startpnpm run typecheck| Command | Description |
|---|---|
pnpm run build:dev:ios |
Development build for iOS |
pnpm run build:dev:android |
Development build for Android |
pnpm run build:preview |
Preview build for both platforms |
pnpm run build:prod |
Production build for both platforms |
Builds are run on EAS. You must be logged in:
npx eas-cli whoami # check current login
npx eas-cli login # log inpnpm test:ciE2E tests use WebDriverIO + Appium to drive the app on a real device (Android) or simulator (iOS). An in-app WebSocket bridge replaces the real microphone so tests can inject audio programmatically.
- Copy
.env.exampleto.envand adjust the values for your setup. - iOS: An iOS simulator matching the name in
.envmust be available. - Android: A real Android device connected via USB (or
adb connectover Wi-Fi) with USB debugging enabled. Runadb devicesto confirm the device is listed.
pnpm run build:e2e:ios:local # → artifacts/VoiceRepeat.appSet EXPO_PUBLIC_E2E_WS_HOST to your machine's LAN IP before building. This IP is baked into the APK so the app can connect back to the test runner's WebSocket bridge over the network.
# Find your LAN IP (macOS):
ipconfig getifaddr en0
# Set it in .env or export directly:
export E2E_WS_HOST=192.168.1.42
pnpm run build:e2e:android:local # → artifacts/VoiceRepeat.apkpnpm run build:e2e:android
pnpm run build:e2e:iosWhen using EAS, download the artifact and place it in artifacts/.
pnpm run e2e:ios
pnpm run e2e:androidFor Android, make sure:
- The device and host machine are on the same LAN.
- The host firewall allows inbound connections on port 9876 (the WebSocket bridge).
- Optionally set
E2E_ANDROID_UDIDin.envto the device serial (fromadb devices) if multiple devices are connected.
To run a specific test case:
pnpm run e2e:ios --mochaOpts.grep "partial swipe reveals delete button"pnpm run device:registerOpen the URL or scan the QR code on the target iPhone to install the registration profile.
