| # 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: iOS Testsuite |
| |
| on: |
| push: |
| paths-ignore: |
| - '**.md' |
| - 'LICENSE' |
| - '.eslint*' |
| pull_request: |
| paths-ignore: |
| - '**.md' |
| - 'LICENSE' |
| - '.eslint*' |
| |
| jobs: |
| test: |
| name: iOS ${{ matrix.versions.ios-version }} Test |
| runs-on: macos-latest |
| |
| # 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 |
| |
| # > Starting April 26, 2021, all iOS and iPadOS apps submitted to the App Store must be built with Xcode 12 and the iOS 14 SDK. |
| # Because of Apple's requirement, listed above, We will only be using the latest Xcode release for testing. |
| # To customize these options, add "xcode-version" to the strategy matrix with its overriding value. |
| default_xcode-version: latest-stable |
| |
| strategy: |
| matrix: |
| versions: |
| - ios-version: 12.x |
| - ios-version: 13.x |
| - ios-version: 14.x |
| |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-node@v2 |
| with: |
| node-version: ${{ env.node-version }} |
| - uses: maxim-lobanov/setup-xcode@881be567d30efed8fb3f12b5099d68c3fb72aa3d |
| env: |
| xcode-version: ${{ matrix.versions.xcode-version == '' && env.default_xcode-version || matrix.versions.xcode-version }} |
| with: |
| xcode-version: ${{ env.xcode-version }} |
| |
| - name: Run Environment Information |
| run: | |
| node --version |
| npm --version |
| xcodebuild -version |
| |
| - name: Run npm install |
| run: | |
| npm i -g cordova@latest ios-deploy@latest |
| npm ci |
| |
| - name: Run paramedic install |
| if: ${{ endswith(env.repo, '/cordova-paramedic') != true }} |
| run: npm i -g github:apache/cordova-paramedic |
| |
| - name: Run paramedic tests |
| env: |
| test_config: 'ios-${{ matrix.versions.ios-version }}.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' }} |
| run: ${{ env.paramedic }} --config ./pr/local/${{ env.test_config }} --plugin ${{ env.test_plugin_path }} |