99testsStart a job

Test case library · Login & identity

Test cases for an email and password login page

These cases cover the email or username and password login screen of a mobile app, from typing credentials to staying signed in after the app is killed or the phone restarts. Login often breaks outside the test lab: keyboards change what users type, password managers fill the wrong field, and battery savers on budget phones end sessions overnight.

39 test cases10 release-blocking (P1)11 need a real phoneUpdated 2026-10-29

From the reviews. Login and OTP failures were 16.4% of the malfunction reviews in our India App Quality Report, and 7.1% of all reviews on banking app storefronts, the highest of any category.

category page · India App Quality Report

In scope

  • Email or username and password sign-in
  • Show/hide password and Remember me
  • Lockout after repeated failed attempts
  • Sign in with Google and Apple
  • Session after app kill, reboot and forced logout
  • Keyboards, autofill and password managers

Out of scope

  • Password reset (see forgot password)
  • OTP and biometric sign-in
  • Account sign-up

Before you start

  • Test accounts that are active, unverified, deactivated and Google-only
  • Android phones from at least two makers, including Xiaomi, Realme or Vivo, plus an iPhone
  • A second phone signed in to the same account
  • A Jio, Airtel or Vi SIM with data, and a Wi-Fi network
  • A password manager with the app's login saved
Show
Add to a test plan

Happy path7

LGN-01

Sign in with a registered email and the correct password

P1functional
  1. Open the app and tap Sign in
  2. Enter a registered email and its correct password
  3. Tap Sign in

Expected: The home screen opens showing the account's name or avatar. No error, extra prompt or second login screen appears.

LGN-02

Sign in with a username instead of an email

P2functional
  1. Enter the account's username in the email or username field
  2. Enter the correct password and tap Sign in

Expected: The same account opens as when signing in with the email. No email-format error appears for the username.

LGN-03

Show and hide the password without losing what was typed

P2functional
  1. Type a password with capitals, digits and a symbol
  2. Tap the eye icon to show it, then tap it again to hide it
  3. Tap Sign in

Expected: The password switches between plain text and dots with the text and cursor unchanged. Sign-in succeeds with the typed password.

LGN-04

Remember me keeps the user signed in after the app is swiped away

P1functional
  1. Tick Remember me and sign in
  2. Swipe the app away from the recent apps screen
  3. Reopen the app after a few minutes

Expected: The home screen opens directly for the same account. The login screen does not flash before it.

LGN-05

Without Remember me, the app asks for sign-in after it is closed

P2functional
  1. Sign in with Remember me unticked
  2. Swipe the app away from the recent apps screen
  3. Reopen the app

Expected: The login screen appears and no account data is visible before signing in. The email is prefilled only if the product is designed to remember it.

LGN-06

Sign in with Google using an account already on the phone

P1functional
  1. Tap Sign in with Google
  2. Pick an account from the account chooser
  3. Approve the consent screen if it appears

Expected: The app opens the account linked to that Google email. The chooser closes and no browser tab is left open.

LGN-07

Sign in with Apple on an iPhone, choosing to hide the email

P1functional
  1. On an iPhone, tap Sign in with Apple
  2. Choose Hide My Email and confirm with Face ID or the passcode
  3. Sign out, then sign in with Apple again

Expected: The first sign-in creates an account and the second opens the same one. The profile shows the relay email or a placeholder, not an error.

Validation & negative6

LGN-08

Wrong password shows a general error and keeps the email

P2negative
  1. Enter a registered email and a wrong password
  2. Tap Sign in

Expected: A message such as 'Incorrect email or password' appears without saying which one is wrong. The email stays filled in.

LGN-09

Empty fields and a malformed email are caught before submitting

P3negative
  1. Tap Sign in with both fields empty
  2. Enter an email without the @ sign and any password
  3. Tap Sign in

Expected: Inline messages appear under the empty or invalid field and no loading spinner starts. The typed values stay in place.

LGN-10

Account locks after the configured number of failed attempts

