# Mobile release checks

## First run and permissions (ONB)

| ID | Journey | Preconditions | Steps | Expected result | AND | IOS |
|---|---|---|---|---|---|---|
| ONB-01 | First launch after install | A fresh install, never signed in | 1. Open the app. | It opens without a crash, on the intro or sign-in screen. Nothing flashes and disappears. | | |
| ONB-02 | Permission asked in context | Fresh install | 1. Reach the screen that needs location. | The prompt appears only when the feature needs it, with a line saying why. | | |
| ONB-03 | Permission denied is survivable | Fresh install | 1. Deny location. 2. Use the app. | The app keeps working with a manual alternative. No loop of prompts, no crash. | | |
| ONB-04 | Permission granted later | Permission denied earlier | 1. Grant location in system settings. 2. Return to the app. | The app notices without a restart, or says clearly to restart. | | |
| ONB-05 | Notifications denied | Fresh install | 1. Deny notifications. 2. Do something that would notify. | The app continues, and never asks again on every screen. | | |

## Interruptions and state (INT)

| ID | Journey | Preconditions | Steps | Expected result | AND | IOS |
|---|---|---|---|---|---|---|
| INT-01 | Phone call mid-task | Half-filled form | 1. Receive a call. 2. End it and return. | The form still holds what was typed. | | |
| INT-02 | App backgrounded for 30 minutes | Signed in, mid-task | 1. Switch apps for 30 min. 2. Return. | The app restores where it was, or signs out deliberately with a message. It does not show a blank screen. | | |
| INT-03 | Rotation | Any form screen | 1. Rotate the device. | Nothing is lost and nothing is cut off. | | |
| INT-04 | Low battery mode | Battery saver on | 1. Use the main journey. | Animations may drop, but the journey completes. | | |
| INT-05 | Killed and reopened | Signed in | 1. Swipe the app away. 2. Reopen it. | Still signed in, and the last screen or the home screen opens. | | |

## Network (NET)

| ID | Journey | Preconditions | Steps | Expected result | AND | IOS |
|---|---|---|---|---|---|---|
| NET-01 | No connection | Aeroplane mode | 1. Open the main screen. | A clear "no connection" state with a retry, not an endless spinner. | | |
| NET-02 | Slow connection | Throttled network | 1. Submit the main action. | A progress state appears within a second, and the action is not sent twice. | | |
| NET-03 | Connection drops mid-submit | Network on, then off | 1. Submit. 2. Turn the network off mid-flight. | The app says the action may not have completed, and retrying does not create a duplicate. | | |
| NET-04 | Back online | Was offline | 1. Restore the network. | Queued work completes or is clearly discarded. Nothing is silently lost. | | |

## Devices and display (DEV)

| ID | Journey | Preconditions | Steps | Expected result | AND | IOS |
|---|---|---|---|---|---|---|
| DEV-01 | Small screen | A small phone (or the smallest simulator) | 1. Walk the main journey. | No text cut off, no button off-screen, nothing under the notch or home bar. | | |
| DEV-02 | Largest text size | System font size at maximum | 1. Open the main screens. | Text reflows and stays readable. Buttons still show their labels. | | |
| DEV-03 | Dark mode | System set to dark | 1. Open every main screen. | Every screen follows, with readable contrast. No white flash on launch. | | |
| DEV-04 | Keyboard covers the field | Any form near the bottom | 1. Tap the last field. | The field scrolls above the keyboard, and the submit button is reachable. | | |

## Updates and store (REL)

| ID | Journey | Preconditions | Steps | Expected result | AND | IOS |
|---|---|---|---|---|---|---|
| REL-01 | Upgrade over the old version | Previous version installed and signed in | 1. Install the new build over it. | Still signed in, local data intact, no forced re-onboarding. | | |
| REL-02 | Deep link from outside | App installed | 1. Open a share link from a message. | The right screen opens, signed in or with a sign-in that returns there afterwards. | | |
| REL-03 | Store listing matches the build | The build under test | 1. Compare screenshots and description. | Screens shown in the store exist in this build. | | |
