|
| 1 | +# Android Release Smoke Test |
| 2 | + |
| 3 | +Use this runbook for the release-device smoke test tracked by #456. It must be |
| 4 | +run against a signed release build installed through Google Play Internal |
| 5 | +Testing or another release-equivalent install path after #452 has produced the |
| 6 | +installable artifact. |
| 7 | + |
| 8 | +Do not close #456 from documentation alone. Close it only after a human tester |
| 9 | +records a completed pass with device, build, endpoint, and result evidence. |
| 10 | + |
| 11 | +## Entry Criteria |
| 12 | + |
| 13 | +- #452 is complete and the signed Android release build is available. |
| 14 | +- The tested build uses package `club.devkor.ontime`. |
| 15 | +- The build was installed from Play Internal Testing, a Play-generated APK set, |
| 16 | + or an equivalent signed release install path agreed by the release owner. |
| 17 | +- The tester has a real Android device, a test account, and access to the |
| 18 | + release API/backend signal needed to confirm endpoint and token behavior. |
| 19 | +- The release owner has confirmed which API base URL is approved for the smoke |
| 20 | + test, such as the staging URL for internal testing or the production URL for a |
| 21 | + tagged production candidate. |
| 22 | + |
| 23 | +## Build And Device Evidence |
| 24 | + |
| 25 | +Record this before testing: |
| 26 | + |
| 27 | +```md |
| 28 | +Issue: #456 |
| 29 | +Parent track: #467 |
| 30 | +Tester: |
| 31 | +Date: |
| 32 | +Install source: Play Internal Testing / signed release APK / other: |
| 33 | +Artifact or Play release link: |
| 34 | +Package name: |
| 35 | +Version name: |
| 36 | +Version code: |
| 37 | +Git commit or workflow run: |
| 38 | +ENV dart define: |
| 39 | +REST_API_URL value or approved endpoint name: |
| 40 | +Firebase project: |
| 41 | +Device model: |
| 42 | +Android version: |
| 43 | +Network: |
| 44 | +Fresh install: yes / no |
| 45 | +Existing app data cleared before test: yes / no |
| 46 | +``` |
| 47 | + |
| 48 | +## Required Smoke Pass |
| 49 | + |
| 50 | +Mark each result `pass`, `fail`, or `blocked`. Attach screenshots, screen |
| 51 | +recordings, logs, backend request IDs, or Play/Firebase evidence for failures |
| 52 | +and for any endpoint verification that cannot be inferred from the app UI. |
| 53 | + |
| 54 | +| Area | Steps | Expected result | Result | Evidence | |
| 55 | +| --- | --- | --- | --- | --- | |
| 56 | +| Install | Install the signed release build from the approved release-equivalent path. | App installs without sideload, signing, package, or Play Protect errors. | | | |
| 57 | +| First launch | Launch the app from a fresh install. | App opens without a crash, blank screen, Firebase init error, or missing config error. | | | |
| 58 | +| Login | Sign in with the test account using the release build. | Login succeeds and lands on the expected authenticated screen. | | | |
| 59 | +| Endpoint | Confirm the build is using the approved release API endpoint. | Backend logs, request IDs, or app configuration evidence match the approved endpoint. | | | |
| 60 | +| FCM token | Confirm fresh install token registration reaches the backend if backend access is available. | Backend receives token registration for the tested account/device. | | | |
| 61 | +| Schedule create | Create a schedule with a place, moving time, preparation, and future start time. | The schedule is saved and visible in the app. | | | |
| 62 | +| Schedule edit | Edit the created schedule. | Updated values persist after returning to the schedule list/detail. | | | |
| 63 | +| Schedule delete | Delete the created schedule. | The schedule is removed and does not reappear after refresh or app restart. | | | |
| 64 | +| My Page | Open My Page and review visible account/settings content. | Screen loads without release-only errors and expected content is present. | | | |
| 65 | +| Privacy policy | Open the privacy policy link from the app. | The link opens the approved privacy policy URL without a broken or placeholder page. | | | |
| 66 | +| Logout | Log out, then relaunch the app. | Session is cleared and the app returns to the signed-out flow. | | | |
| 67 | +| Relaunch | Force close and reopen after the smoke flow. | App starts cleanly and remains in the expected auth state. | | | |
| 68 | + |
| 69 | +## Failure Notes |
| 70 | + |
| 71 | +For every failed or blocked row, record: |
| 72 | + |
| 73 | +```md |
| 74 | +Area: |
| 75 | +Observed behavior: |
| 76 | +Expected behavior: |
| 77 | +Reproduction steps: |
| 78 | +Device and Android version: |
| 79 | +Version name and version code: |
| 80 | +Timestamp with timezone: |
| 81 | +Screenshots or recording: |
| 82 | +Relevant logs: |
| 83 | +Backend request ID or dashboard link: |
| 84 | +Decision: retest after fix / accept risk / block release |
| 85 | +Owner: |
| 86 | +``` |
| 87 | + |
| 88 | +## Completion Note Template |
| 89 | + |
| 90 | +Post a completion note on #456 with this structure: |
| 91 | + |
| 92 | +```md |
| 93 | +Android release smoke test result: pass / failed / blocked |
| 94 | + |
| 95 | +Build: |
| 96 | +- Version name: |
| 97 | +- Version code: |
| 98 | +- Commit or workflow run: |
| 99 | +- Install source: |
| 100 | +- Artifact or Play release link: |
| 101 | +- ENV: |
| 102 | +- REST_API_URL value or approved endpoint name: |
| 103 | + |
| 104 | +Device: |
| 105 | +- Model: |
| 106 | +- Android version: |
| 107 | +- Network: |
| 108 | + |
| 109 | +Results: |
| 110 | +- Install: |
| 111 | +- First launch: |
| 112 | +- Login: |
| 113 | +- Endpoint verification: |
| 114 | +- FCM token registration: |
| 115 | +- Schedule create/edit/delete: |
| 116 | +- My Page: |
| 117 | +- Privacy policy link: |
| 118 | +- Logout: |
| 119 | +- Relaunch: |
| 120 | + |
| 121 | +Issues found: |
| 122 | +- None, or link issue numbers with reproduction notes. |
| 123 | + |
| 124 | +Evidence: |
| 125 | +- Screenshots/recordings/log links: |
| 126 | +- Backend/Play/Firebase evidence: |
| 127 | +``` |
0 commit comments