99testsStart a job

Test case library · Mobile platform

Test cases for push notifications on Android and iOS

Push notifications carry order updates, payment confirmations and account alerts, so a missing or misrouted notification quickly turns into a support ticket. These cases cover permission prompts, delivery in every app state, deep links, channels, quiet hours and what happens after logout. Most field failures come from phone makers' battery savers, weak networks and device registrations that outlive the session.

40 test cases11 release-blocking (P1)12 need a real phoneUpdated 2026-10-29

From the reviews. One of the most-agreed malfunction reviews in our India App Quality Report was about a large UPI app sending no alert for incoming payments with the setting switched on.

category page · India App Quality Report

In scope

  • Notification permission on Android 13+ and iOS
  • Delivery in foreground, background and killed states
  • Deep links from a notification to the right screen
  • Channels, grouping and silent data updates
  • Quiet hours, Do Not Disturb and battery savers
  • Behaviour after logout and account switch

Out of scope

  • SMS and email alerts
  • Wording and timing of marketing campaigns
  • Load testing of the notification server

Before you start

  • Test accounts that can trigger order and transaction events on demand
  • A way for the backend to send test pushes, including silent data-only ones
  • Android 12 and 13+ phones including Xiaomi or Redmi, Vivo or Oppo, and Samsung, plus an iPhone
  • SIMs on Jio, Airtel or Vi, and a Wi-Fi network
Show
Add to a test plan

Happy path8

PN-01

Grant notification permission when the app first asks on Android 13 or later

P1functionalreal phone
  1. Install the app fresh on an Android 13 or later phone and open it.
  2. Complete sign-up and note the screen on which the notification prompt appears.
  3. Tap Allow on the system dialog.
  4. Trigger an order or transaction update for the test account.

Expected: The system dialog appears once, at a point where the reason is clear, not over the splash screen. After Allow, the update appears in the notification tray.

Why a real phone: Push delivery depends on the phone's live push connection over a real network

PN-02

Grant notification permission on iPhone and receive an alert on the lock screen

P1functionalreal phone
  1. Install the app fresh on an iPhone and complete sign-up.
  2. Tap Allow on the iOS notification prompt.
  3. Lock the phone and trigger a transaction alert for the test account.

Expected: The alert appears on the lock screen and in Notification Centre with the app name and sound. The app is listed with alerts on in iOS Settings.

Why a real phone: Lock-screen presentation and real push delivery are reliable only on a physical iPhone

PN-03

Receive an update while the app is open in the foreground

P2functional
  1. Keep the app open on its home screen.
  2. Trigger an order status change for the test account.
  3. Watch the screen and the status bar.

Expected: The app shows one in-app banner or one tray notification, as designed, never both. The order status on screen updates without a manual refresh.

PN-04

Tap a notification with the app in the background and land on that exact order

P2functional
  1. Open the app, then press Home to send it to the background.
  2. Trigger an Out for delivery update for one specific test order.
  3. Tap the notification in the tray.
  4. Press Back once.

Expected: The tracking screen for that order opens, not the home screen. Back leads to the order list or home instead of closing the app.

PN-05

Tap a notification that starts the app from cold

P1functional
  1. Trigger a payment received alert and wait for it in the tray.
  2. Without tapping it, swipe the app away from recent apps.
  3. Tap the notification.

Expected: The app starts, completes any login or app lock check, then opens that transaction's detail screen. It does not crash or stop at the home screen.

PN-06

Turn off the offers category in Android notification settings

P2functional
  1. Open Android Settings, then Apps, the app, and Notifications.
  2. Read the names of the notification categories listed.
  3. Turn off the offers or promotions category.
  4. Trigger one offer and one transaction alert.

Expected: Categories have plain names such as Order updates, Account alerts and Offers. The offer does not appear, while the transaction alert does.

PN-07

Several updates for one order arrive within a minute

P3functional
  1. Trigger four status updates for the same test order in quick succession.
  2. Pull down the notification shade.
  3. Expand the app's notifications.

Expected: The updates are grouped under the app or replaced by the latest one, as designed. The collapsed view shows the latest status, not the first.

PN-08

A silent data update refreshes the app without a tray notification

P2functional
  1. Send the app to the background with notifications allowed.
  2. Have the backend send a silent update, such as a new wallet balance or badge count.
  3. Check the tray, then open the app.

Expected: No notification appears in the tray. On opening, the new value is already shown without pulling to refresh.

Validation & negative5

PN-09

Deny the Android notification prompt once and keep using the app

P2negative
  1. Install fresh on Android 13 or later and complete sign-up.
  2. Tap Don't allow on the notification prompt.
  3. Use the app, then close and reopen it twice.