P1security
  1. Enter the correct email with a wrong password until the configured limit is reached
  2. Enter the correct password
  3. Read the message shown

Expected: The correct password does not sign in while the account is locked. The message says how to unlock the account or when to try again.

LGN-11

Lockout holds on a second phone and after reinstalling

P1security
  1. Lock the account on phone A with repeated wrong passwords
  2. On phone B, sign in with the correct password
  3. Reinstall the app on phone A and try again

Expected: Both phones show the locked-account message until the lock ends. Reinstalling or clearing app data does not remove the lock.

LGN-12

Account created with Google sign-in is used on the password form

P2negative
  1. Pick an account created only through Sign in with Google
  2. Enter its email and any password on the login form
  3. Tap Sign in

Expected: A message says the account uses Google sign-in and points to that button or a way to set a password. No generic server error appears.

LGN-13

Unverified or deactivated account gets a specific next step

P2negative
  1. Sign in with an account whose email is not verified
  2. Sign in with a deactivated test account

Expected: Each shows its own message, such as an option to resend verification or a support contact. Neither reaches the home screen.

Edge cases6

LGN-14

Keyboard capitalises the email or adds a trailing space

P2edge
  1. Type the email so the keyboard capitalises the first letter
  2. Pick the email from a keyboard suggestion that adds a space after it
  3. Enter the correct password and tap Sign in

Expected: Sign-in succeeds for the existing account. No 'user not found' error or duplicate account appears.

LGN-15

Failed-attempt counter resets after a successful sign-in

P2edge
  1. Enter a wrong password a few times, staying below the limit
  2. Sign in with the correct password, then sign out
  3. Enter one wrong password

Expected: Only the new failure counts and the account is not locked. Any attempts-left message starts again from the full count.

LGN-16

Google sign-in for an email that already has a password account

P1edge
  1. Register with an email and password and save some data, such as an address
  2. Sign out and tap Sign in with Google using the same email
  3. Open the profile and saved data

Expected: The app opens the existing account, or asks for the password before linking. The saved data is visible, not an empty new profile.

LGN-17

Apple relay email, then a login with the real email

P2edge
  1. Create an account with Sign in with Apple and Hide My Email
  2. Sign out and try the email form with the Apple ID's real email
  3. Note which account, if any, opens

Expected: The app opens the same account or clearly says no password account exists for that email. Two accounts with split data are not created silently.

LGN-18

Typed credentials survive rotation and a dark mode switch

P3edge
  1. Type the email and password and tap the eye icon
  2. Rotate the phone to landscape and back
  3. Turn on dark mode from quick settings and return to the app

Expected: The email, password and show/hide state are unchanged after each change. Sign-in works without retyping.

LGN-19

Session expires while the app sits in the background

P2edge
  1. Sign in and leave the app in the background past the configured session lifetime
  2. Reopen the app and tap something that needs the account

Expected: The app refreshes the session or asks the user to sign in again. It does not show a blank screen, a crash or data that fails to load.

Interruptions & network5

LGN-20

Incoming call while the sign-in request is in progress

P2interruptionreal phone
  1. Enter valid credentials and tap Sign in
  2. Answer an incoming call before the home screen loads
  3. End the call and return to the app

Expected: The app shows the home screen, or the login screen with a retry option. It is not stuck on a spinner.

Why a real phone: Real carrier calls take over the screen differently across OEM dialers.

LGN-21

Signal lost in a lift just after tapping Sign in

P2interruptionreal phone
  1. Enter valid credentials
  2. Step into a lift or basement and tap Sign in
  3. Step out once the signal returns and retry

Expected: A clear no-connection or timeout message appears with the email still filled. The retry signs in once, without an 'already signed in' error.

Why a real phone: Depends on real signal loss and recovery on Jio, Airtel or Vi.

LGN-22

Wi-Fi drops to mobile data mid-request

P3interruptionreal phone
  1. Connect to Wi-Fi and tap Sign in
  2. Turn Wi-Fi off at once so the phone moves to mobile data

