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
0 commit comments