CATROID-1655 Add update smoke CI workflow - #5205
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a GitHub Actions “update smoke” workflow to exercise a real-world upgrade path (install baseline APK → seed on-device app data/legacy DB → update in place → launch and perform basic UI interactions) to catch regressions that only occur on upgraded installs.
Changes:
- Add an
updateTestrelease-like build type and allow overridingversionCodevia-PversionCodeOverride. - Add an update-smoke automation script that seeds fixtures, performs an in-place update, and fails on crash/ANR signals with artifact collection.
- Add a new GitHub Actions workflow to build baseline/PR APKs, run the emulator-based update smoke, and upload diagnostics.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
catroid/build.gradle |
Adds versionCode override support and introduces updateTest build type used by the workflow. |
automationScripts/update-smoke/run-update-smoke.sh |
New end-to-end update test script (install baseline, seed storage/DB, update, launch, UI checks, log capture). |
.github/workflows/update_smoke.yml |
New CI workflow wiring builds, caching, emulator run, and artifact upload. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Addressed Copilot's two update-smoke review comments:
|
|
I asked Claude Code 4.7 for a review of the PR until here and it wrote the following: Review: [Catroid#5205 – CATROID-1655 Add update smoke CI workflow](#5205)Status: Draft · author OverallThe intent is solid and well-motivated: catch upgrade-only regressions (Room schema migrations, storage layout changes, broken legacy projects) by installing a real Play Store baseline, seeding it with fixtures, then upgrading to the PR APK. The PR even cites a real catch (the schema crash in PR #5202), which is the best argument for merging this kind of harness. Below is what I'd push back on before un-drafting.
|
6ac8a8d to
09ee134
Compare
Thanks, I addressed the actionable points from this review and then rewrote the draft branch into a cleaner two-commit history. Changes made:
A few notes:
The branch now has two commits:
|
b20a3d0 to
d1a6896
Compare
d1a6896 to
b85d86a
Compare
b85d86a to
5c7a6eb
Compare
|
|
After #5203 was merged into develop (plus some chores), this test is now green: |






This PR adds a GitHub Actions update smoke test to catch regressions that only appear when users update an existing Catroid installation.
https://catrobat.atlassian.net/browse/CATROID-1655
What this tests
This workflow simulates the real Play Store update path:
main).updateTestAPK for the PR with the same package name andbaselineVersionCode + 1.Both APKs are built locally and signed with the same debug key. This is intentional for CI; the test does not update over an actually Play-signed APK.
CI Cost And Caching
The baseline APK cache is keyed by the resolved Play Store baseline commit SHA plus Gradle/build-file hash. As long as the deployed baseline branch does not move, later PRs can reuse the baseline APK instead of rebuilding it.
The workflow ignores docs/Markdown-only changes, uses a concurrency group to cancel stale runs, and has a 35-minute timeout.
Fixtures
The test seeds:
Pong Starteras a known-good project.UpdateSmokeBrokenProjectwith malformedcode.xmland a corrupt thumbnail.automationScripts/update-smoke/fixtures/legacy-room-v2-app-database.sql, a Room v2 database fixture withuser_version=2, identity hashc60ebf..., and aproject_responsetable missing the v3privatecolumn.Diagnostics
On failure, the script captures logcat and a UIAutomator window dump. CI uploads these artifacts via
actions/upload-artifact.Verification result:
Fixed branch CATROID-1654 Fix startup crash by hardening project parsing and room upgrade #5203 + smoke test: passed end-to-end.
It launched, accepted first-run dialog, opened Pong Starter, played it, relaunched, tapped UpdateSmokeBrokenProject, and completed.
Ran the smoke test against PR 5202 as an example PR without the release crash fix.
The test failed at launch with the expected Room integrity failure:
IllegalStateException: Pre-packaged database has an invalid schema: project_responseThis confirms the workflow catches the legacy update crash scenario before the fix is merged.
Log shows: Room cannot verify the data integrity...
Expected identity hash: 2d6dd..., found: c60e...Your checklist for this pull request
Please review the contributing guidelines and wiki pages of this repository.