Expected: The app works normally and shows at most a dismissible note about missed alerts. The system prompt does not reappear on every launch.

PN-10

Turn notifications back on after denying them twice on Android

P2negative
  1. Deny the notification prompt, trigger the app's request again, and deny it again.
  2. Open the in-app setting or banner for turning alerts on.
  3. Tap the option to enable notifications.
  4. Enable them on the screen that opens and return to the app.

Expected: Because Android no longer shows the dialog, the app opens its notification page in system Settings. After returning, alerts arrive without a reinstall.

PN-11

Turn notifications on after tapping Don't Allow on iPhone

P2negative
  1. Install fresh on an iPhone and tap Don't Allow on the notification prompt.
  2. Open the notification preferences inside the app.
  3. Tap the option to turn notifications on.

Expected: The app says alerts are off and opens its page in iOS Settings. It does not show a button that does nothing.

PN-12

Opt out of promotions in the app and still receive transaction alerts

P1negative
  1. In the app's notification preferences, turn off offers and marketing.
  2. Have the backend send a promotional campaign to all test accounts.
  3. Make a test transaction on the same account.

Expected: No promotional notification arrives on this phone. The transaction alert still arrives in the tray.

PN-13

Tap a notification for an offer or order that no longer exists

P2negative
  1. Trigger a notification for an offer or an order.
  2. Expire the offer or cancel the order before tapping.
  3. Tap the notification.

Expected: The app opens and shows a clear message such as This offer has ended, with a way forward. There is no blank screen, endless spinner or crash.

Edge cases7

PN-14

Status updates for one order arrive out of order

P2edge
  1. Have the backend send Delivered, then a delayed Out for delivery, for one order.
  2. Look at the tray.
  3. Open the order screen.

Expected: The order screen shows Delivered. The older status does not overwrite the newer one inside the app.

PN-15

Quiet hours hold back offers but let transaction alerts through

P2edge
  1. Turn on the app's quiet hours setting, or note the configured quiet window.
  2. During that window in IST, have the backend send an offer.
  3. In the same window, make a test transaction.

Expected: The offer is held back or delivered silently, as designed. The transaction alert arrives straight away with sound.

PN-16

Quiet hours with the phone set to a time zone outside India

P3edge
  1. Set the phone's time zone to one outside India, as a traveller would.
  2. Send an offer inside the configured quiet window in IST.
  3. Send another inside the quiet window in the phone's local time.

Expected: Quiet hours follow one consistent rule, either IST or local time. Times shown inside notifications match the phone's clock.

PN-17

Reinstall the app and receive one notification per event

P2edge
  1. Uninstall the app, reinstall it and log in to the same account.
  2. Trigger a single order update.
  3. Count the notifications in the tray.

Expected: Exactly one notification arrives for the update. No duplicate appears from the earlier installation.

PN-18

A silenced notification category stays silent after an app update

P3edge
  1. In Android Settings, set the order updates category to silent.
  2. Update the app to a newer build.
  3. Trigger an order update.

Expected: The notification arrives silently, as the user chose. The update does not add a new, louder category that overrides the choice.

PN-19

Alerts missed while notifications were blocked appear in the in-app list

P2edge
  1. Force stop the app from App info, or turn its notifications off.
  2. Make two test transactions on the account.
  3. Open the app and go to its notifications or activity list.

Expected: Both transactions appear in the in-app list with the correct amounts and times, even though no push was shown.

PN-20

Tap a notification while a long form is half filled

P3edge
  1. Start filling a long form in the app, such as a new delivery address.
  2. Pull down the shade and tap a notification from the app.
  3. Press Back to return to the form.

Expected: The typed details are still there, or the app warned before leaving the form. The notification's screen opened without a crash.

Interruptions & network6

PN-21

An alert sent while the phone was offline arrives after reconnecting

P2interruptionreal phone
  1. Turn on airplane mode.
  2. Trigger a transaction alert for the test account.
  3. Wait a few minutes, then turn airplane mode off.

Expected: The alert arrives soon after the network returns, and its text states the transaction time. Expired items, such as an old one-time code, are not shown as new.

Why a real phone: Redelivery after reconnection depends on the phone's push connection on a live network

PN-22

Transaction alert on a weak 2G, 3G or one-bar 4G signal

P1performancereal phone
  1. Move to a spot where the phone shows 2G, 3G or one bar of 4G.
  2. Make a test debit or credit on the account.
  3. Note when the alert arrives compared with the transaction time.

Expected: The alert arrives with the correct amount and masked account number. The delay is noted, and no second copy arrives later.

Why a real phone: Push latency on weak Jio, Airtel or Vi signal cannot be reproduced on an emulator

