Add CI job for running macOS unit tests #333
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
permissions: {} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
env: | |
flutter: '3.x' | |
ios-simulator: iPhone 15 | |
java: 11 | |
jobs: | |
authorize: | |
name: Authorize | |
environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} | |
runs-on: ubuntu-latest | |
steps: | |
- run: true | |
analyze-auth0_flutter: | |
name: Analyze auth0_flutter Flutter package | |
needs: authorize | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Install Flutter | |
uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 | |
with: | |
flutter-version: ${{ env.flutter }} | |
channel: stable | |
cache: true | |
- name: Add example/.env | |
working-directory: auth0_flutter | |
run: cp example/.env.example example/.env | |
- name: Analize auth0_flutter package | |
working-directory: auth0_flutter | |
run: flutter analyze | |
analyze-auth0_flutter_platform_interface: | |
name: Analyze auth0_flutter_platform_interface Flutter package | |
needs: authorize | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Install Flutter | |
uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 | |
with: | |
flutter-version: ${{ env.flutter }} | |
channel: stable | |
cache: true | |
- name: Analize auth0_flutter_platform_interface package | |
working-directory: auth0_flutter_platform_interface | |
run: flutter analyze | |
test-auth0_flutter: | |
name: Test auth0_flutter Flutter package | |
needs: authorize | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Install Flutter | |
uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 | |
with: | |
flutter-version: ${{ env.flutter }} | |
channel: stable | |
cache: true | |
- name: Add example/.env | |
working-directory: auth0_flutter | |
run: cp example/.env.example example/.env | |
- name: Test auth0_flutter package | |
working-directory: auth0_flutter | |
run: | | |
flutter test --tags browser --platform chrome | |
flutter test --coverage --exclude-tags browser | |
- name: Upload coverage report | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
with: | |
name: auth0_flutter coverage | |
path: auth0_flutter/coverage/lcov.info | |
test-auth0_flutter_platform_interface: | |
name: Test auth0_flutter_platform_interface Flutter package | |
needs: authorize | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Install Flutter | |
uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 | |
with: | |
flutter-version: ${{ env.flutter }} | |
channel: stable | |
cache: true | |
- name: Test auth0_flutter_platform_interface package | |
working-directory: auth0_flutter_platform_interface | |
run: flutter test --coverage | |
- name: Upload coverage report | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
with: | |
name: auth0_flutter_platform_interface coverage | |
path: auth0_flutter_platform_interface/coverage/lcov.info | |
test-ios-unit: | |
name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} | |
needs: authorize | |
runs-on: macos-13 | |
environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} | |
strategy: | |
matrix: | |
xcode: | |
- '15.0.1' | |
env: | |
platform: iOS | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Set up environment | |
uses: ./.github/actions/setup-darwin | |
with: | |
platform: ${{ env.platform }} | |
flutter: ${{ env.flutter }} | |
xcode: ${{ matrix.xcode }} | |
auth0-domain: ${{ vars.AUTH0_DOMAIN }} | |
auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} | |
- name: Run iOS unit tests | |
uses: ./.github/actions/unit-tests-darwin | |
with: | |
platform: ${{ env.platform }} | |
destination: ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }} | |
- name: Convert coverage report | |
working-directory: auth0_flutter/example/ios | |
run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj | |
- name: Upload coverage report | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
with: | |
name: iOS coverage | |
path: auth0_flutter/example/ios/cobertura | |
test-ios-smoke: | |
name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} | |
needs: authorize | |
runs-on: macos-13 | |
environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} | |
env: | |
platform: iOS | |
USER_EMAIL: ${{ secrets.USER_EMAIL }} | |
USER_PASSWORD: ${{ secrets.USER_PASSWORD }} | |
strategy: | |
matrix: | |
xcode: | |
- '15.0.1' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Set up environment | |
uses: ./.github/actions/setup-darwin | |
with: | |
platform: ${{ env.platform }} | |
flutter: ${{ env.flutter }} | |
xcode: ${{ matrix.xcode }} | |
auth0-domain: ${{ vars.AUTH0_DOMAIN }} | |
auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} | |
- name: Run iOS smoke tests | |
if: ${{ github.event.pull_request.head.repo.fork == false }} | |
working-directory: auth0_flutter/example/ios | |
run: | | |
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 | |
xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests | |
- name: Upload xcresult bundles | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
if: ${{ failure() }} | |
with: | |
name: 'iOS xcresult bundles (smoke tests)' | |
path: 'auth0_flutter/example/ios/*.xcresult' | |
test-macos-unit: | |
name: Run native macOS unit tests using Xcode ${{ matrix.xcode }} | |
needs: authorize | |
runs-on: macos-13 | |
environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} | |
strategy: | |
matrix: | |
xcode: | |
- '15.0.1' | |
env: | |
platform: macOS | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Set up environment | |
uses: ./.github/actions/setup-darwin | |
with: | |
platform: ${{ env.platform }} | |
flutter: ${{ env.flutter }} | |
xcode: ${{ matrix.xcode }} | |
auth0-domain: ${{ vars.AUTH0_DOMAIN }} | |
auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} | |
- name: Build macOS example app | |
working-directory: auth0_flutter/example | |
run: flutter build macos --debug | |
- name: Run macOS unit tests | |
uses: ./.github/actions/unit-tests-darwin | |
with: | |
platform: ${{ env.platform }} | |
destination: platform=macOS,arch=x86_64 | |
test-android-unit: | |
name: Run native Android unit tests | |
needs: authorize | |
runs-on: ubuntu-latest | |
environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Set up environment | |
uses: ./.github/actions/setup-android | |
with: | |
flutter: ${{ env.flutter }} | |
java: ${{ env.java }} | |
auth0-domain: ${{ vars.AUTH0_DOMAIN }} | |
auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} | |
- name: Build Android example app | |
working-directory: auth0_flutter/example | |
run: flutter build apk --split-per-abi | |
- name: Run Android unit tests | |
working-directory: auth0_flutter/example/android | |
run: ./gradlew koverXmlReportDebug | |
- name: Upload coverage report | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
with: | |
name: Android coverage | |
path: auth0_flutter/example/build/app/coverage.xml | |
- name: Upload test results | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
if: ${{ failure() }} | |
with: | |
name: Test results | |
path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' | |
# test-android-smoke: | |
# name: Run native Android smoke tests using API-level ${{ matrix.android-api }} | |
# needs: authorize | |
# runs-on: macos-latest-xl | |
# environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} | |
# env: | |
# USER_EMAIL: ${{ secrets.USER_EMAIL }} | |
# USER_PASSWORD: ${{ secrets.USER_PASSWORD }} | |
# ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 50 | |
# strategy: | |
# matrix: | |
# android-api: | |
# - 32 | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
# - name: Gradle cache | |
# uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc | |
# - name: AVD cache | |
# uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 | |
# id: avd-cache | |
# with: | |
# path: | | |
# ~/.android/avd/* | |
# ~/.android/adb* | |
# key: avd-${{ matrix.android-api }} | |
# - name: Set up environment | |
# uses: ./.github/actions/setup-android | |
# with: | |
# flutter: ${{ env.flutter }} | |
# java: ${{ env.java }} | |
# auth0-domain: ${{ vars.AUTH0_DOMAIN }} | |
# auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} | |
# - name: Build Android example app | |
# working-directory: auth0_flutter/example | |
# run: flutter build apk --split-per-abi | |
# env: | |
# AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} | |
# USER_EMAIL: ${{ vars.USER_EMAIL }} | |
# USER_PASSWORD: ${{ vars.USER_PASSWORD }} | |
# - name: Set up Appium tests | |
# working-directory: appium-test | |
# run: npm install | |
# - name: Set up Appium driver | |
# run: npx --yes appium@next driver install uiautomator2 | |
# - name: Start Appium server | |
# run: npx --yes appium@next & # Appium recommends this until v2 is released | |
# - name: Create AVD and generate snapshot for caching | |
# if: steps.avd-cache.outputs.cache-hit != 'true' | |
# uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b | |
# with: | |
# api-level: ${{ matrix.android-api }} | |
# target: playstore | |
# arch: x86_64 | |
# profile: 5.4in FWVGA | |
# force-avd-creation: false | |
# emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# disable-animations: false | |
# script: echo "Generated AVD snapshot for caching." | |
# - name: Run Appium tests | |
# uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b | |
# with: | |
# api-level: ${{ matrix.android-api }} | |
# target: playstore | |
# arch: x86_64 | |
# profile: 5.4in FWVGA | |
# ram-size: 10240M | |
# heap-size: 4096M | |
# force-avd-creation: false | |
# emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# disable-animations: true | |
# script: | | |
# adb shell pm clear com.android.chrome | |
# adb shell am set-debug-app --persistent com.android.chrome | |
# adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' | |
# adb emu screenrecord start --time-limit 300 ./recording_video.webm | |
# adb shell settings put system pointer_location 1 | |
# USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js | |
# - name: Upload recording | |
# uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
# if: ${{ failure() }} | |
# with: | |
# name: 'Android - smoke tests recording' | |
# path: recording_video.webm | |
# - name: Upload APK | |
# uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 | |
# if: ${{ failure() }} | |
# with: | |
# name: 'Android - APK' | |
# path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk | |
upload-coverage: | |
name: Upload coverage reports | |
runs-on: ubuntu-latest | |
needs: [ | |
test-auth0_flutter, | |
test-auth0_flutter_platform_interface, | |
test-ios-unit, | |
test-android-unit | |
] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a | |
with: | |
name: auth0_flutter coverage | |
path: coverage/auth0_flutter | |
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a | |
with: | |
name: auth0_flutter_platform_interface coverage | |
path: coverage/auth0_flutter_platform_interface | |
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a | |
with: | |
name: iOS coverage | |
path: coverage/ios | |
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a | |
with: | |
name: Android coverage | |
path: coverage/android | |
- name: Upload coverage report for auth0_flutter | |
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d | |
with: | |
name: Auth0 Flutter | |
flags: auth0_flutter | |
directory: coverage/auth0_flutter | |
- name: Upload coverage report for auth0_flutter_platform_interface | |
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d | |
with: | |
name: Auth0 Flutter | |
flags: auth0_flutter_platform_interface | |
directory: coverage/auth0_flutter_platform_interface | |
- name: Upload coverage report for iOS | |
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d | |
with: | |
name: Auth0 Flutter | |
flags: auth0_flutter_ios | |
directory: coverage/ios | |
- name: Upload coverage report for Android | |
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d | |
with: | |
name: Auth0 Flutter | |
flags: auth0_flutter_android | |
directory: coverage/android |