How to Test Signup Flow (Mobile and Web)
Signup is the first engineering touchpoint with a new user. Failure here costs the user forever. Bugs in signup — validation errors, slow responses, confusing requirements, bad error handling — direct
Signup is the first engineering touchpoint with a new user. Failure here costs the user forever. Bugs in signup — validation errors, slow responses, confusing requirements, bad error handling — directly translate to lost conversion. This guide covers the test matrix.
What to test
Form
- Email field accepts valid emails
- Email validation inline (blur or short delay)
- Password with visibility toggle
- Password complexity rules clear upfront
- Confirm password (or single with toggle)
- Name / profile fields
- Required fields marked
- Terms / privacy policy checkbox
- Submit disabled until required fields valid (optional but user-friendly)
Validation
- Duplicate email detected (already-registered)
- Weak password rejected with clear reason
- Invalid email format flagged
- Name field handles unicode, special chars
- Age verification (if required)
Submission
- Network submission works
- Success creates account
- Failure preserves field values
- Loading state during submit
- Duplicate-submit prevented
Post-signup
- Account created — can log in immediately
- Verification email sent (if applicable)
- Welcome screen / onboarding starts
- Default profile state makes sense
- Data stored correctly
Email verification
- Link in email opens app or web
- Deep link from email works across email clients
- Verification works
- Re-send option available
- Link expiration handled
Social signup
- OAuth providers (Google, Apple, Facebook) work
- Returning user matches existing account
- Profile data imported (name, avatar, email)
- Edge case: email already registered with different provider
Password reset
- Reset link in email works
- New password rules enforced
- Old sessions invalidated (if security-critical)
- Re-login after reset
Edge cases
- Cold start mid-signup, return — draft preserved or restart
- Device rotation — form state preserved
- Network drop mid-submit — retry not duplicate
- Very long name / bio — accepted or limit stated
- Email with non-ASCII (IDN, unicode domains)
- Concurrent signup from two devices with same email — one succeeds
Security
- Password never logged
- Password not in URL / query parameters
- Email verification link unique, unpredictable, expires
- Rate limiting on signup endpoint (prevent abuse)
- Captcha / bot protection (where appropriate)
Accessibility
- All fields labeled
- Error messages announced to screen reader
- Keyboard navigable through entire flow
- Touch targets ≥ 48dp on mobile
- Password visibility toggle keyboard-accessible
Privacy
- Terms and privacy policies linked, readable
- Age gate where required (COPPA, etc.)
- Data collection disclosed
- Marketing opt-in / opt-out clear
Testing approach
Manual
- Fresh install
- Valid signup: full happy path
- Invalid inputs per field
- Duplicate email
- Interrupted flows (app background, network drop)
- Verification email + deep link
- Social providers (one each at minimum)
- Accessibility pass with screen reader
Automated (Appium / Playwright)
def test_signup_happy(driver):
driver.find_element(By.ID, "email").send_keys("new-" + uuid4() + "@example.com")
driver.find_element(By.ID, "password").send_keys("StrongP@ss123")
driver.find_element(By.ID, "name").send_keys("Test User")
driver.find_element(By.ID, "terms").click()
driver.find_element(By.ID, "submit").click()
# Assert next screen loaded
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "welcome")))
Include: negative paths, duplicate email test, verification flow, password reset.
How SUSA handles signup
Signup flow auto-detected (registration keyword + 3+ inputs). Driven with test email (UUID to ensure uniqueness). Verdict: success / failure / stuck-on-validation / stuck-on-verification.
The adversarial persona tries invalid emails, weak passwords, boundary-length inputs, injection patterns. elderly checks readability and touch targets. accessibility_user drives with screen reader semantics.
susatest-agent test myapp.apk --persona adversarial --steps 100
Common production bugs
- Signup succeeds but user cannot login immediately — account creation delayed in backend
- Email verification link expired too quickly (5 minutes, should be hours)
- Password rules stricter than client validation — server rejects passwords client accepted
- Duplicate email check case-sensitive — USER@example.com and user@example.com both allowed
- Social signup collides with existing email-password account
Signup is a tight moment. Reduce friction, prevent errors, smooth the recovery. Run SUSA per release on this flow specifically.
Test Your App Autonomously
Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.
Try SUSA Free