refactor: replace debug mode with extensible hook-based system (#630) #367
This file contains hidden or 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: test | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: subosito/flutter-action@v2 | |
| with: | |
| channel: 'stable' | |
| cache: true | |
| - uses: bluefireteam/melos-action@v3 | |
| - name: Test | |
| run: | | |
| cd workmanager | |
| flutter test | |
| native_ios_tests: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: subosito/flutter-action@v2 | |
| with: | |
| channel: 'stable' | |
| cache: true | |
| - uses: bluefireteam/melos-action@v3 | |
| - name: Setup iOS build environment | |
| run: | | |
| sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer | |
| xcrun --sdk iphoneos --show-sdk-version | |
| - name: Clean and prepare Flutter | |
| run: | | |
| cd example | |
| flutter clean | |
| flutter pub get | |
| - name: Build iOS App | |
| run: cd example && flutter build ios --debug --no-codesign --verbose | |
| - name: Run native iOS tests | |
| run: cd example/ios && xcodebuild -workspace Runner.xcworkspace -scheme Runner -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 16,OS=latest' test | |
| native_android_tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - uses: subosito/flutter-action@v2 | |
| with: | |
| channel: 'stable' | |
| cache: true | |
| - uses: bluefireteam/melos-action@v3 | |
| - name: Build Android App | |
| run: cd example && flutter build apk --debug | |
| - name: Run native Android tests | |
| run: cd example/android && ./gradlew :workmanager_android:test | |
| drive_ios: | |
| strategy: | |
| matrix: | |
| device: | |
| - "iPhone 16 Pro" | |
| fail-fast: false | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: subosito/flutter-action@v2 | |
| with: | |
| channel: 'stable' | |
| cache: true | |
| - uses: futureware-tech/simulator-action@v3 | |
| with: | |
| model: '${{ matrix.device }}' | |
| - uses: bluefireteam/melos-action@v3 | |
| # Run flutter integrate tests | |
| - name: Run Flutter integration tests | |
| run: cd example && flutter test integration_test/workmanager_integration_test.dart | |
| drive_android: | |
| runs-on: ubuntu-latest | |
| #creates a build matrix for your jobs | |
| strategy: | |
| #set of different configurations of the virtual environment. | |
| matrix: | |
| api-level: [35] | |
| # api-level: [21, 29] | |
| target: [default] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Enable KVM | |
| 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 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - uses: subosito/flutter-action@v2 | |
| with: | |
| channel: 'stable' | |
| cache: true | |
| - uses: bluefireteam/melos-action@v3 | |
| # Gradle cache for better performance | |
| - name: Gradle cache | |
| uses: gradle/actions/setup-gradle@v3 | |
| # AVD cache to speed up emulator startup | |
| - name: AVD cache | |
| uses: actions/cache@v4 | |
| id: avd-cache | |
| with: | |
| path: | | |
| ~/.android/avd/* | |
| ~/.android/adb* | |
| key: avd-${{ matrix.api-level }}-${{ matrix.target }}-${{ runner.os }} | |
| # Generate AVD snapshot for caching if not already cached | |
| - name: Create AVD and generate snapshot | |
| if: steps.avd-cache.outputs.cache-hit != 'true' | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: ${{ matrix.api-level }} | |
| target: ${{ matrix.target }} | |
| arch: x86_64 | |
| force-avd-creation: false | |
| emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: true | |
| script: echo "Generated AVD snapshot" | |
| # Run actual tests using cached AVD | |
| - name: Run Flutter integration tests | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: ${{ matrix.api-level }} | |
| target: ${{ matrix.target }} | |
| arch: x86_64 | |
| force-avd-creation: false | |
| emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: true | |
| disk-size: 6000M | |
| heap-size: 600M | |
| script: | | |
| cd example && flutter test integration_test/workmanager_integration_test.dart |