# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. name: Android Testsuite on: push: paths-ignore: - '**.md' - 'LICENSE' - '.eslint*' pull_request: paths-ignore: - '**.md' - 'LICENSE' - '.eslint*' jobs: test: name: Android ${{ matrix.versions.android }} Test runs-on: macos-latest continue-on-error: true # hoist configurations to top that are expected to be updated env: # Storing a copy of the repo repo: ${{ github.event.pull_request.head.repo.full_name || github.repository }} node-version: 16 # These are the default Java configurations used by most tests. # To customize these options, add "java-distro" or "java-version" to the strategy matrix with its overriding value. default_java-distro: temurin default_java-version: 11 # These are the default Android System Image configurations used by most tests. # To customize these options, add "system-image-arch" or "system-image-target" to the strategy matrix with its overriding value. default_system-image-arch: x86_64 default_system-image-target: google_apis # Most system images have a google_api option. Set this as default. # configurations for each testing strategy (test matrix) strategy: matrix: versions: # Test the lowest minimum supported APIs - android: 5.1 android-api: 22 # Test the last 3-4 supported APIs - android: 10 android-api: 29 - android: 11 android-api: 30 - android: 12 android-api: 31 - android: 12L android-api: 32 timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: ${{ env.node-version }} - uses: actions/setup-java@v3 env: java-version: ${{ matrix.versions.java-version == '' && env.default_java-version || matrix.versions.java-version }} java-distro: ${{ matrix.versions.java-distro == '' && env.default_java-distro || matrix.versions.java-distro }} with: distribution: ${{ env.java-distro }} java-version: ${{ env.java-version }} - name: Run Environment Information run: | node --version npm --version java -version - name: Run npm install run: | export PATH="/usr/local/lib/android/sdk/platform-tools":$PATH export JAVA_HOME=$JAVA_HOME_11_X64 npm i -g cordova@latest npm ci - name: Run paramedic install if: ${{ endswith(env.repo, '/cordova-paramedic') != true }} run: npm i -g github:apache/cordova-paramedic - uses: reactivecircus/android-emulator-runner@5de26e4bd23bf523e8a4b7f077df8bfb8e52b50e env: system-image-arch: ${{ matrix.versions.system-image-arch == '' && env.default_system-image-arch || matrix.versions.system-image-arch }} system-image-target: ${{ matrix.versions.system-image-target == '' && env.default_system-image-target || matrix.versions.system-image-target }} with: api-level: ${{ matrix.versions.android-api }} target: ${{ env.system-image-target }} arch: ${{ env.system-image-arch }} force-avd-creation: false disable-animations: false emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim script: echo "Pregenerate the AVD before running Paramedic" - name: Run paramedic tests uses: reactivecircus/android-emulator-runner@5de26e4bd23bf523e8a4b7f077df8bfb8e52b50e env: system-image-arch: ${{ matrix.versions.system-image-arch == '' && env.default_system-image-arch || matrix.versions.system-image-arch }} system-image-target: ${{ matrix.versions.system-image-target == '' && env.default_system-image-target || matrix.versions.system-image-target }} test_config: 'android-${{ matrix.versions.android }}.config.json' # Generally, this should automatically work for cordova-paramedic & plugins. If the path is unique, this can be manually changed. test_plugin_path: ${{ endswith(env.repo, '/cordova-paramedic') && './spec/testable-plugin/' || './' }} paramedic: ${{ endswith(env.repo, '/cordova-paramedic') && 'node main.js' || 'cordova-paramedic' }} with: api-level: ${{ matrix.versions.android-api }} target: ${{ env.system-image-target }} arch: ${{ env.system-image-arch }} force-avd-creation: false disable-animations: false emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim script: ${{ env.paramedic }} --config ./pr/local/${{ env.test_config }} --plugin ${{ env.test_plugin_path }}