Before starting work on repository please configure environment and emulators. You can find complete instruction here.
In e2e-app folder you can find demo application that can be used for both local development and E2E tests.
- Run
pnpm installin the project root. - Go to the
e2e-appfolder and runpnpm install. - Set environment variable
EXPO_PUBLIC_API_KEY, you can just usee2e-app/.envapproach. - Run
pnpm prebuildto generate native projects using Expo. - After prebuild is done, run
pnpm startto start Metro bundler. - Refer to the sections below to run the app on a specific platform.
- Run emulator in Android Studio or connect your device. You can check connected devices with
/android/sdk/platform-tools/adb devicescommand. - Run
pnpm androidfrome2efolder. - You should see the running app in emulator or device.
- Run
pnpm iosfrome2efolder. - You should see the running app in a simulator.
- Run
pnpm serve:webfrome2efolder. - You should see the running app in a browser.
- Try
pnpm start --reset-cache. - Try relaunch emulator/simulator or reconnect your device.
- Try to delete both
node_modulesand install dependencies again in order from common steps.
End-to-end tests live in e2e-app (an Expo app driven by Detox) and run in CI across a matrix of
React Native versions. We intentionally test only React Native versions that Expo supports,
because the app's native projects are generated by expo prebuild: each Expo SDK scaffolds from
its own template and its native modules compile only against the React Native version(s) it
supports. A React Native version with no corresponding Expo SDK can only be forced onto a
mismatched scaffold or a pre-release canary, both of which break in ways no real user would hit, so
testing them wouldn't produce enough value.
With that being said, it would be possible to test these versions without Expo, but it's not worth the effort at the moment.
Below is the list of React Native versions that are not tested in CI:
0.80, 0.82, 0.84
We use changesets for handling release notes. If there are relevant changes,
please add them to changeset via pnpm changeset. You need to run pnpm install before doing so.