Skip to content

Release Testing

Luna edited this page Nov 4, 2021 · 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
      • Correct Android NDK. Gradle should now install the appropriate ndk.
      • 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

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:

  • Connect to debugger. Can attach a breakpoint and reload
  • Make a JS change and reload the app
    • iOS/Android - double r

Steps

  1. Delete RNTester and RNTestProject from your Android emulator/ iOS simulator if leftover from previous test
  2. Remove any build artefacts
     rm react-native-*.tgz
     ./gradlew clean
     ./gradlew cleanBuildCache
     rm -rf ./ReactAndroid/build/
     rm -rf node_modules
     rm -rf /tmp/RNTestProject
     pushd packages/rn-tester
     rm -rf Pods
     xcodebuild -workspace RNTesterPods.xcworkspace -scheme RNTester clean
     popd
  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