Expected: The request completes, or fails with a retry message after a short wait. The retry does not create a second session or show an error.

Why a real phone: The handover from Wi-Fi to carrier data only happens on a phone with a SIM.

LGN-23

Social sign-in sheet interrupted by pressing Home

P2interruption
  1. Tap Sign in with Google or Apple
  2. Press Home while the account sheet is open
  3. Return to the app from the recent apps screen

Expected: The sheet is still open, or the login screen is back with the buttons active. No endless loading state appears.

LGN-24

App killed for memory while a browser sign-in tab is open

P2interruptionreal phone
  1. On a 3–4 GB RAM phone, open several heavy apps
  2. Start a social sign-in that opens a browser tab, such as Apple on Android
  3. Finish sign-in in the browser and return to the app

Expected: The app restarts signed in, or returns to the login screen with a retry message. It never shows an empty white screen.

Why a real phone: Process death under real memory pressure happens on budget phones, not emulators.

Device & OS6

LGN-25

Signed-in session survives a phone reboot

P1compatibilityreal phone
  1. Sign in with Remember me ticked
  2. Restart the phone and unlock it
  3. Open the app

Expected: The app opens signed in to the same account without asking for the password. It does not crash or show a blank screen on launch.

Why a real phone: Stored tokens rely on the phone's hardware keystore, which differs across OEM firmware.

LGN-26

Strict OEM battery saver kills the app overnight

P2compatibilityreal phone
  1. On a Xiaomi, Realme or Vivo phone, keep the default or strictest battery saver
  2. Sign in with Remember me ticked, then lock the phone overnight
  3. Open the app the next morning

Expected: The app opens signed in or refreshes the session without asking. The user is not sent back to the login screen.

Why a real phone: OEM battery savers stop and clear apps only on real phones with those skins.

LGN-27

Cloned app from the dual apps feature keeps two accounts apart

P2compatibilityreal phone
  1. Clone the app with the phone's dual apps feature
  2. Sign in to account A in the original and account B in the clone
  3. Switch between them, then sign out of one

Expected: Each copy shows only its own account. Signing out of one does not sign out or change the other.

Why a real phone: App cloning is an OEM feature on Xiaomi, Vivo, Oppo and Samsung phones.

LGN-28

Password manager fills the right fields and offers to save

P2compatibility
  1. Sign in manually and accept the prompt to save the password
  2. Sign out and tap the email field
  3. Pick the saved login from the autofill suggestion

Expected: The email goes into the email field and the password into the password field. The save prompt appeared once, with the correct username.

LGN-29

Autofill from a phone maker's built-in password manager

P3compatibilityreal phone
  1. On a Samsung phone, save the app's login in the built-in password manager
  2. Open the login screen and choose the saved login
  3. Confirm with fingerprint if asked

Expected: Both fields fill and sign-in succeeds. The keyboard and Sign in button stay usable after the autofill sheet closes.

Why a real phone: OEM password managers and their autofill sheets exist only on that maker's phones.

LGN-30

OEM keyboard does not autocorrect the email or learn the password

P2securityreal phone
  1. Use the default keyboard on a Vivo or Oppo phone
  2. Type the email and the password
  3. Open a notes app and type the first letters of the password

Expected: The email is not autocorrected and the password field shows no word suggestions. The password never appears as a keyboard suggestion elsewhere.

Why a real phone: Phone makers' default keyboards treat password fields differently from stock keyboards.

Security & privacy5

LGN-31

Unknown email gets the same message as a wrong password

P2security
  1. Sign in with an email that has no account
  2. Sign in with a registered email and a wrong password
  3. Compare the messages and how long each takes

Expected: Both show the same text and take about the same time. Nothing reveals whether the email is registered.

LGN-32

Forced logout when the session is ended from another phone

P1security
  1. Sign in to the same account on phone A and phone B
  2. On phone B, sign out of all devices or change the password
  3. On phone A, open any account screen

Expected: Phone A shows a signed-out message and returns to the login screen. Its cached personal data is no longer visible.

LGN-33

