React Native Expo

A guide to running end-to-end in Moropo tests using Expo

Using Expo Go

To use Expo Go in Moropo, upload the Expo Go .app and .apk in place of your release build files.

Using an Expo Dev Client

If you wish to test using an Expo Dev Client, follow Expo's instructions on producing an iOS Simulator build or Android APK. Once you have the build files (.app and .apk), you can upload them to Moropo in the usual way.

Launch your app via an Expo URL

These examples assume you're working with an Expo Dev Client.

Grab your Expo URL and use the openLink command to launch your app:

appId: ${BUNDLEID}
---
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=https://u.expo.dev/cx1e344b-8011-4434-91a6-dec36deb68c0?channel-name=moropo-452&runtime-version=exposdk:47.0.0&platform=ios"

If you're using the Moropo GitHub Expo Integration then the Expo Release Channel URL can be auto-populated for you via the ${EXPORELEASECHANNEL} variable.

appId: ${BUNDLEID}
---
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=${EXPORELEASECHANNEL}"

Disabling Onboarding

Disable Onboarding isn't working in Expo SDK 51

If it's the first time opening Expo (as it always the case on Moropo clean devices) then you will be presented with the Expo onboarding flow:

Hello there, friend! 👋 Since this is your first time opening this development build, we wanted to show you this menu...

It's easy to bypass this menu by adding the disableOnboarding parameter to the end of your Expo URL. This parameter will instruct Expo to skip this screen so you don't need to include it in your test flow. Note, due to differences between Android & iOS this has to be formatted slightly differently for each.

  • Android - %26disableOnboarding%3D1

  • iOS - &disableOnboarding=1

appId: ${BUNDLEID}
---
#Android Example
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=${EXPORELEASECHANNEL}%26disableOnboarding%3D1"
#iOS Example
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=${EXPORELEASECHANNEL}&disableOnboarding=1"

Alternatively, you can manage the difference between the two by using Conditionals

Last updated