name: Test e2e

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: macos-latest
    timeout-minutes: 15
    defaults:
      run:
        working-directory: example

    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Node
        uses: actions/setup-node@v1

      - uses: joschi/setup-jdk@v2
        with:
          java-version: '8' # The OpenJDK version to make available on the path
          architecture: 'x64' # defaults to 'x64'

      - name: Download Android Emulator Image
        run: |
          echo yes | $ANDROID_HOME/tools/bin/sdkmanager --channel=0 --verbose "system-images;android-28;default;x86_64"
          echo no | $ANDROID_HOME/tools/bin/avdmanager --verbose create avd --force --name "Pixel_API_28" --package "system-images;android-28;default;x86_64" --sdcard 200M --device 11
          $ANDROID_HOME/emulator/emulator -list-avds

      - name: Install node_modules
        run: |
          npm install
          npx jetify

      - name: Build for detox
        run: |
          npx detox build -c android.emu.release

      - name: Android Emulator
        timeout-minutes: 10
        continue-on-error: true
        run: |
          echo "Starting emulator"
          nohup $ANDROID_HOME/emulator/emulator -avd Pixel_API_28 -no-audio -no-snapshot -no-window &
          $ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82'
          $ANDROID_HOME/platform-tools/adb devices
          echo "Emulator started"

      - name: Test Detox
        run: npx detox test -c android.emu.release --artifacts-location="e2e/__screenshots__" --take-screenshots="all" --headless
