@@ -5,14 +5,8 @@ run-name: ${{ github.actor }} is building and testing OpenHIIT
55on :
66 workflow_dispatch :
77 pull_request :
8- types :
9- - opened
10- - reopened
11- - synchronize
12- - ready_for_review
13- branches :
14- - ' main'
15- - ' pre-release'
8+ types : [opened, reopened, synchronize, ready_for_review]
9+ branches : [main, pre-release]
1610 paths :
1711 - ' lib/**'
1812 - ' test_driver/**'
@@ -23,141 +17,118 @@ on:
2317 - ' ios/**'
2418
2519jobs :
26-
27- Simple :
20+ prepare-emulator :
2821 runs-on : ubuntu-latest
2922 env :
3023 ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL : 180
3124 steps :
32- - uses : actions/checkout@v3
33-
34- - name : Set up JDK 17
35- uses : actions/setup-java@v3
36- with :
37- java-version : ' 17'
38- distribution : ' temurin'
39-
40- - uses : subosito/flutter-action@v2
41- with :
42- channel : ' stable'
43-
44- - name : Check Version
45- run : flutter --version
46-
47- - name : Flutter Doctor
48- run : flutter doctor -v
49-
50- - name : Enable KVM
51- run : |
52- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
53- sudo udevadm control --reload-rules
54- sudo udevadm trigger --name-match=kvm
55-
5625 - name : Setup Android SDK
5726 uses : android-actions/setup-android@v3
5827
59-
60- - name : run tests
61- uses : reactivecircus/android-emulator-runner@v2
62- with :
63- api-level : 35
64- arch : x86_64
65- profile : pixel_6_pro
66- script : |
67- flutter build apk --target integration_test/simple_timer_test.dart --debug
68- adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk
69- adb -s emulator-5554 root
70- adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow
71- flutter drive -d emulator-5554 --driver=test_driver/integration_test.dart --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk
72-
73- Advanced :
74- runs-on : ubuntu-latest
75- steps :
76- - uses : actions/checkout@v3
77-
78- - name : Set up JDK 17
79- uses : actions/setup-java@v3
80- with :
81- java-version : ' 17'
82- distribution : ' temurin'
83-
84- - uses : subosito/flutter-action@v2
85- with :
86- channel : ' stable'
87- - name : Check Version
88- run : flutter --version
89-
90- - name : Flutter Doctor
91- run : flutter doctor -v
92-
9328 - name : Enable KVM
9429 run : |
9530 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
9631 sudo udevadm control --reload-rules
9732 sudo udevadm trigger --name-match=kvm
9833
99- - name : Setup Android SDK
100- uses : android-actions/setup-android@v3
101-
102- - name : run tests
34+ - name : Gradle cache
35+ uses : gradle/actions/setup-gradle@v3
36+
37+ - name : Cache AVD
38+ id : avd-cache
39+ uses : actions/cache@v4
40+ with :
41+ path : ~/.android/avd
42+ key : avd-35
43+
44+ - name : create AVD and generate snapshot for caching
45+ if : steps.avd-cache.outputs.cache-hit != 'true'
10346 uses : reactivecircus/android-emulator-runner@v2
10447 with :
105- api-level : 34
48+ api-level : 35
10649 arch : x86_64
107- profile : pixel_6_pro
108- disable-animations : true
109- ram-size : 3072
110- emulator-options : " -no-window -gpu swiftshader_indirect"
111- script : |
112- flutter build apk --target integration_test/advanced_timer_test.dart --debug
113- adb -s emulator-5554 wait-for-device
114- adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk
115- adb -s emulator-5554 root
116- adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow
117- flutter drive -d emulator-5554 --driver=test_driver/integration_test.dart --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk
118-
119- Display :
50+ ram : 4096
51+ force-avd-creation : false
52+ emulator-options : -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
53+ disable-animations : false
54+ script : echo "Generated AVD snapshot for caching."
55+
56+ run-tests :
57+ needs : prepare-emulator
12058 runs-on : ubuntu-latest
59+ strategy :
60+ fail-fast : false
61+ matrix :
62+ test_file :
63+ - simple_test.dart
64+ - advanced_test.dart
65+ - restart_rounds_test.dart
66+ - load_test.dart
67+ - interval_adjust_test.dart
68+ - edit_timer_test.dart
69+ - customize_test.dart
70+ - minutes_view_test.dart
12171 env :
12272 ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL : 180
12373 steps :
124- - uses : actions/checkout@v3
125-
126- - name : Set up JDK 17
127- uses : actions/setup-java@v3
128- with :
129- java-version : ' 17'
130- distribution : ' temurin'
74+ - name : checkout
75+ uses : actions/checkout@v4
13176
13277 - uses : subosito/flutter-action@v2
13378 with :
134- channel : ' stable'
79+ channel : stable
13580
136- - name : Check Version
137- run : flutter --version
81+ - name : Setup Android SDK
82+ uses : android-actions/setup-android@v3
13883
139- - name : Flutter Doctor
140- run : flutter doctor -v
84+ - name : Create test script
85+ run : |
86+ cat <<EOF > scripts/test.sh
87+ #!/bin/bash
88+ echo "Running test: ${{ matrix.test_file }}"
89+ flutter build apk --target integration_test/${{ matrix.test_file }} --debug
90+ bash scripts/wait_for_pm.sh
91+ adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk
92+ adb -s emulator-5554 root
93+ adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow
94+ flutter drive -d emulator-5554 --no-pub \
95+ --driver=integration_test/driver.dart \
96+ --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk
97+ EOF
98+
99+ chmod +x scripts/test.sh
141100
142101 - name : Enable KVM
143102 run : |
144103 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
145104 sudo udevadm control --reload-rules
146105 sudo udevadm trigger --name-match=kvm
147106
148- - name : Setup Android SDK
149- uses : android-actions/setup-android@v3
107+ - name : Gradle cache
108+ uses : gradle/actions/setup-gradle@v3
109+
110+ - name : Fetch Cache AVD
111+ id : avd-cache
112+ uses : actions/cache@v4
113+ with :
114+ path : ~/.android/avd
115+ key : avd-35
150116
151-
152- - name : run tests
117+ - name : Run integration tests
153118 uses : reactivecircus/android-emulator-runner@v2
154119 with :
155120 api-level : 35
156121 arch : x86_64
157- profile : pixel_6_pro
158- script : |
159- flutter build apk --target integration_test/display_timer_test.dart --debug
160- adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk
161- adb -s emulator-5554 root
162- adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow
163- flutter drive -d emulator-5554 --driver=test_driver/integration_test.dart --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk
122+ ram : 4096
123+ force-avd-creation : false
124+ emulator-options : -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
125+ disable-animations : true
126+ script : scripts/test.sh
127+
128+ - name : Upload screenshots
129+ if : always()
130+ uses : actions/upload-artifact@v4
131+ with :
132+ name : screenshots-${{ matrix.test_file }}
133+ path : screenshots/
134+
0 commit comments