Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project.
If you or your current employer have already signed the Google CLA (even if it was for a different project), you probably don't need to do it again.
Visit https://cla.developers.google.com/ to see your current agreements or to sign a new one.
This project follows Google's Open Source Community Guidelines.
- Linux, Mac OS X, or Windows.
- git (used for source version control).
- An IDE such as Android Studio or Visual Studio Code.
- addlicense
- google-java-format Version 1.23.0 (used to format Java code).
- clang-format (used to format Objective-C code).
- Ensure all the dependencies described in the README are installed.
- Fork
https://github.com/googlemaps/react-native-navigation-sdkinto your own GitHub account. If you already have a fork, and are now installing a development environment on a new machine, make sure you've updated your fork. - If you haven't configured your machine with an SSH key that's known to github, then follow GitHub's directions to generate an SSH key.
git clone git@github.com:<your_name_here>/googlemaps/react-native-navigation-sdk.gitgit remote add upstream git@github.com:googlemaps/react-native-sdk.git(So that you fetch from the master repository, not your clone, when runninggit fetchet al.)
git fetch upstreamgit checkout upstream/master -b <name_of_your_branch>- Start coding!
-
This project uses
lefthookto ensure tests pass before committing. Please configure your environment paths to include the Go binary path foraddlicenseand the Node binary path fornpxin the~/.lefthookrcfile. For more information, refer to the lefthook documentation. -
git commit -a -m "<your informative commit message>"Please make sure all your check-ins have detailed commit messages explaining the patch. When naming the title of your pull request, please follow the Conventional Commits guide. For example, for a fix to the Driver library:
fix(navigation_view): fixed a bug! -
git push origin <name_of_your_branch>
git pull-request(if you are using Hub) or go tohttps://github.com/googlemaps/react-native-navigation-sdkand click the "Compare & pull request" button
Make sure to test your changes before sending them for review. To do so, update and run the Sample app at ./example.
This project enforces code formatting for Objective-C and Java files to follow Google's style guidelines. The formatting is automatically checked before commits and during continuous integration (CI) using Lefthook and GitHub Actions.
Before committing your changes, you should run the formatters manually to ensure your code adheres to the required style:
Objective-C:
./scripts/format-objc.shThis script will format all Objective-C files under the /ios and /example/ios directories according to Google's Objective-C style guide.
Java:
./scripts/format-java.shThis script will format all Java files under the /android and /example/android directories according to Google's Java style guide.
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.
Please peruse the Typescript style guide, Java style guide, and Objective-C style guide before working on anything non-trivial. These guidelines are intended to keep the code consistent and avoid common pitfalls.
Google Maps React Native Navigation package has integration tests.
Integration tests are responsible for ensuring that the plugin works against the native Navigation SDK for both Android and iOS platforms. Detox along with example application is used for the integration tests. "Integration tests must accompany the implementation of all new features. To run the test you must first install and setup detox. Please follow the guide here: https://wix.github.io/Detox/docs/introduction/environment-setup
Note
The current (pinned) version of Detox does not work with the latest React Native version used in the example app. To run Android Detox tests, the example app must first be downgraded to React Native 0.79.5 until support for newer versions is available.
Build the tests using detox-cli in the example folder:
iOS:
yarn run example detox:build:ios-releaseAndroid:
yarn run example detox:build:android-releaseGoogle Maps React Native Navigation SDK integration tests can be run with the following command:
iOS
yarn run example detox:test:ios-releaseAndroid:
Note
Create emulator named "Android_Emulator" first if you don't have one already:
yarn run example detox:test:android-releaseWhen adding new tests, you need to first add the detox part in the e2e folder and then the actual logical part of the test in the integration tests page of the example app.