[Not for merge?] Cache path parsing #50
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: E2E Android | |
on: | |
pull_request: | |
paths: | |
- .github/workflows/e2e-android.yml | |
- apps/common/example/** | |
- android/** | |
- src/** | |
- e2e/** | |
- package.json | |
# push: | |
# branches: | |
# - main | |
workflow_dispatch: | |
jobs: | |
test: | |
runs-on: macos-12 | |
timeout-minutes: 60 | |
env: | |
WORKING_DIRECTORY: paper-example | |
API_LEVEL: 34 | |
SYSTEM_IMAGES: system-images;android-34;google_apis;x86_64 | |
AVD_NAME: rn-svg-avd | |
concurrency: | |
group: android-e2e-example-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'yarn' | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v2 | |
with: | |
java-version: '17' | |
distribution: 'zulu' | |
cache: 'gradle' | |
- name: Install NDK | |
uses: nttld/setup-ndk@v1 | |
id: setup-ndk | |
with: | |
ndk-version: r26d | |
local-cache: true | |
- name: Set ANDROID_NDK | |
run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV | |
- name: Cache SDK image | |
id: cache-sdk-img | |
uses: actions/cache@v3 | |
with: | |
path: $ANDROID_HOME/system-images/ | |
key: ${{ runner.os }}-build-system-images-${{ env.SYSTEM_IMAGES }} | |
- name: SKDs - download required images | |
if: ${{ steps.cache-sdd-img.outputs.cache-hit != 'true' }} | |
run: $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "system-images;android-34;google_apis;x86_64" | |
- name: Cache AVD | |
id: cache-avd | |
uses: actions/cache@v3 | |
with: | |
path: ~/.android/avd/${{ env.AVD_NAME }}.avd | |
key: ${{ runner.os }}-avd-images-${{ env.SYSTEM_IMAGES }}-${{ env.AVD_NAME }} | |
- name: Emulator - Create | |
if: ${{ steps.cache-avd.outputs.cache-hit != 'true' }} | |
run: $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd -n ${{ env.AVD_NAME }} --device 28 --package "${{ env.SYSTEM_IMAGES }}" --sdcard 512M | |
- name: Emulator - Set screen settings | |
if: ${{ steps.cache-avd.outputs.cache-hit != 'true' }} | |
run: | | |
echo "AVD config path: $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini" | |
sed -i '' 's/.*hw\.lcd\.density.*/hw\.lcd\.density = 480/g' $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini | |
sed -i '' 's/.*hw\.lcd\.width.*/hw\.lcd\.width = 1344/g' $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini | |
sed -i '' 's/.*hw\.lcd\.height.*/hw\.lcd\.height = 2992/g' $HOME/.android/avd/${{ env.AVD_NAME }}.avd/config.ini | |
- name: Emulator - Boot | |
run: $ANDROID_HOME/emulator/emulator -memory 4096 -avd ${{ env.AVD_NAME }} -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim & | |
- name: ADB Wait For Device | |
run: adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' | |
timeout-minutes: 10 | |
- name: Reverse TCP | |
working-directory: apps/${{ env.WORKING_DIRECTORY }} | |
run: adb devices | grep '\t' | awk '{print $1}' | sed 's/\\s//g' | xargs -I {} adb -s {} reverse tcp:8081 tcp:8081 | |
- name: Install root node dependencies | |
run: yarn | |
- name: Install example app node dependencies | |
run: yarn | |
working-directory: apps/${{ env.WORKING_DIRECTORY }} | |
- name: Build Android app | |
working-directory: apps/${{ env.WORKING_DIRECTORY }}/android | |
run: ./gradlew assembleDebug | |
- name: Start Metro server | |
working-directory: apps/${{ env.WORKING_DIRECTORY }} | |
run: E2E=true yarn start &> output.log & | |
- name: Install APK | |
run: adb install -r apps/${{ env.WORKING_DIRECTORY }}/android/app/build/outputs/apk/debug/app-debug.apk | |
- name: Launch APK | |
run: 'while ! (adb shell monkey -p com.example 1 | grep -q "Events injected: 1"); do sleep 1; echo "Retrying due to errors in previous run..."; done' | |
- name: Run e2e Tests | |
run: E2E=true yarn e2e | |
- name: Upload test report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: report | |
path: | | |
report.html | |
jest-html-reporters-attach/ | |
- name: Kill emulator (so it can be cached safely) | |
run: adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done |