mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 17:45:59 +00:00
f9bd789206
Summary:- converted shell script `scripts/e2e-test.sh` into JS script to have more programming flexibility - using appium execute 2 tests after a fresh React Native app installation: check HMR and that debugging mode does not crash the app - made sure tests can be stable on limited CI systems and added ways to debug any problems in the future Using appium we can now interact with Android app and test its state. As a follow up i am planning to write a blog post on how to use appium with android and ios for e2e testing. Closes https://github.com/facebook/react-native/pull/6840 Differential Revision: D3173635 Pulled By: mkonicek fb-gh-sync-id: 3cf044bc9f64d1a842ae4589dd1bcab76de3d66a fbshipit-source-id: 3cf044bc9f64d1a842ae4589dd1bcab76de3d66a
101 lines
4.5 KiB
YAML
101 lines
4.5 KiB
YAML
general:
|
|
branches:
|
|
ignore:
|
|
- gh-pages # list of branches to ignore
|
|
machine:
|
|
node:
|
|
version: 5.6.0
|
|
environment:
|
|
PATH: "~/$CIRCLE_PROJECT_REPONAME/gradle-2.9/bin:/home/ubuntu/buck/bin:$PATH"
|
|
TERM: "dumb"
|
|
ADB_INSTALL_TIMEOUT: 10
|
|
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx512m -XX:+HeapDumpOnOutOfMemoryError"'
|
|
|
|
dependencies:
|
|
override:
|
|
# BUCK and android
|
|
- if [[ ! -e /home/ubuntu/buck ]]; then git clone https://github.com/facebook/buck.git /home/ubuntu/buck; fi
|
|
- cd /home/ubuntu/buck && ant
|
|
- buck --version
|
|
- buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
|
|
- buck fetch ReactAndroid/src/main/java/com/facebook/react
|
|
- buck fetch ReactAndroid/src/main/java/com/facebook/react/shell
|
|
- buck fetch ReactAndroid/src/test/...
|
|
- buck fetch ReactAndroid/src/androidTest/...
|
|
- source scripts/circle-ci-android-setup.sh && getAndroidSDK
|
|
- ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog
|
|
# CIRCLE_NPM_TOKEN is in React Native project settings in Circle CI.
|
|
# It was generated for bestander user, easy to replace with anyone's else
|
|
- echo "//registry.npmjs.org/:_authToken=${CIRCLE_NPM_TOKEN}" > ~/.npmrc
|
|
- npm config set spin=false
|
|
- npm config set progress=false
|
|
- npm install
|
|
# for eslint bot
|
|
- npm install github@0.2.4
|
|
- cd website && npm install
|
|
cache_directories:
|
|
- "ReactAndroid/build/downloads"
|
|
- "/home/ubuntu/buck"
|
|
- "website/node_modules"
|
|
- "node_modules"
|
|
|
|
test:
|
|
pre:
|
|
# starting emulator in advance because it takes very long to boot
|
|
- $ANDROID_HOME/tools/emulator -avd testAVD -no-skin -no-audio -no-window:
|
|
background: true
|
|
- source scripts/circle-ci-android-setup.sh && waitForAVD
|
|
|
|
override:
|
|
# eslint bot
|
|
- cat <(echo eslint; npm run lint --silent -- --format=json; echo flow; npm run flow --silent -- check --json) | GITHUB_TOKEN="af6ef0d15709bc91d""06a6217a5a826a226fb57b7" CI_USER=$CIRCLE_PROJECT_USERNAME CI_REPO=$CIRCLE_PROJECT_REPONAME PULL_REQUEST_NUMBER=$CIRCLE_PR_NUMBER node bots/code-analysis-bot.js
|
|
# JS tests for dependencies installed with npm3
|
|
- npm run flow check
|
|
- npm test -- --maxWorkers=1
|
|
|
|
# build app
|
|
- buck build ReactAndroid/src/main/java/com/facebook/react
|
|
- buck build ReactAndroid/src/main/java/com/facebook/react/shell
|
|
|
|
# unit tests
|
|
- buck test ReactAndroid/src/test/... --config build.threads=1
|
|
|
|
# instrumentation tests
|
|
# compile native libs with Gradle script
|
|
- ./gradlew :ReactAndroid:packageReactNdkLibsForBuck -Pjobs=1:
|
|
timeout: 360
|
|
# build JS bundle for instrumentation tests
|
|
- node local-cli/cli.js bundle --platform android --dev true --entry-file ReactAndroid/src/androidTest/assets/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js
|
|
# build test APK
|
|
- buck install ReactAndroid/src/androidTest/buck-runner:instrumentation-tests --config build.threads=1
|
|
# run installed apk with tests
|
|
- source scripts/circle-ci-android-setup.sh && retry3 ./scripts/run-android-instrumentation-tests.sh com.facebook.react.tests
|
|
|
|
- ./gradlew :ReactAndroid:testDebugUnitTest
|
|
# Deprecated: these tests are executed using Buck above, while we support Gradle we just make sure the test code compiles
|
|
- ./gradlew :ReactAndroid:assembleDebugAndroidTest
|
|
|
|
# Android e2e test
|
|
- source scripts/circle-ci-android-setup.sh && retry3 node ./scripts/run-ci-e2e-tests.js --android --js
|
|
|
|
# testing docs generation is not broken
|
|
- cd website && node ./server/generate.js
|
|
post:
|
|
# copy test report for Circle CI to display
|
|
- mkdir -p $CIRCLE_TEST_REPORTS/junit/
|
|
- find . -type f -regex ".*/build/test-results/debug/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \;
|
|
- find . -type f -regex ".*/outputs/androidTest-results/connected/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \;
|
|
# TODO circle does not understand Buck's report, maybe need to transform xml slightly
|
|
#- find . -type f -regex ".*/buck-out/gen/ReactAndroid/src/test/.*/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \;
|
|
|
|
deployment:
|
|
stable:
|
|
branch: [/.*-stable/, /master/]
|
|
commands:
|
|
# generate docs website
|
|
- git config --global user.email "reactjs-bot@users.noreply.github.com"
|
|
- git config --global user.name "Website Deployment Script"
|
|
- echo "machine github.com login reactjs-bot password $GITHUB_TOKEN" > ~/.netrc
|
|
- cd website && GIT_USER=reactjs-bot npm run gh-pages
|
|
- node ./scripts/publish-npm.js
|