Skip to content

give it longer to boot #46

give it longer to boot

give it longer to boot #46

Workflow file for this run

name: E2E CI
on:
push:
branches:
- chore/maestro-ci
jobs:
run-tests:
runs-on: ubuntu-22.04-arm64-2cpu
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get APK for testing
run: |
curl -o test.apk "https://github.com/digidem/comapeo-mobile/releases/download/untagged-142428c7d3d78b089aab/CoMapeo0.0.apk"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
# https://developer.android.com/tools/variables
- name: Set up environment variables
run: |
mkdir -p $HOME/.android/sdk/platforms
mkdir -p $HOME/.android/sdk/platform-tools
echo "ANDROID_HOME=$HOME/.android/sdk" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=$HOME/.android/sdk" >> $GITHUB_ENV
echo "ANDROID_SDK_HOME=$HOME" >> $GITHUB_ENV
echo "ANDROID_USER_HOME=$HOME/.android" >> $GITHUB_ENV
echo "ANDROID_EMULATOR_HOME=$HOME/.android" >> $GITHUB_ENV
echo "ANDROID_AVD_HOME=$HOME/.android/avd" >> $GITHUB_ENV
- name: Install Maestro
run: curl -Ls 'https://get.maestro.mobile.dev' | bash
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
packages: 'platform-tools'
# https://github.com/lzhiyong/android-sdk-tools/releases
- name: Install ADB
run: |
curl --compressed --location --output tools.zip https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-aarch64.zip
unzip -d tools -n -q tools.zip
rm -f tools.zip
cp tools/platform-tools/adb $ANDROID_HOME/platform-tools/adb
rm -fr tools
shell: bash
# https://ci.android.com/builds/branches/aosp-emu-master-dev/grid
- name: Install Emulator
run: |
curl --compressed --location --output emulator.zip $(curl --location --silent https://ci.android.com/builds/submitted/11435509/emulator-linux_aarch64/latest/sdk-repo-linux_aarch64-emulator-11435509.zip | grep -o 'https://storage[^"]*' | sed 's/\\u0026/\&/g')
unzip -d $ANDROID_HOME -n -q emulator.zip
rm -f emulator.zip
cp $ANDROID_HOME/platform-tools/package.xml $ANDROID_HOME/emulator/package.xml
sed -i \
-e 's|path="[a-zA-Z-]*"|path="emulator"|g' \
-e 's|<display-name>Android .*<\/display-name>|<display-name>Android Emulator<\/display-name>|g' \
$ANDROID_HOME/emulator/package.xml
echo 'Vulkan = off\nGLDirectMem = on' >> $ANDROID_USER_HOME/advancedFeatures.ini
shell: bash
- name: Install SDK Tools
run: |
sdkmanager 'system-images;android-28;google_apis;arm64-v8a' 'tools'
bash -c 'yes || true' | sdkmanager --licenses
shell: bash
- name: Create virtual device
run: |
pwd
echo no | avdmanager create avd --force --name emu --device "pixel_8" -k 'system-images;android-28;google_apis;arm64-v8a'
avdmanager list avd
ls -al $ANDROID_EMULATOR_HOME
echo "Emulator version:"
$ANDROID_HOME/emulator/emulator @emu -version
shell: bash
- name: Start emulator
timeout-minutes: 5
run: |
adb devices
nohup $ANDROID_HOME/emulator/emulator -avd emu -cores 2 -no-window -gpu swiftshader_indirect -memory 2048 -skip-adb-auth -ports 5554,5555 -no-snapshot -show-kernel -noaudio -no-boot-anim -logcat "*:v" -accel off -camera-back emulated -qemu -cpu max -machine gic-version=2 &> emu.log &
echo "Emulator started"
shell: bash
- name: Wait for emulator to boot
timeout-minutes: 12
continue-on-error: true
run: |
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 4; done; input keyevent 82'
adb devices -l
- name: Install APK
run: |
adb install test.apk
shell: bash
- name: Run Maestro tests
run: |
$HOME/.maestro/bin/maestro test e2e || true
adb logcat -d > logcat_output.txt
shell: bash
- name: Upload Logcat Output
uses: actions/upload-artifact@v4
with:
name: logcat-output
path: logcat_output.txt
- name: Emulator logs
if: always()
run: |
adb devices -l
jobs
cat emu.log
echo "boot prop"
adb shell getprop sys.boot_completed
shell: bash
- name: Upload Maestro test artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: maestro-test-results
path: /home/runner/.maestro/tests/*/
- name: Upload Screen Recording
if: always()
uses: actions/upload-artifact@v4
with:
name: E2E Screen Recording
path: ${{ github.workspace }}/recording-e2e-flow.*