| # 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 }} |