diff options
-rw-r--r-- | .gitlab-ci.yml | 37 | ||||
-rwxr-xr-x | .gitlab/wait-for-emulator.sh | 44 | ||||
-rw-r--r-- | docker/android-emulator/Dockerfile | 2 |
3 files changed, 83 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0edd09a9..fdcc6594 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,6 +57,43 @@ unit_test: script: - ./gradlew test +ui_test: + image: "0xacab.org:4567/leap/bitmask_android/android-emulator:latest" + stage: test + script: + - emulator -avd testApi27 -no-audio -no-window & + - .gitlab/wait-for-emulator.sh + - adb devices + - adb shell settings put global window_animation_scale 0 & + - adb shell settings put global transition_animation_scale 0 & + - adb shell settings put global animator_duration_scale 0 & + - adb shell input keyevent 82 & + - ./gradlew connectedAndroidTest + - adb -s testApi27 emu kill + +expanded_test: + image: "0xacab.org:4567/leap/bitmask_android/android-emulator:latest" + stage: test + script: + - emulator -avd testApi27 -no-audio -no-window & + - .gitlab/wait-for-emulator.sh + - adb devices + - adb shell settings put global window_animation_scale 0 & + - adb shell settings put global transition_animation_scale 0 & + - adb shell settings put global animator_duration_scale 0 & + - adb shell input keyevent 82 & + - ./gradlew connectedAndroidTest + - ./gradlew createProductionDebugCoverageReport + - adb -s testApi27 emu kill + - ./gradlew test + artifacts: + expire_in: 3 days + paths: + - app/build/reports/androidTests/connected/ + - app/build/reports/coverage/production/ + - app/build/tests/ + when: manual + build: image: "0xacab.org:4567/leap/bitmask_android/android-ndk:latest" stage: build diff --git a/.gitlab/wait-for-emulator.sh b/.gitlab/wait-for-emulator.sh new file mode 100755 index 00000000..cd51428a --- /dev/null +++ b/.gitlab/wait-for-emulator.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# from https://gitlab.com/fdroid/fdroidclient + +sec=0 +timeout=360 + +err() { + echo "$@" + exit 1 +} + +explain() { + if [[ "$1" =~ "not found" ]]; then + printf "device not found" + elif [[ "$1" =~ "offline" ]]; then + printf "device offline" + elif [[ "$1" =~ "running" ]]; then + printf "booting" + else + printf "$1" + fi +} + +while true; do + if [[ $sec -ge $timeout ]]; then + err "Timeout ($timeout seconds) reached - Failed to start emulator" + fi + out=$(adb -e shell getprop init.svc.bootanim 2>&1 | grep -v '^\*') + if [[ "$out" =~ "command not found" ]]; then + err "$out" + fi + if [[ "$out" =~ "stopped" ]]; then + break + fi + let "r = sec % 5" + if [[ $r -eq 0 ]]; then + echo "Waiting for emulator to start: $(explain "$out")" + fi + sleep 1 + let "sec++" +done + +echo "Emulator is ready" diff --git a/docker/android-emulator/Dockerfile b/docker/android-emulator/Dockerfile index cc9e0750..161b5ae4 100644 --- a/docker/android-emulator/Dockerfile +++ b/docker/android-emulator/Dockerfile @@ -34,3 +34,5 @@ RUN echo y | sdkmanager "emulator" RUN echo y | sdkmanager "system-images;android-27;google_apis;x86" RUN echo y | sdkmanager "system-images;android-25;google_apis;x86_64" RUN echo y | sdkmanager "system-images;android-23;google_apis;x86_64" + +RUN avdmanager create avd -n testApi27 -k "system-images;android-27;google_apis;x86"
\ No newline at end of file |