PN-23

The phone moves from Wi-Fi to mobile data while the app is in the background

P2interruptionreal phone
  1. Connect to Wi-Fi, open the app, then send it to the background.
  2. Walk out of Wi-Fi range so the phone moves to mobile data.
  3. Trigger an order update straight after the switch.

Expected: The notification arrives over mobile data without the app being opened first.

Why a real phone: Network handover from Wi-Fi to the mobile network happens only on real hardware

PN-24

Notifications arrive while Do Not Disturb or a Focus mode is on

P2interruptionreal phone
  1. Turn on Do Not Disturb on Android, or a Focus mode on iPhone.
  2. Trigger an order update and a transaction alert.
  3. Turn Do Not Disturb off and open the notification shade.

Expected: Both notifications are in the shade, delivered silently during Do Not Disturb. The app does not break through Do Not Disturb unless the user allowed it.

Why a real phone: Do Not Disturb and Focus rules differ across Samsung, Xiaomi, other skins and iOS

PN-25

A notification arrives during a phone call

P3interruptionreal phone
  1. Start a real voice call on the test phone.
  2. Trigger a ride or order update during the call.
  3. End the call and tap the notification.

Expected: The notification appears quietly during the call without cutting the call audio. After the call it opens the right screen.

Why a real phone: Needs a real SIM call to see how the dialer and alerts interact

PN-26

A notification with an image arrives on a slow connection

P3performance
  1. Use network throttling, or move to a weak 2G or 3G area.
  2. Trigger a notification that includes an image, such as an offer banner.
  3. Look at the notification in the tray and expand it.

Expected: The title and text appear even if the image is slow or missing. No blank notification or placeholder text such as null appears.

Device & OS7

PN-27

Xiaomi or Redmi phone with Autostart off after the app is swiped away

P1compatibilityreal phone
  1. On a Xiaomi or Redmi phone, check that Autostart is off for the app.
  2. Open the app, then swipe it away from recent apps.
  3. Trigger a transaction alert and wait.
  4. Turn Autostart on and repeat the test.

Expected: With Autostart on, the alert arrives in the tray. With it off, the app's help or settings screen tells the user how to turn Autostart on.

Why a real phone: Autostart switches and swipe-kill rules come from Xiaomi's HyperOS and MIUI, not stock Android

PN-28

Vivo, Oppo or Realme phone left idle overnight with default battery settings

P1compatibilityreal phone
  1. On a Vivo, Oppo or Realme phone, leave the app's battery settings at default.
  2. Lock the phone and leave it idle and unplugged overnight.
  3. In the morning, trigger a transaction alert before unlocking.

Expected: The alert appears on the lock screen. If it does not, the app's help screen names the battery setting to change on this phone.

Why a real phone: These phone makers' battery managers stop background apps in ways emulators do not

PN-29

Samsung phone with the app in deep sleeping apps

P2compatibilityreal phone
  1. On a Samsung phone, add the app to Deep sleeping apps in battery settings.
  2. Trigger an order update and wait.
  3. Remove the app from the list and trigger another update.

Expected: The first update is blocked or delayed, and the second arrives promptly. If alerts are unreliable, the app's help screen mentions this setting.

Why a real phone: Sleeping and deep sleeping app lists are Samsung One UI features

PN-30

Battery saver on and the phone idle for an hour

P2compatibilityreal phone
  1. Turn on battery saver on Android, or Low Power Mode on iPhone.
  2. Lock the phone and leave it untouched for about an hour.
  3. Trigger a transaction alert, then an offer.

Expected: The transaction alert arrives promptly. The offer may arrive later, but neither is lost.

Why a real phone: Idle and battery saver behaviour depends on real battery state and motion sensors

PN-31

Android 12 or lower phone receives alerts without a permission prompt

P2compatibility
  1. Install the app on an Android 11 or 12 phone.
  2. Complete sign-up.
  3. Trigger an order update.

Expected: No notification permission dialog or misleading pre-prompt appears. The update arrives because notifications are on by default.

PN-32

Status bar icon and text in light and dark themes

P3compatibility
  1. Trigger a notification with the phone in light theme.
  2. Switch the phone to dark theme and trigger another.
  3. Look at the status bar icon and the text in the shade.

Expected: The status bar shows the app's silhouette icon, not a plain grey or white square. Text is readable in both themes.

PN-33

Silent update on an iPhone after the user force-quits the app

P2compatibilityreal phone
  1. On an iPhone, swipe the app away in the app switcher.
  2. Have the backend send a silent background update, such as a balance refresh.
  3. Open the app.

Expected: The app shows the fresh value soon after opening, even though the silent update could not be processed while it was force-quit.

