Skip to content

Release Testing

Luna edited this page Feb 1, 2022 · 9 revisions

Pre-requisites

  • Have clone of react-native repo and be on the release candidate branch.
    # Checkout relevant branch
    react-native$ git checkout 0.66-stable
    react-native$ yarn install
    
    # I needed a .watchmanconfig because `npm start` would fail without it.
    react-native$ echo '{}' > .watchmanconfig
  • Have Android and iOS development environment set-up. Follow instuctions for macOS/iOS and macOS/Android from React Native docs
    • Android
      • Android emulator or device set up
      • Gradle should now install the appropriate ndk. Verify that you have in your path the ANDROID_NDK variable, pointing to it.
      • In case you are on macos Catalina (or higher), you might also need to run sudo xattr -r -d com.apple.quarantine /path/to/ndk to avoid the e2e script to fail. That said, this should not happen anymore since from NDK 21 and higher the Android team started signing the NDK.*
    • iOS
      • Xcode
      • Cocoapods

Test Dimensions

  • covered by running test-manual-e2e.sh (See issue about supporting those "manual" cases)
Variant RNTester Template App
Android - JSC via test-manual-e2e.sh via test-manual-e2e.sh
Android - Hermes via test-manual-e2e.sh manual
iOS - JSC via test-manual-e2e.sh via test-manual-e2e.sh
iOS - Hermes via test-manual-e2e.sh manual

Test Checklist

Link to branch:
Project info
Name
Starting RN version <add me, ex. RN 0.65.1>
Hermes on iOS yes/no
Hermes on Android yes/no
Tested - iOS
Fast Refresh ✅/🚨/🙅‍♂️
Debug/dev build on Simulator ✅/🚨/🙅‍♂️
Debug/dev build on Device ✅/🚨/🙅‍♂️
Production build ✅/🚨/🙅‍♂️
Chrome remote debugger ✅/🚨/🙅‍♂️
Hermes debugger ✅/🚨/🙅‍♂️
Flipper debugger ✅/🚨/🙅‍♂️
Tested - Android
Fast Refresh ✅/🚨/🙅‍♂️
Debug/dev build on Emulator ✅/🚨/🙅‍♂️
Debug/dev build on Device ✅/🚨/🙅‍♂️
Production build ✅/🚨/🙅‍♂️
Chrome remote debugger ✅/🚨/🙅‍♂️
Hermes debugger ✅/🚨/🙅‍♂️
Flipper debugger ✅/🚨/🙅‍♂️

Steps

  1. Delete RNTester and RNTestProject from your Android emulator/ iOS simulator if leftover from previous test

  2. Remove any temporary files

     git clean -fdx
  3. Install dependencies

     yarn install
     pushd packages/rn-tester
     pod install --repo-update
     popd
  4. Go through Test Checklist for variants supported by test-manual-e2e script

# This will run you through the different variants in **Test Dimensions** table
react-native$ ./scripts/test-manual-e2e.sh
  1. Go through Test Checklist for Hermes enabled template app.
  • Note: script will install template app at /tmp/RNTestProject

  • Enable Hermes for Android template app, clean, build and go through Test Checklist

    # Update `/tmp/RNTestProject/android/app/build.gradle` to `enableHermes`
    project.ext.react = [
       enableHermes: true,  // clean and rebuild if changing
    ]
    
    # Clean and rebuild
    /tmp/RNTestProject/android$ ./gradlew clean
    /tmp/RNTestProject$ npx react-native run-android
  • Enable Hermes for iOS template app, clean, build and go through Test Checklist

    # Update `/tmp/RNTestProject/ios/Podfile` and then run `pod install`
    use_react_native!(
      :path => config[:reactNativePath],
      # to enable hermes on iOS, change `false` to `true` and then install pods
      :hermes_enabled => true
    )
    
    # Install pods and run
    /tmp/RNTestProject/ios$ pod install
    /tmp/RNTestProject$ npx react-native run-ios

Other dimensions to consider:

  • Running your iOS project with --release configuration
  • Attempting to upload your app to TestFlight