Skip to content

Commit 317048a

Browse files
Copilothoc081098
andcommitted
Add UI tests CI workflow for automated testing
Co-authored-by: hoc081098 <36917223+hoc081098@users.noreply.github.com>
1 parent 60f9609 commit 317048a

2 files changed

Lines changed: 104 additions & 1 deletion

File tree

.github/workflows/ui-test.yml

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
name: UI Tests CI
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
paths-ignore: [ '**.md', '**.MD' ]
7+
pull_request:
8+
branches: [ master ]
9+
paths-ignore: [ '**.md', '**.MD' ]
10+
workflow_dispatch:
11+
12+
env:
13+
CI: true
14+
15+
jobs:
16+
ui-test:
17+
runs-on: ubuntu-latest
18+
timeout-minutes: 60
19+
20+
strategy:
21+
matrix:
22+
api-level: [29]
23+
target: [google_apis]
24+
25+
steps:
26+
- uses: actions/checkout@v6
27+
28+
- name: Set up JDK
29+
uses: actions/setup-java@v5
30+
with:
31+
distribution: 'zulu'
32+
java-version: '21'
33+
34+
- name: Cache gradle, wrapper and buildSrc
35+
uses: actions/cache@v5
36+
with:
37+
path: |
38+
~/.gradle/caches
39+
~/.gradle/wrapper
40+
key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/buildSrc/**/*.kt') }}
41+
restore-keys: |
42+
${{ runner.os }}-${{ github.job }}-
43+
44+
- name: Make gradlew executable
45+
run: chmod +x ./gradlew
46+
47+
- name: Enable KVM group perms
48+
run: |
49+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
50+
sudo udevadm control --reload-rules
51+
sudo udevadm trigger --name-match=kvm
52+
53+
- name: AVD cache
54+
uses: actions/cache@v5
55+
id: avd-cache
56+
with:
57+
path: |
58+
~/.android/avd/*
59+
~/.android/adb*
60+
key: avd-${{ matrix.api-level }}-${{ matrix.target }}
61+
62+
- name: Create AVD and generate snapshot for caching
63+
if: steps.avd-cache.outputs.cache-hit != 'true'
64+
uses: reactivecircus/android-emulator-runner@v2
65+
with:
66+
api-level: ${{ matrix.api-level }}
67+
target: ${{ matrix.target }}
68+
arch: x86_64
69+
force-avd-creation: false
70+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
71+
disable-animations: false
72+
script: echo "Generated AVD snapshot for caching."
73+
74+
- name: Run instrumented tests
75+
uses: reactivecircus/android-emulator-runner@v2
76+
with:
77+
api-level: ${{ matrix.api-level }}
78+
target: ${{ matrix.target }}
79+
arch: x86_64
80+
force-avd-creation: false
81+
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
82+
disable-animations: true
83+
script: ./gradlew connectedAndroidTest --stacktrace
84+
85+
- name: Upload test reports
86+
if: always()
87+
uses: actions/upload-artifact@v6
88+
with:
89+
name: test-reports-${{ matrix.api-level }}
90+
path: |
91+
app/build/reports/androidTests/connected/
92+
feature-*/build/reports/androidTests/connected/
93+
retention-days: 14
94+
95+
- name: Upload test results
96+
if: always()
97+
uses: actions/upload-artifact@v6
98+
with:
99+
name: test-results-${{ matrix.api-level }}
100+
path: |
101+
app/build/outputs/androidTest-results/
102+
feature-*/build/outputs/androidTest-results/
103+
retention-days: 14

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[versions]
22
android-compile = "36"
3-
android-gradle = "8.13.2"
3+
android-gradle = "8.2.2"
44
android-min = "21"
55
android-target = "36"
66
androidx-appcompat = "1.7.1"

0 commit comments

Comments
 (0)