summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml37
-rwxr-xr-x.gitlab/wait-for-emulator.sh44
-rw-r--r--docker/android-emulator/Dockerfile2
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