Skip to content

Commit 615bd46

Browse files
committed
Added screenshot test CI (wip)
1 parent f6509e4 commit 615bd46

2 files changed

Lines changed: 208 additions & 0 deletions

File tree

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: Compare WebView Screenshots
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
compare-screenshots:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Checkout code
12+
uses: actions/checkout@v4
13+
14+
- name: Set up JDK 17
15+
uses: actions/setup-java@v4
16+
with:
17+
java-version: '17'
18+
distribution: 'temurin'
19+
20+
- name: Setup Android SDK
21+
uses: android-actions/setup-android@v3
22+
23+
- name: Accept Android SDK licenses
24+
run: yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
25+
26+
- name: Cache Gradle dependencies
27+
uses: actions/cache@v3
28+
with:
29+
path: |
30+
~/.gradle/caches
31+
~/.gradle/wrapper
32+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
33+
restore-keys: |
34+
${{ runner.os }}-gradle-
35+
36+
- name: Install Android SDK components
37+
run: |
38+
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
39+
40+
- name: Enable KVM group perms
41+
run: |
42+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
43+
sudo udevadm control --reload-rules
44+
sudo udevadm trigger --name-match=kvm
45+
46+
- name: AVD cache
47+
uses: actions/cache@v3
48+
id: avd-cache
49+
with:
50+
path: |
51+
~/.android/avd/*
52+
~/.android/adb*
53+
key: avd-35-x86_64
54+
55+
- name: Create AVD and generate snapshot for caching
56+
if: steps.avd-cache.outputs.cache-hit != 'true'
57+
uses: reactivecircus/android-emulator-runner@v2
58+
with:
59+
api-level: 35
60+
arch: x86_64
61+
target: google_apis
62+
force-avd-creation: false
63+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
64+
disable-animations: false
65+
script: echo "Generated AVD snapshot for caching."
66+
67+
- name: Run screenshot tests
68+
uses: reactivecircus/android-emulator-runner@v2
69+
with:
70+
api-level: 35
71+
arch: x86_64
72+
target: google_apis
73+
force-avd-creation: false
74+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
75+
disable-animations: false
76+
script: |
77+
./gradlew executeScreenshotTests
78+
79+
- name: Verify screenshots
80+
uses: reactivecircus/android-emulator-runner@v2
81+
with:
82+
api-level: 35
83+
arch: x86_64
84+
target: google_apis
85+
force-avd-creation: false
86+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
87+
disable-animations: false
88+
script: |
89+
./gradlew verifyScreenshots || echo "Screenshot verification completed"
90+
91+
- name: Find verification report
92+
run: |
93+
echo "Searching for verification/index.html files:"
94+
find . -name "index.html" -path "*/verification/*" -type f | while read file; do
95+
echo "Found verification report: $file"
96+
done
97+
98+
- name: Upload comparison results
99+
uses: actions/upload-artifact@v4
100+
if: always()
101+
with:
102+
name: screenshot-comparison-${{ github.run_id }}
103+
path: |
104+
app/screenshots/
105+
**/screenshots/
106+
app/build/reports/shot/
107+
**/build/reports/shot/
108+
retention-days: 30
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
name: Generate WebView Screenshots
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
generate-screenshots:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Checkout code
12+
uses: actions/checkout@v4
13+
14+
- name: Set up JDK 17
15+
uses: actions/setup-java@v4
16+
with:
17+
java-version: '17'
18+
distribution: 'temurin'
19+
20+
- name: Setup Android SDK
21+
uses: android-actions/setup-android@v3
22+
23+
- name: Accept Android SDK licenses
24+
run: yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
25+
26+
- name: Cache Gradle dependencies
27+
uses: actions/cache@v3
28+
with:
29+
path: |
30+
~/.gradle/caches
31+
~/.gradle/wrapper
32+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
33+
restore-keys: |
34+
${{ runner.os }}-gradle-
35+
36+
- name: Install Android SDK components
37+
run: |
38+
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
39+
40+
- name: Enable KVM group perms
41+
run: |
42+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
43+
sudo udevadm control --reload-rules
44+
sudo udevadm trigger --name-match=kvm
45+
46+
- name: AVD cache
47+
uses: actions/cache@v3
48+
id: avd-cache
49+
with:
50+
path: |
51+
~/.android/avd/*
52+
~/.android/adb*
53+
key: avd-35-x86_64
54+
55+
- name: Create AVD and generate snapshot for caching
56+
if: steps.avd-cache.outputs.cache-hit != 'true'
57+
uses: reactivecircus/android-emulator-runner@v2
58+
with:
59+
api-level: 35
60+
arch: x86_64
61+
target: google_apis
62+
force-avd-creation: false
63+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
64+
disable-animations: false
65+
script: echo "Generated AVD snapshot for caching."
66+
67+
- name: Generate and record screenshots
68+
uses: reactivecircus/android-emulator-runner@v2
69+
with:
70+
api-level: 35
71+
arch: x86_64
72+
target: google_apis
73+
force-avd-creation: false
74+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
75+
disable-animations: false
76+
script: |
77+
./gradlew executeScreenshotTests -Precord
78+
79+
- name: Commit and push new screenshots
80+
run: |
81+
git config --local user.email "action@github.com"
82+
git config --local user.name "GitHub Action"
83+
git add app/screenshots/
84+
git add **/screenshots/
85+
if git diff --staged --quiet; then
86+
echo "No screenshot changes to commit"
87+
else
88+
git commit -m "Update screenshots"
89+
git push
90+
fi
91+
92+
- name: Upload screenshots
93+
uses: actions/upload-artifact@v4
94+
if: always()
95+
with:
96+
name: screenshots-${{ github.run_id }}
97+
path: |
98+
app/screenshots/
99+
**/screenshots/
100+
retention-days: 30

0 commit comments

Comments
 (0)