Skip to content

fix: apply monkey patch before StatusBar updates #1031

fix: apply monkey patch before StatusBar updates

fix: apply monkey patch before StatusBar updates #1031

name: 🛠 Android e2e tests
on:
pull_request:
paths:
- ".github/workflows/android-e2e-test.yml"
- "package.json"
- "android/**"
- "example/**"
- "e2e/**"
- "src/**"
push:
branches:
- main
paths:
- ".github/workflows/android-e2e-test.yml"
- "package.json"
- "android/**"
- "example/**"
- "e2e/**"
- "src/**"
jobs:
build:
name: 🏗️ Build E2E apk
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: example
concurrency:
group: android-e2e-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# force to remove default tools
tool-cache: true
# preserve Android
android: false
- uses: actions/setup-node@v4
with:
node-version: 18.x
cache: "yarn"
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: "microsoft"
java-version: "17"
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Restore node_modules from cache
uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install root dependencies
run: yarn install
- name: Install example project dependencies
working-directory: ${{ env.WORKING_DIRECTORY }}
run: yarn
- name: Install e2e dependencies
run: yarn install --cwd e2e
- name: Restore Gradle cache
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-e2e-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-e2e-gradle-
- name: Build app
working-directory: e2e
run: yarn build-example:android
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: android-e2e-apk
path: example/android/app/build/outputs/apk/**
e2e-test:
name: ⚙️ Automated test cases
runs-on: ubuntu-latest
timeout-minutes: 60
env:
WORKING_DIRECTORY: example
concurrency:
group: android-e2e-${{ matrix.devices.api }}-${{ github.ref }}
cancel-in-progress: true
strategy:
matrix:
devices:
[
{ api: 28, target: default, soft-check: false },
{ api: 31, target: google_apis, soft-check: true },
]
needs: build
steps:
- uses: actions/checkout@v4
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# force to remove default tools
tool-cache: true
# preserve Android
android: false
- name: Download a single artifact
uses: actions/download-artifact@v4
with:
name: android-e2e-apk
path: example/android/app/build/outputs/apk/
- uses: actions/setup-node@v4
with:
node-version: 18.x
cache: "yarn"
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: "microsoft"
java-version: "17"
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Restore node_modules from cache
uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install root dependencies
run: yarn install
- name: Install e2e dependencies
run: yarn install --cwd e2e
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ matrix.devices.api }}-${{ matrix.devices.target }}
- name: Run emulator and tests
uses: reactivecircus/[email protected]
with:
working-directory: e2e
api-level: ${{ matrix.devices.api }}
target: ${{ matrix.devices.target }}
profile: pixel_2
ram-size: "4096M"
disk-size: "10G"
disable-animations: false
avd-name: e2e_emulator_${{ matrix.devices.api }}
arch: x86_64
script: SOFT_CHECK=${{ matrix.devices.soft-check }} yarn test-example:android-${{ matrix.devices.api }}
- uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
name: android-fail-screen-shoots
path: e2e/artifacts