# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: Run integration tests on: workflow_dispatch: workflow_call: env: BUILD_ARGS: --flavor dev --dart-define cameraStubImage=assets/camera_stub_image.jpg TARGET: integration_test/run_all_tests.dart jobs: run-integration-tests: name: Run integration tests timeout-minutes: 30 strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-13] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Override iap package with stub id: override-iap run: bash ./.github/scripts/stub_iap.sh - name: Restore secrets run: | bash .github/scripts/restore_from_base64.sh "${{ secrets.CONSTANTS }}" "lib/constants.dart" bash .github/scripts/restore_from_base64.sh "${{ secrets.GOOGLE_SERVICES_JSON_ANDROID }}" "android/app/google-services.json" bash .github/scripts/restore_from_base64.sh "${{ secrets.GOOGLE_SERVICES_JSON_IOS }}" "ios/Runner/GoogleService-Info.plist" - uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version: "3.10.0" - name: Build app run: | flutter --version flutter pub get flutter pub run intl_utils:generate flutter analyze lib --fatal-infos if [ "${{ matrix.os }}" == "macos-13" ] then cd ios pod install cd .. fi flutter build ${{ matrix.os == 'ubuntu-latest' && 'apk --debug' || 'ios --no-codesign --simulator --debug' }} $BUILD_ARGS -t $TARGET - name: Enable KVM if: ${{ matrix.os == 'ubuntu-latest' }} run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - name: Launch Android simulator & Run tests if: ${{ matrix.os == 'ubuntu-latest' }} uses: reactivecircus/android-emulator-runner@v2 with: api-level: 32 target: default arch: x86_64 profile: pixel_6 script: flutter test $TARGET $BUILD_ARGS - name: Launch iOS simulator uses: futureware-tech/simulator-action@v3 if: ${{ matrix.os == 'macos-13' }} with: model: "iPhone 15 Pro" - name: Run tests if: ${{ matrix.os == 'macos-13' }} run: flutter test $TARGET $BUILD_ARGS