Skip to content

Detox E2E Android

Detox E2E Android #948

Workflow file for this run

name: Detox E2E Android
on: workflow_dispatch
jobs:
detox-android:
timeout-minutes: 25
runs-on: [macos-13-xlarge]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@master
with:
node-version: 18.12.1
- name: Install dependencies
run: |
npm ci
npm run lerna bootstrap -- --scope=\'{@quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle}\'
- name: Pull binaries
run: |
git lfs install --force
git lfs pull
# see: https://stackoverflow.com/questions/67264212/android-emulator-crash-when-start-hvf-error-hv-error
- name: Create qemu entitlements
run: |
{
echo '<?xml version="1.0" encoding="UTF-8"?>'
echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">'
echo '<plist version="1.0">'
echo '<dict>'
echo ' <key>com.apple.security.hypervisor</key>'
echo ' <true/>'
echo '</dict>'
echo '</plist>'
} >> $ANDROID_HOME/emulator/qemu/darwin-aarch64/entitlements.xml
- name: Re-sign qemu binary
run: |
cd $ANDROID_HOME/emulator/qemu/darwin-aarch64
codesign -s - --entitlements entitlements.xml --force qemu-system-aarch64 --verbose
- name: Install SDK image
run: yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install 'system-images;android-34;google_apis;arm64-v8a'
- name: Create AVD
run: $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd -n emulator_ci -k 'system-images;android-34;google_apis;arm64-v8a' -d 'pixel_7'
- name: Boot AVD
run: $ANDROID_HOME/emulator/emulator -avd emulator_ci
- name: Install pm2
run: npm install pm2@latest -g
- name: Start metro
run: |
cd packages/mobile
pm2 --name METRO start npm -- start
- name: Install Detox CLI
run: npm install detox-cli --global
- name: Build Detox
run: |
cd packages/mobile
detox build -c android.emu.debug.ci
- name: Run basic tests
run: |
cd packages/mobile
detox test starter -c android.emu.debug.ci
- name: Stop metro
run: pm2 stop METRO
# - name: Take screenshot
# if: always()
# run: | # TODO
# - name: Upload screenshot
# if: always()
# uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
# with:
# name: screenshot.png
# path: screenshot.png