Ended session on a phone that was offline at the time

P2security
  1. Put phone A in airplane mode
  2. From phone B, sign out of all devices
  3. Turn airplane mode off on phone A and open the app

Expected: Phone A shows the signed-out message on its first contact with the server. It does not keep working as if signed in.

LGN-34

Sign-out clears the session and cached personal data

P1security
  1. Sign in and open screens with personal data
  2. Tap Sign out
  3. Press Back, then reopen the app from the recent apps screen

Expected: The login screen appears and Back does not reveal earlier account screens. No cached personal data shows after reopening.

LGN-35

Shown password stays out of the recents thumbnail and cannot be copied

P3security
  1. Type the password and tap the eye icon to show it
  2. Press Home and look at the app's recent apps thumbnail
  3. Return, hide the password and long-press the field

Expected: The thumbnail does not show the password in plain text. The masked field offers no Copy or Cut option.

Accessibility & language4

LGN-36

Screen readers announce fields, the eye icon and errors

P2accessibilityreal phone
  1. Turn on TalkBack on Android, then VoiceOver on a real iPhone
  2. Swipe through the login screen and double-tap the eye icon
  3. Submit a wrong password and listen

Expected: Each field is read by its label, the eye icon says whether it shows or hides the password, and the error is read out. No control is announced only as 'button'.

Why a real phone: VoiceOver does not run in the iOS Simulator, so a real iPhone is needed.

LGN-37

Largest font and display size on a small phone

P2accessibility
  1. Set font size and display size to the largest in phone Settings
  2. Open the login screen and tap the password field
  3. Trigger a wrong-password error

Expected: Labels and errors wrap without being cut off, and Sign in can be reached with the keyboard open. No text overlaps the fields.

LGN-38

Hindi interface for labels, errors and the lockout message

P3localization
  1. Set the app or phone language to Hindi
  2. Trigger a wrong-password error, then the lockout message

Expected: All labels and messages show in Hindi without truncation or raw text keys. The fields still accept English letters for email and password.

LGN-39

Indic keyboard set as default when typing the password

P2localizationreal phone
  1. Set a Hindi or Tamil keyboard as the default keyboard
  2. Tap the password field and type the password
  3. Tap the eye icon to check what was typed

Expected: The keyboard switches to an English layout or makes switching easy. Any non-English characters typed by mistake are visible when the password is shown.

Why a real phone: Indic and OEM keyboards choose layouts for password fields in their own way.

In the field

Where login page breaks on real phones

  • Default battery savers on Xiaomi, Realme and Vivo phones kill the app overnight, and sessions that are not stored properly send users back to the login screen every morning.
  • Keyboards capitalise the first letter of the email or add a space after a suggestion, and a strict comparison rejects a correct login.
  • Autofill puts the email into the password field when fields are not labelled for it, or offers a login saved for a different site.
  • On 3–4 GB RAM phones the app is killed while a browser tab for social sign-in is open, and the sign-in result is lost on return.
  • Lockout counts kept only on the phone reset after a reinstall or on a second phone, so the lock gives no real protection.
  • Tokens that cannot be decrypted after a reboot or OS update on some OEM firmware crash the app on launch instead of asking for the password.

Run these 39 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 10 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 login page

How many failed login attempts should lock an account?

There is no single right number, as it depends on the product's risk and support load. Test against the configured limit and check that the server enforces it, so a second phone or a reinstall cannot bypass it. Also check that the lockout message tells the user how to recover.

Should a login error say whether the email or the password is wrong?

Usually not. A message like 'Incorrect email or password' avoids telling an attacker which emails have accounts. Check that unknown emails and wrong passwords get the same text and a similar response time.

Why do users get logged out after restarting their phone?

Common causes are sessions kept only in memory, stored tokens that fail to decrypt after a reboot, and battery savers that clear the app's background work. Test on at least one Xiaomi, Realme or Vivo phone with default battery settings and reboot it with the app signed in. Note whether the app crashes, refreshes the session silently or asks for the password.

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.