Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions .github/workflows/screenshot-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: Android Screenshot Tests

on:
push:
branches: [ main, github-actions ]
pull_request:
branches: [ main ]

jobs:
screenshot-tests:
runs-on: ubuntu-latest
timeout-minutes: 45

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: false

- name: Enable Gradle caching
run: |
mkdir -p ~/.gradle
echo "org.gradle.caching=true" >> ~/.gradle/gradle.properties
echo "org.gradle.parallel=true" >> ~/.gradle/gradle.properties
echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m" >> ~/.gradle/gradle.properties

- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
android/.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: Free up disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
df -h

- name: Build only x86_64 for emulator tests
run: |
echo "reactNativeArchitectures=x86_64" >> android/gradle.properties

- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-26

- name: Create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 26
target: default
arch: x86_64
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -no-snapshot-save
disable-animations: true
disable-spellchecker: true
script: echo "Generated AVD snapshot for caching."

- name: Run screenshot tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 26
target: default
arch: x86_64
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
disable-spellchecker: true
script: ./android/gradlew -p android connectedDebugAndroidTest --stacktrace

- name: Pull screenshots from device
if: always()
run: ./android/gradlew -p android pullDebugAndroidTestScreenshots || true

- name: Upload screenshot test results
if: always()
uses: actions/upload-artifact@v4
with:
name: screenshot-test-results
path: |
android/app/build/outputs/androidTest-results/
android/app/screenshots/
retention-days: 30

- name: Upload test reports
if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: android/app/build/reports/androidTests/
retention-days: 30
Empty file modified android/gradlew
100644 → 100755
Empty file.
Loading