name: Lottiefiles App

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 30

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

      - name: Copy CI gradle.properties
        run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11

      - uses: actions/cache@v2
        with:
          path: |
            ~/.gradle/caches/modules-*
            ~/.gradle/caches/jars-*
            ~/.gradle/caches/build-cache-*
          key: gradle-${{ hashFiles('checksum.txt') }}

      - name: Build project
        run: ./gradlew assembleDebug --stacktrace

      - name: Upload build reports
        if: always()
        uses: actions/upload-artifact@v2
        with:
          name: build-reports
          path: app/build/reports/

  test:
    needs: build
    runs-on: macOS-latest # enables hardware acceleration in the virtual machine
    timeout-minutes: 30
    strategy:
      matrix:
        api-level: [ 23, 26, 29 ]

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

      - name: Copy CI gradle.properties
        run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11

      - name: Run instrumentation tests
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: ${{ matrix.api-level }}
          arch: x86
          disable-animations: true
          script: ./gradlew app:cAT --stacktrace

      - name: Upload test reports
        if: always()
        uses: actions/upload-artifact@v2
        with:
          name: test-reports
          path: app/build/reports/
