Amplify Integration Tests #360
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: Amplify Integration Tests | |
on: | |
push: | |
branches: | |
- main | |
- next | |
- stable | |
- feat/** | |
- fix/** | |
- test/** | |
schedule: | |
# 6am pacific time daily, only runs on default branch | |
- cron: "0 13 * * *" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
android: | |
runs-on: macos-latest | |
# These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
scope: | |
- "amplify_analytics_pinpoint_example" | |
- "amplify_api_example" | |
- "amplify_authenticator_example" | |
- "amplify_auth_cognito_example" | |
- "amplify_datastore_example" | |
- "amplify_storage_s3_example" | |
- "amplify_db_common_example" | |
api-level: | |
- 25 | |
- 33 | |
target: | |
- google_apis | |
include: | |
- api-level: 25 | |
arch: x86 | |
- api-level: 33 | |
arch: x86_64 | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # 3.1.0 | |
with: | |
persist-credentials: false | |
submodules: true | |
# Flutter requires Java 11 to build android apps with Gradle. | |
- uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc # 3.6.0 | |
with: | |
distribution: "corretto" # Amazon Corretto Build of OpenJDK | |
java-version: "11" | |
- name: Install dependencies | |
uses: ./.github/composite_actions/install_dependencies | |
- name: Fetch Amplify backend configurations | |
uses: ./.github/composite_actions/fetch_backends | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
scope: ${{ matrix.scope }} | |
secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} | |
- name: Cache AVD | |
id: avd-cache | |
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11 | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{ matrix.api-level }}-${{ matrix.arch }}-${{ matrix.target }} | |
- name: Create AVD and generate snapshot | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@50986b1464923454c95e261820bc626f38490ec0 # 2.27.0 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
arch: ${{ matrix.arch }} | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -logcat '*:e *:s' | |
script: echo "Generated AVD snapshot for caching." | |
- name: Run Android integration tests | |
uses: reactivecircus/android-emulator-runner@50986b1464923454c95e261820bc626f38490ec0 # 2.27.0 | |
# Make the timeout a little longer and add retry due to delay from starting emulator. | |
timeout-minutes: 60 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
arch: ${{ matrix.arch }} | |
# -no-snapshot-save + default options: https://github.com/reactivecircus/android-emulator-runner#configurations | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -logcat '*:e *:s' | |
script: | | |
adb shell settings put system screen_off_timeout 3600000 # set timeout to 1 hour | |
melos exec -c 1 --scope ${{ matrix.scope }} -- small=true \$MELOS_ROOT_PATH/build-support/integ_test.sh -d emulator-5554 --retries 1 | |
ios: | |
runs-on: macos-latest | |
# These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
scope: | |
- "amplify_analytics_pinpoint_example" | |
- "amplify_api_example" | |
- "amplify_authenticator_example" | |
- "amplify_auth_cognito_example" | |
- "amplify_datastore_example" | |
- "amplify_storage_s3_example" | |
- "amplify_db_common_example" | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # 3.1.0 | |
with: | |
persist-credentials: false | |
submodules: true | |
- name: Install dependencies | |
uses: ./.github/composite_actions/install_dependencies | |
- name: Boot iOS Simulator | |
run: | | |
xcrun simctl boot "iPhone 14 Pro Max" | |
- name: Fetch Amplify backend configurations | |
uses: ./.github/composite_actions/fetch_backends | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
scope: ${{ matrix.scope }} | |
secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} | |
- name: Run integration tests | |
timeout-minutes: 30 | |
run: | | |
melos exec -c 1 --scope ${{ matrix.scope }} -- small=true \$MELOS_ROOT_PATH/build-support/integ_test_ios.sh | |
web: | |
runs-on: ubuntu-latest | |
# These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
scope: | |
- "amplify_analytics_pinpoint_example" | |
- "amplify_api_example" | |
# TODO(dnys1): Web UI tests are not currently able to be run in CI | |
# - "amplify_authenticator_example" | |
- "amplify_auth_cognito_example" | |
- "amplify_storage_s3_example" | |
- "amplify_db_common_example" | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # 3.1.0 | |
with: | |
persist-credentials: false | |
submodules: true | |
- name: Install dependencies | |
uses: ./.github/composite_actions/install_dependencies | |
- name: Fetch Amplify backend configurations | |
uses: ./.github/composite_actions/fetch_backends | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
scope: ${{ matrix.scope }} | |
secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} | |
- uses: nanasess/setup-chromedriver@7cbd35794f8ab317f778c3172fb86c1e9b2853f7 # 1.1.0 | |
- name: Run integration tests | |
timeout-minutes: 30 | |
run: | | |
chromedriver --port=4444 & | |
melos exec -c 1 --scope ${{ matrix.scope }} -- \$MELOS_ROOT_PATH/build-support/integ_test.sh -d web-server | |
macos: | |
runs-on: macos-latest | |
# These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
scope: | |
- "amplify_analytics_pinpoint_example" | |
- "amplify_api_example" | |
# TODO(dnys1): macOS tests are failing for some reason | |
# - "amplify_authenticator_example" | |
- "amplify_auth_cognito_example" | |
- "amplify_storage_s3_example" | |
- "amplify_db_common_example" | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # 3.1.0 | |
with: | |
persist-credentials: false | |
submodules: true | |
- name: Install dependencies | |
uses: ./.github/composite_actions/install_dependencies | |
with: | |
flutter-version: "3.3.0" | |
- name: Fetch Amplify backend configurations | |
uses: ./.github/composite_actions/fetch_backends | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
scope: ${{ matrix.scope }} | |
secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} | |
- name: Run integration tests | |
timeout-minutes: 30 | |
run: | | |
flutter config --enable-macos-desktop | |
melos exec -c 1 --scope ${{ matrix.scope }} -- \$MELOS_ROOT_PATH/build-support/integ_test.sh -d macos | |
linux: | |
runs-on: ubuntu-latest | |
# These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
scope: | |
- "amplify_analytics_pinpoint_example" | |
- "amplify_api_example" | |
- "amplify_authenticator_example" | |
- "amplify_auth_cognito_example" | |
- "amplify_storage_s3_example" | |
- "amplify_db_common_example" | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # 3.1.0 | |
with: | |
persist-credentials: false | |
submodules: true | |
- name: Install dependencies | |
uses: ./.github/composite_actions/install_dependencies | |
- name: Fetch Amplify backend configurations | |
uses: ./.github/composite_actions/fetch_backends | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
scope: ${{ matrix.scope }} | |
secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} | |
- name: Run integration tests | |
timeout-minutes: 30 | |
run: | | |
flutter config --enable-linux-desktop | |
melos exec -c 1 --scope ${{ matrix.scope }} -- \$MELOS_ROOT_PATH/build-support/integ_test.sh -d linux | |
windows: | |
runs-on: windows-latest | |
# These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
scope: | |
- "amplify_analytics_pinpoint_example" | |
- "amplify_api_example" | |
- "amplify_authenticator_example" | |
- "amplify_auth_cognito_example" | |
- "amplify_storage_s3_example" | |
- "amplify_db_common_example" | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # 3.1.0 | |
with: | |
persist-credentials: false | |
submodules: true | |
- name: Change path restrictions | |
run: git config --global core.longpaths true | |
- name: Install dependencies | |
uses: ./.github/composite_actions/install_dependencies | |
- name: Fetch Amplify backend configurations | |
uses: ./.github/composite_actions/fetch_backends | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
scope: ${{ matrix.scope }} | |
secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} | |
- name: Run integration tests | |
timeout-minutes: 30 | |
run: | | |
flutter config --enable-windows-desktop | |
melos exec -c 1 --scope ${{ matrix.scope }} -- flutter test integration_test/main_test.dart -d windows |