How to Test a Release Candidate
Pre-requisitesβ
Have a clone of
react-native
repo and be on the release candidate branch.# Checkout relevant branch
git checkout 0.66-stable
yarn install
# I needed a .watchmanconfig because `npm start` would fail without it.
echo '{}' > .watchmanconfigHave Android and iOS development environment set-up. Follow instructions for macOS/iOS and macOS/Android from the Environment Setup guide.
Additional steps for Androidβ
- 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.*
- Gradle should now install the appropriate ndk. Verify that you have in your path the
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β
Delete
RNTester
andRNTestProject
from your Android emulator and iOS simulator if leftover from previous test.Remove any temporary files:
git clean -fdx
Install dependencies:
yarn install
pushd packages/rn-tester
pod install --repo-update
popdGo through Test Checklist for variants supported by
test-manual-e2e
script:# This will run you through the different variants in Test Dimensions table
./scripts/test-manual-e2e.shGo through Test Checklist for Hermes enabled template app.
info
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-androidEnable 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.