Forked from alexttransisland/gist:e8ebb98f769d31d7d0a0111550eb4bd8
Last active
February 11, 2021 22:31
-
-
Save DoguD/58b4b86a5d892130af84074078581b87 to your computer and use it in GitHub Desktop.
Run Android emulator on CircleCI 2.0 macOS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: 2 | |
reference: | |
## Constants | |
gradle_cache_path: &gradle_cache_path | |
gradle_cache-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }} | |
workspace: &workspace | |
~/src | |
## Configurations | |
android_config: &android_config | |
working_directory: *workspace | |
macos: | |
xcode: "9.4.0" | |
shell: /bin/bash --login -eo pipefail | |
environment: | |
TERM: dumb | |
JVM_OPTS: -Xmx3200m | |
## Cache | |
restore_gradle_cache: &restore_gradle_cache | |
restore_cache: | |
key: *gradle_cache_path | |
save_gradle_cache: &save_gradle_cache | |
save_cache: | |
key: *gradle_cache_path | |
paths: | |
- ~/.gradle | |
## Dependency Downloads | |
download_android_dependencies: &download_android_dependencies | |
run: | |
name: Download Android Dependencies | |
command: ./gradlew androidDependencies | |
jobs: | |
ui_test: | |
<<: *android_config | |
steps: | |
- checkout | |
- run: | |
name: Setup environment variables | |
command: | | |
echo 'export PATH="$PATH:/usr/local/opt/node@8/bin:${HOME}/.yarn/bin:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin:/usr/local/share/android-sdk/tools/bin"' >> $BASH_ENV | |
echo 'export ANDROID_HOME="/usr/local/share/android-sdk"' >> $BASH_ENV | |
echo 'export ANDROID_SDK_HOME="/usr/local/share/android-sdk"' >> $BASH_ENV | |
echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> $BASH_ENV | |
echo 'export QEMU_AUDIO_DRV=none' >> $BASH_ENV | |
echo 'export JAVA_HOME=/Library/Java/Home' >> $BASH_ENV | |
- run: | |
name: Install Android sdk | |
command: | | |
HOMEBREW_NO_AUTO_UPDATE=1 brew tap homebrew/cask | |
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install android-sdk | |
- run: | |
name: Install emulator dependencies | |
command: (yes | sdkmanager "platform-tools" "platforms;android-26" "extras;intel;Hardware_Accelerated_Execution_Manager" "build-tools;26.0.0" "system-images;android-26;google_apis;x86" "emulator" --verbose) || true | |
- *restore_gradle_cache | |
- *download_android_dependencies | |
- *save_gradle_cache | |
- run: avdmanager create avd -n Pixel_2_API_26 -k "system-images;android-26;google_apis;x86" -g google_apis -d "Nexus 5" | |
- run: | |
name: Run emulator in background | |
command: /usr/local/share/android-sdk/tools/emulator @Pixel_2_API_26 -skin 1080x2066 -memory 2048 -noaudio | |
background: true | |
- run: | |
name: Run Tests | |
command: ./gradlew app:connectedAndroidTest |
Hello @AlexWellsHS, I haven't compared the speed of the tests to local devices. However, when compared to Firebase Test Lab the test took nearly the same time but flakier on Circle CI.
I believe the slowness you mention is more related to the hardware/software infrastructure of Circle CI than the config itself.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@DoguD this is amazing! thanks so much!
when i run this with our cucumber tests, it seems that the tests are particularly slow (as compared to a local device). have you had any experience with slow UI tests using this config?