Take into account low power mode when fetching notifications #3440
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: Maestro (local) | |
| # Run this flow only when APK Build workflow completes | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| # Enrich gradle.properties for CI/CD | |
| env: | |
| GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx9g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g | |
| CI_GRADLE_ARG_PROPERTIES: --stacktrace --no-daemon -Dsonar.gradle.skipCompile=true --no-configuration-cache | |
| ARCH: x86_64 | |
| DEVICE: pixel_7_pro | |
| API_LEVEL: 33 | |
| TARGET: google_apis | |
| jobs: | |
| build-apk: | |
| name: Build APK | |
| runs-on: ubuntu-latest | |
| concurrency: | |
| group: ${{ format('maestro-build-{0}', github.ref) }} | |
| cancel-in-progress: true | |
| steps: | |
| - name: Free Disk Space (Ubuntu) | |
| uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be | |
| with: | |
| # This might remove tools that are actually needed, if set to "true" but frees about 6 GB | |
| tool-cache: true | |
| # All of these default to true, but we should only need the 'android' one (and maybe swap-storage?) | |
| android: false | |
| dotnet: true | |
| haskell: true | |
| # This takes way too long to run (~2 minutes) and it saves only ~5.5GB | |
| large-packages: false | |
| docker-images: true | |
| swap-storage: false | |
| - uses: actions/checkout@v6 | |
| with: | |
| # Ensure we are building the branch and not the branch after being merged on develop | |
| # https://github.com/actions/checkout/issues/881 | |
| ref: ${{ github.ref }} | |
| - uses: actions/setup-java@v5 | |
| name: Use JDK 21 | |
| with: | |
| distribution: 'temurin' # See 'Supported distributions' for available options | |
| java-version: '21' | |
| - name: Configure gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| cache-read-only: ${{ github.ref != 'refs/heads/develop' }} | |
| - name: Assemble debug APK | |
| run: ./gradlew :app:assembleGplayDebug $CI_GRADLE_ARG_PROPERTIES | |
| env: | |
| ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }} | |
| ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }} | |
| ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }} | |
| - name: Upload APK as artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: elementx-apk-maestro | |
| path: | | |
| app/build/outputs/apk/gplay/debug/app-gplay-x86_64-debug.apk | |
| retention-days: 5 | |
| overwrite: true | |
| if-no-files-found: error | |
| maestro-cloud: | |
| name: Maestro test suite | |
| runs-on: ubuntu-latest | |
| needs: [ build-apk ] | |
| # Allow only one to run at a time, since they use the same environment. | |
| # Otherwise, tests running in parallel can break each other. | |
| concurrency: | |
| group: maestro-test | |
| steps: | |
| - uses: actions/checkout@v6 | |
| if: (github.event_name == 'pull_request' && github.event.pull_request.fork == null) || github.event_name == 'workflow_dispatch' | |
| with: | |
| # Ensure we are building the branch and not the branch after being merged on develop | |
| # https://github.com/actions/checkout/issues/881 | |
| ref: ${{ github.ref }} | |
| - name: Download APK artifact from previous job | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: elementx-apk-maestro | |
| - name: Enable KVM group perms | |
| 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: Install maestro | |
| run: curl -fsSL "https://get.maestro.mobile.dev" | bash | |
| - name: Run Maestro tests in emulator | |
| id: maestro_test | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| continue-on-error: true | |
| env: | |
| MAESTRO_USERNAME: maestroelement | |
| MAESTRO_PASSWORD: ${{ secrets.MATRIX_MAESTRO_ACCOUNT_PASSWORD }} | |
| MAESTRO_RECOVERY_KEY: ${{ secrets.MATRIX_MAESTRO_ACCOUNT_RECOVERY_KEY }} | |
| MAESTRO_ROOM_NAME: MyRoom | |
| MAESTRO_INVITEE1_MXID: "@maestroelement2:matrix.org" | |
| MAESTRO_INVITEE2_MXID: "@maestroelement3:matrix.org" | |
| MAESTRO_APP_ID: io.element.android.x.debug | |
| with: | |
| api-level: ${{ env.API_LEVEL }} | |
| arch: ${{ env.ARCH }} | |
| profile: ${{ env.DEVICE }} | |
| target: ${{ env.TARGET }} | |
| emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: true | |
| disk-size: 3G | |
| script: | | |
| .github/workflows/scripts/maestro/maestro-local-with-screen-recording.sh app-gplay-x86_64-debug.apk | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: test-results | |
| path: | | |
| ~/.maestro/tests/** | |
| retention-days: 5 | |
| overwrite: true | |
| if-no-files-found: error | |
| - name: Update summary (success) | |
| if: steps.maestro_test.outcome == 'success' | |
| run: | | |
| echo "### Maestro tests worked :rocket:!" | |
| - name: Update summary (failure) | |
| if: steps.maestro_test.outcome != 'success' | |
| run: | | |
| LOG_FILE=$(find ~/.maestro/tests/ -name maestro.log) | |
| echo "Log file: $LOG_FILE" | |
| LOG_LINES="$(tail -n 30 $LOG_FILE)" | |
| echo "### :x: Maestro tests failed... | |
| \`\`\` | |
| $LOG_LINES | |
| \`\`\`" >> $GITHUB_STEP_SUMMARY | |
| - name: Fail the workflow in case of error in test | |
| if: steps.maestro_test.outcome != 'success' | |
| run: | | |
| echo "Maestro tests failed. Please check the logs." | |
| exit 1 |