Why a real phone: iOS throttles silent pushes based on real usage and battery, unlike the simulator

Security & privacy5

PN-34

No notifications for the account after logout

P1security
  1. Log in to the test account and confirm that alerts arrive.
  2. Log out from the app's menu.
  3. Make a test transaction and send an order update for that account.

Expected: No notification for that account arrives on this phone after logout.

PN-35

Switch accounts on a shared family phone

P1security
  1. Log in as account A, receive a notification and leave it in the tray.
  2. Log out, then log in as account B.
  3. Trigger an alert for account A, then tap A's old notification.

Expected: No new alert for account A arrives. Tapping the old notification does not show any of account A's data while B is logged in.

PN-36

Lock screen hides amounts when set to hide sensitive content

P2security
  1. Set the phone to hide sensitive notification content on the lock screen.
  2. Lock the phone and trigger a transaction alert.
  3. Read the lock screen, then unlock and read the same alert.

Expected: The locked screen shows only that a notification arrived, without the amount. Unlocked, the account number appears masked, for example XX1234.

PN-37

Tapping a notification shows the app lock first

P1security
  1. Turn on the app's PIN or fingerprint lock.
  2. Send the app to the background and wait past its lock timeout.
  3. Trigger a transaction alert and tap it.

Expected: The app lock screen appears first. The transaction screen opens only after the correct PIN or fingerprint.

PN-38

Tap a notification after the session has expired

P1security
  1. Log in, then wait until the session expires or have the backend end it.
  2. Trigger an order update for the account.
  3. Tap the notification.

Expected: The app asks the user to log in, then opens the order from the notification. The order is never visible before login.

Accessibility & language2

PN-39

Screen readers read notifications in full

P3accessibility
  1. Turn on TalkBack on Android or VoiceOver on iPhone.
  2. Trigger a transaction alert that includes an amount.
  3. Move focus to the notification and listen.

Expected: The screen reader reads the app name, title and full body. The amount is read as rupees, not as separate symbols.

PN-40

Notifications arrive in Hindi when the app language is Hindi

P2localization
  1. Set the app language to Hindi while the phone stays in English.
  2. Trigger an order update and a transaction alert.
  3. Read both in the tray, collapsed and expanded.

Expected: Both notifications arrive in Hindi, with vowel signs and conjuncts drawn correctly. Long text expands fully instead of ending mid-word.

In the field

Where push notifications breaks on real phones

  • On Xiaomi, Vivo, Oppo and Realme phones, swiping the app away or leaving Autostart off stops pushes until the app is opened again, so alerts go missing without any error.
  • Asking for notification permission on the first screen of Android 13+ leads many users to tap Don't allow, and the app has no path back to the settings page.
  • Deep links work from the background but fail from a cold start, dropping the user on the home screen or crashing before login or app lock finishes.
  • Device registrations are not removed on logout, so the next person on a shared family phone receives the previous user's transaction alerts.
  • Transaction alerts share a category with offers, so users who silence offers also silence debit and credit alerts.
  • On weak 2G or 3G signal and in metro tunnels, alerts arrive late in a burst and out of order, and the app shows an older status over a newer one.

Run these 40 cases on real phones

They fit the Standard package: 10 × 45-minute sessions on 4 phones or browsers of your choice, up to ~50 cases, ₹18,999 + GST ($249), verified report in 3 business days. The 11 P1 cases alone fit Starter (₹9,999 + GST).

Download the CSV, pick the package at checkout and upload the file with your build. Testers run them on their own phones, on Jio, Airtel and Vi.

Questions

About testing push notifications

Why do push notifications not arrive on Xiaomi, Vivo or Oppo phones when the app is closed?

These phone makers add their own battery and autostart controls on top of Android. When an app is swiped away or not allowed to autostart, the phone can block it from receiving pushes until it is opened again. Test on these phones with default settings, and check that the app tells users which setting to change.

When should an app ask for notification permission on Android 13 and above?

Ask when the user can see the benefit, for example after a first order or when they turn on transaction alerts, not over the splash screen. If the user denies twice, Android stops showing the dialog, so the app needs a clear path to its notification page in system Settings. Test both the first request and the recovery path.

How do I test deep links from push notifications?

Test each notification type with the app open, in the background and fully closed. Tap the notification and check that the exact item opens, that login or app lock comes first when needed, and that Back leads somewhere sensible. Also tap a notification whose item has expired or been deleted.

Related flows

Test these next

Your AI wrote the test cases. Run them on real phones.

99tests runs your cases, AI-generated ones included, on the phones, laptops and browsers your users own. Every finding is verified, serious bugs come with a screen recording, and each case comes back pass, fail, blocked or not run.