-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Release Testing
Luna edited this page Nov 4, 2021
·
9 revisions
- 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
- Android
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
- JSC - use web debugging
- Hermes - use Flipper / Chrome devtools
- Make a JS change and reload the app
- iOS/Android - double r
- Delete RNTester and RNTestProject from your Android emulator/ iOS simulator if leftover from previous test
- 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
- Install dependencies
yarn install pushd packages/rn-tester pod install --repo-update popd
- 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
- 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
React Native • Contributor Guide • Getting Started • Website
How to Contribute
- How to File an Issue ↗
- Triaging GitHub Issues ↗
- How to Label an Issue ↗
- Managing Pull Requests ↗
- How to Contribute Code ↗
- How to Open a Pull Request ↗
- How to Build from Source ↗
Tests
Releases
More Resources
- Contributor Guide ↗
- Code of Conduct ↗
- Contributor License Agreement ↗
- Discussions and Proposals ↗
- Bots Reference ↗
Documentation