|
| 1 | +# Catroid Update Smoke Test |
| 2 | + |
| 3 | +This smoke test exercises the update path users take from the currently deployed |
| 4 | +Play Store branch to the APK under test. |
| 5 | + |
| 6 | +The workflow builds a release-style baseline APK from `main`, and a |
| 7 | +release-style `updateTest` APK for the PR with the same package |
| 8 | +name and a higher version code. Both APKs are built locally and signed with the |
| 9 | +same debug key so Android accepts the in-place update. The `updateTest` build |
| 10 | +type is not suitable for updating over an APK actually downloaded from Google |
| 11 | +Play, because Play-signed and debug-signed APKs cannot update each other. |
| 12 | + |
| 13 | +## Local Run |
| 14 | + |
| 15 | +Build or provide two APKs with the same package name, where the second APK has a |
| 16 | +higher version code: |
| 17 | + |
| 18 | +```sh |
| 19 | +ADB=/path/to/adb \ |
| 20 | +automationScripts/update-smoke/run-update-smoke.sh \ |
| 21 | + /path/to/baseline.apk \ |
| 22 | + /path/to/pr.apk \ |
| 23 | + org.catrobat.catroid |
| 24 | +``` |
| 25 | + |
| 26 | +The emulator must allow `adb root`, because the test seeds private app storage |
| 27 | +under `/data/data/org.catrobat.catroid` before launching the updated APK. |
| 28 | + |
| 29 | +## Seeded Fixtures |
| 30 | + |
| 31 | +The script seeds: |
| 32 | + |
| 33 | +- `Pong Starter` as a known-good project. |
| 34 | +- `UpdateSmokeBrokenProject` with malformed `code.xml` and a corrupt thumbnail. |
| 35 | +- `fixtures/legacy-room-v2-app-database.sql`, a Room schema version 2 database |
| 36 | + fixture whose `project_response` table intentionally lacks the version 3 |
| 37 | + `private` column. |
| 38 | + |
| 39 | +## Environment Variables |
| 40 | + |
| 41 | +- `ADB`: path to `adb`; defaults to `adb`. |
| 42 | +- `UPDATE_SMOKE_ARTIFACT_DIR`: directory for logcat/UI artifacts. |
| 43 | +- `UPDATE_SMOKE_GOOD_PROJECT_ARCHIVE`: override the good `.catrobat` fixture. |
| 44 | +- `UPDATE_SMOKE_GOOD_PROJECT_NAME`: expected display name for the good project. |
| 45 | +- `UPDATE_SMOKE_BROKEN_PROJECT_NAME`: expected display name for the broken project. |
| 46 | +- `UPDATE_SMOKE_LEGACY_DB_SQL`: override the legacy Room SQL fixture. |
| 47 | +- `UPDATE_SMOKE_SEED_LEGACY_DB`: set to `false` to skip DB seeding. |
| 48 | +- `UPDATE_SMOKE_STRICT_UI`: defaults to `true`; set to `false` for local |
| 49 | + debugging when UI matching should not fail the run. |
0 commit comments