ci(android): add Firebase Test Lab workflow for integration tests#204
Merged
ci(android): add Firebase Test Lab workflow for integration tests#204
Conversation
Adds .github/workflows/integration-tests-firebase.yml that builds the example app and instrumented test APKs via flutter/Gradle and runs the full integration test suite on real hardware via Firebase Test Lab. Changes from initial version: - Switch debug APK build to `flutter build apk --debug` so the output path is unambiguous (always build/app/outputs/apk/debug/app-debug.apk) - Gate the job on same-repo PRs only to avoid auth failures from forks (secrets are unavailable for fork pull requests) Triggers on pull_request to develop/main (same-repo) and workflow_dispatch for manual runs. Built APKs are uploaded as artifacts on every run (if: always()), retained 14 days. Adds an Integration Tests section to README.md documenting local run instructions, CI trigger, and required secrets.
SERDUN
added a commit
that referenced
this pull request
Mar 20, 2026
Adds .github/workflows/integration-tests-firebase.yml that builds the example app and instrumented test APKs via flutter/Gradle and runs the full integration test suite on real hardware via Firebase Test Lab. Changes from initial version: - Switch debug APK build to `flutter build apk --debug` so the output path is unambiguous (always build/app/outputs/apk/debug/app-debug.apk) - Gate the job on same-repo PRs only to avoid auth failures from forks (secrets are unavailable for fork pull requests) Triggers on pull_request to develop/main (same-repo) and workflow_dispatch for manual runs. Built APKs are uploaded as artifacts on every run (if: always()), retained 14 days. Adds an Integration Tests section to README.md documenting local run instructions, CI trigger, and required secrets.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Android emulators cannot reliably run the callkeep integration tests.
The
ConnectionServiceAPI, foreground service lifecycle, and thedual-process teardown (
main+:callkeep_core) depend on real OSscheduler and Telecom behaviour that emulators do not reproduce.
Firebase Test Lab provides real devices and integrates cleanly with
GitHub Actions, making it the lowest-friction path to running these
tests in CI without managing physical lab hardware.
What
Adds
.github/workflows/integration-tests-firebase.ymlpull_requesttodevelop/main(same-repo PRs only — fork PRs are skipped because secrets are unavailable for forks) andworkflow_dispatchfor manual runsgoogle-github-actions/authflutter build apk --debug(unambiguous output path)./gradlew :app:assembleAndroidTestgcloud firebase test android runif: always()), retained 14 daysAdds an Integration Tests section to
README.mdrun_integration_tests.shfor local runsworkflow_dispatchtrigger and required secretsRequired setup
A maintainer must add these secrets in GitHub repo settings:
FIREBASE_SERVICE_ACCOUNTFIREBASE_PROJECT_ID