View all services
Talk to QA Advisor
Browse the Knowledge Hub56 resources
/Test Cases/Multi step form wizard test cases

Test cases

Wizard test cases, for the answers that do not survive

Twenty eight cases covering values lost on back navigation, on a validation error, on a refresh and on session expiry, step skipping and server side revalidation, duplicate submission and timeouts, conditional branches, attachment survival, autofill and soft keyboard behaviour.

28cases/8coverage types/10state cases/FreeCSV download

All 28 test cases, ready to copy

Free to use and adapt, no sign-up. Download as CSV or Markdown, or copy it straight into your own tooling.

Last updated

28 worked examples

WIZ-01

Complete every step and submit successfully

TypeFunctionalPriorityHigh
Test data
Valid values in every field across all steps
Expected result
Submission succeeds once, a reference is shown, and every value entered appears in the stored record exactly as typed.
WIZ-02

Preserve entered values when moving backwards

TypeStatePriorityHigh
Test data
Complete steps one to three, return to step one, then go forward again
Expected result
Every value is still present including selects, checkboxes, radio groups and file attachments. Losing data on back navigation is the top cause of abandonment.
WIZ-03

Preserve values when a step fails validation

TypeStatePriorityHigh
Test data
Fill a step completely except one required field, then submit the step
Expected result
All other values remain, only the failing field is flagged, and nothing already entered has to be typed again.
WIZ-04

Survive a page refresh mid wizard

TypeStatePriorityHigh
Test data
Reach step four, then refresh the browser
Expected result
Progress and values are restored, or the user is warned before losing them. Silently returning to step one discards several minutes of work.
WIZ-05

Resume a saved draft on another device

TypeStatePriorityMedium
Test data
Save a draft at step three, then open the wizard on a different device
Expected result
Draft is restored with every value and attachment, and no submission reference is issued until the wizard is actually completed.
WIZ-06

Warn before navigating away with unsaved input

TypeStatePriorityMedium
Test data
Enter values, then close the tab and use the browser back button
Expected result
A warning is shown in both cases where the platform allows it, and the warning does not fire when nothing has been entered.
WIZ-07

Validate each step at the right moment

TypeFunctionalPriorityHigh
Test data
Leave a required field empty and attempt to advance, then correct it
Expected result
Advance is blocked with the reason named, the error clears as soon as the field becomes valid, and validation does not fire on a field the user has not yet reached.
WIZ-08

Prevent skipping ahead to a later step

TypeSecurityPriorityHigh
Test data
Request a later step directly by URL or by altering the step parameter
Expected result
Refused or redirected to the earliest incomplete step, and completeness is checked on the server rather than by the interface hiding the navigation.
WIZ-09

Revalidate every step on final submission

TypeSecurityPriorityHigh
Test data
Complete the wizard, then alter an earlier value in the request before final submit
Expected result
Server validates the complete payload rather than trusting that each step was checked on the way through, and an invalid value is refused.
WIZ-10

Submit exactly once when the button is pressed repeatedly

TypeFunctionalPriorityHigh
Test data
Press submit five times in two seconds on a throttled connection
Expected result
One record is created. The control disables on first submit and the server refuses the duplicate on an idempotency key rather than relying on the disabled state.
WIZ-11

Prevent a duplicate submission on a replayed request

TypeSecurityPriorityHigh
Test data
Replay the final submission request with the identical payload
Expected result
The original result is returned and no second record is created, which also covers the back button then resubmit path.
WIZ-12

Handle a submission that times out with no response

TypeStatePriorityHigh
Test data
Kill the connection after final submit but before the response arrives
Expected result
Outcome resolves to one definite state and the user is told which. Presenting an unknown outcome as a failure causes a duplicate submission.
WIZ-13

Show conditional steps based on earlier answers

TypeFunctionalPriorityHigh
Test data
An answer that adds a step, then change it so the step no longer applies
Expected result
Step appears and disappears correctly, and values from the removed step are discarded rather than submitted invisibly with the final payload.
WIZ-14

Keep the progress indicator accurate with conditional steps

TypeFunctionalPriorityMedium
Test data
A branch that changes the total number of steps midway
Expected result
Indicator reflects the actual remaining steps rather than a fixed count, so the user is not told there are two steps left when there are four.
WIZ-15

Handle a dependent field whose options load remotely

TypeStatePriorityMedium
Test data
Select a country so the region list loads, then change the country
Expected result
Dependent value is cleared rather than left holding an option invalid for the new selection, and a slow load shows a loading state rather than an empty list.
WIZ-16

Preserve file attachments across steps and errors

TypeStatePriorityHigh
Test data
Attach two files at step two, advance, return, then trigger a validation error elsewhere
Expected result
Attachments survive all three transitions. Silently dropping an upload is worse than rejecting it, because the user believes it was received.
WIZ-17

Validate uploads on type and size

TypeNegativePriorityHigh
Test data
A permitted file at the maximum size, one byte over, and an executable renamed to a permitted extension
Expected result
Accepted, refused on size, and refused on content inspection, with the reason stated rather than a generic upload failure.
WIZ-18

Show a review step that matches what will be submitted

TypeFunctionalPriorityHigh
Test data
Reach the review step, edit one value from there, then submit
Expected result
Review reflects every value including conditional ones, editing returns to the correct step and back to review, and the submitted record matches the review exactly.
WIZ-19

Trim and normalise values consistently

TypeNegativePriorityMedium
Test data
Leading and trailing spaces, a double space inside a name, and mixed case in an email
Expected result
Normalisation is applied identically at validation and at storage, so a value that passed validation is not rejected at submission.
WIZ-20

Handle boundary lengths on every text field

TypeBoundaryPriorityMedium
Test data
A field at its maximum length, one character over, and an empty optional field
Expected result
Limit is enforced consistently in the interface and on the server, and the empty optional field submits without error.
WIZ-21

Preserve unicode and special characters

TypeNegativePriorityMedium
Test data
Accented characters, an apostrophe in a surname, emoji and right to left text
Expected result
Stored and redisplayed unchanged in the review step, in the confirmation and in any notification generated from the submission.
WIZ-22

Handle a session expiring mid wizard

TypeStatePriorityHigh
Test data
Let the session expire at step four, then attempt to advance
Expected result
Values are retained through re-authentication and the user returns to the same step, rather than losing everything to a sign in redirect.
WIZ-23

Recover from a failed step save

TypeStatePriorityHigh
Test data
Make the step save request fail, then retry it
Expected result
Failure is reported with a retry, the entered values remain, and the wizard does not advance as though the save had succeeded.
WIZ-24

Handle two tabs progressing the same wizard

TypeBoundaryPriorityMedium
Test data
Open the wizard in two tabs, advance both, then submit from the older one
Expected result
Documented behaviour is applied consistently rather than one tab silently overwriting the other draft, and only one submission is created.
WIZ-25

Autofill from the browser without breaking validation

TypeCompatibilityPriorityMedium
Test data
Use browser autofill for name, address and payment fields
Expected result
Autofilled values are recognised by validation, dependent fields update, and no field is left visually filled but internally empty.
WIZ-26

Work correctly on a mobile viewport with a soft keyboard

TypeCompatibilityPriorityHigh
Test data
Complete the wizard on a small viewport with the on screen keyboard open
Expected result
The focused field stays visible above the keyboard, the correct input type is used for each field, and navigation controls remain reachable.
WIZ-27

Present errors so they can be found and fixed

TypeFunctionalPriorityHigh
Test data
Submit a step with three separate validation failures
Expected result
A summary lists every failure with links to each field, individual messages sit beside their field, and focus moves to the first failing field.
WIZ-28

Complete the wizard with a keyboard and a screen reader

TypeAccessibilityPriorityHigh
Test data
Keyboard only navigation through every step, including the review and submit
Expected result
Step changes are announced with the current position, errors are announced and linked to their field, focus is managed on each transition, and no control is mouse only.

What goes in each field

ID

Required

Stable identifier, prefixed by module.

Test case

Required

What is being verified, in one line.

Type

Functional, negative, boundary, security, state, performance, accessibility or compatibility. Use it to check coverage is spread rather than clustered on the happy path.

Priority

Risk based, weighted by abandonment. Anything that loses entered data, submits twice, or lets an incomplete submission through is High. Everything else is judged on how often a real user hits it.

Test data

The specific values, including the invalid and boundary ones.

Expected result

Required

The precise observable outcome, including message text where the wording itself is the requirement.

How To Use This

Go back one step, then forward

Filling every field correctly and pressing next proves nothing. These four conditions are where people abandon the form.

Navigate backwards, then forwards

Check selects, checkboxes, radio groups and file attachments specifically. Text inputs usually survive; the other control types are where values quietly disappear.

Refresh at step four

Either the progress is restored or the user is warned first. Silently returning to step one throws away several minutes of work with no explanation.

Alter an earlier value at the end

Complete the wizard, then change a step one value in the final request. Per step validation on the way through is not the same as validating the whole payload.

Submit five times fast

Then replay the submission request. A disabled button is a courtesy; the server refusing the duplicate on an idempotency key is the actual control.

What Most Sets Miss

Why wizards get abandoned

Every serious defect in a multi step form is a variant of the same thing: the answers did not survive. They can fail to survive back navigation, a validation error on an unrelated field, a browser refresh, a session expiry, a failed step save, or a second tab. Each of those is a separate test and each produces the same user reaction, which is to stop filling in the form. File attachments are the worst case, because dropping one silently is more damaging than rejecting it outright: the user believes the document was received and finds out weeks later that it was not.

Validation has to happen twice and usually happens once. Checking each step as the user advances is good for the experience but proves nothing about the final payload, because the request that actually creates the record can be modified after the fact. Any wizard that trusts the journey rather than revalidating the complete submission on the server is one altered request away from an invalid record. The same reasoning applies to step gating: hiding navigation to a later step is presentation, and the completeness check belongs on the server.

Duplicate submission is the defect that costs money on any wizard that creates an order, a claim or a payment. Users press submit again when nothing appears to happen, mobile networks drop responses, and clients retry on timeout. A disabled button handles none of those. The server needs an idempotency key generated before the first attempt, and the timeout case needs its own handling: an outcome that is genuinely unknown must not be presented as a failure, because that is exactly what prompts the second submission.

Conditional branching is where wizards accumulate quiet inconsistency. A step that appears based on an earlier answer needs to disappear when that answer changes, and the values collected in it need to be discarded rather than travelling along invisibly in the final payload. The progress indicator needs to follow the actual branch rather than a fixed count, and a dependent field whose options load remotely needs clearing when its parent changes, otherwise it holds a selection that is invalid for the new context and passes validation anyway.

Suggest an improvement

Testing a checkout, onboarding or application flow?

QAble tests multi step journeys end to end, including state preservation across interruptions, server side revalidation, duplicate submission and accessibility of every step.

UI and UX testing services

More test case sets

View all

Test cases for a login page

Test cases
25 cases across functional, negative, boundary, security, session and accessibility paths, including account enumeration and lockout.

Test cases for a registration form

Test cases
28 cases covering validation, duplicate accounts, email verification, password rules and the enumeration leak most signup forms ship with.

Test cases for search functionality

Test cases
28 cases across relevance, partial and fuzzy matching, filters, pagination, empty states, injection attempts and performance under load.

Test cases for a shopping cart

Test cases
27 cases on quantity limits, price recalculation, stock changes, coupon stacking, guest to account merge and cart persistence.

Test cases for checkout and payment

Test cases
30 cases including 3D Secure, declines, timeouts, duplicate charges, idempotency, refunds and partial captures.

Test cases for file upload

Test cases
28 cases on size and type limits, spoofed content types, malicious filenames, progress, resume, virus scanning and storage limits.

Test cases for forgot password

Test cases
26 cases on reset token expiry, single use enforcement, session invalidation and the enumeration and rate limit gaps that are routine here.

Test cases for OTP verification

Test cases
26 cases on expiry, resend throttling, attempt limits, code reuse, delivery failure and the brute force window teams forget to close.

Test cases for user roles and permissions

Test cases
26 cases on horizontal and vertical privilege checks, direct object access, role changes mid-session and permission inheritance.

Test cases for form validation

Test cases
27 rules-based cases on required fields, length and numeric boundaries, client and server parity, hidden field tampering and error accessibility.

Test cases for a date picker

Test cases
26 cases on timezone shifts, ambiguous day and month order, impossible dates, min and max limits, leap years and keyboard operation.

Test cases for pagination

Test cases
24 cases on ordering stability, records changing mid-session, page size caps, deep offset cost, permission-filtered totals and state restore.

Test cases for push notifications

Test cases
26 cases on app states, deep link routing, token release on sign out, lock screen privacy, preferences, provider failures and platform differences.

Test cases for reports and data export

Test cases
25 cases on permission filtering in the file, spreadsheet formula injection, encoding, typed numbers and dates, row limits and audit logging.

Test cases for a chatbot

Test cases
28 cases on paraphrased intents, context, fallback loops, human handoff, policy grounding, prompt injection and data scoping.

Test cases for net banking transactions

Test cases
28 cases on duplicate debits from a retried request, concurrent transfers against one balance, daily limits across channels, beneficiary cooling periods, second factor binding and reconciliation.

Test cases for wallet and UPI payments

Test cases
28 cases on payments that time out with no response, idempotency on retry, racing balances, caps across devices, collect request fraud, mandates and refunds.

Test cases for insurance claim submission

Test cases
28 cases on coverage at the date of loss, waiting periods, deductibles and sub limits, exclusions and riders, duplicate claims and settlement reconciliation.

Test cases for patient records in an EHR

Test cases
28 cases on duplicate detection and merge, wrong patient entry, units of measure, allergy and interaction alerting, break glass access and audit of reads.

Test cases for CRM lead management

Test cases
28 cases on duplicate leads under concurrency, routing and the unrouted fallback, round robin races, territory visibility, conversion and bulk import.

Test cases for an ERP purchase order

Test cases
28 cases on approval thresholds, amendments that must reset approval, budget commitment races, over receipt tolerance, three-way match and duplicate invoices.

Test cases for OTT video playback

Test cases
28 cases on bitrate recovery after a dip, DRM renewal mid stream, concurrent stream limits and leaked slots, resume conflicts, ad cue points and offline expiry.

Test cases for game level progression

Test cases
28 cases on save corruption during a crash write, cloud save conflicts, offline queue replay, unlock gating, currency exploits and purchase restore.

Test cases for a REST API

Test cases
28 cases on status code correctness, cross tenant resource access, mass assignment, idempotent retries, cursor pagination, rate limits and contract drift.

Test cases for SSO and social login

Test cases
28 cases on linking an account on an unverified email, state and code replay, redirect allow lists, token signature and issuer, deprovisioning and session rotation.

Test cases for subscription and billing

Test cases
28 cases on mid cycle proration, duplicate and out of order webhooks, renewal double charges, dunning and grace, trials, coupons, metered usage and tax.

Test cases for data tables, filters and sorting

Test cases
28 cases on unstable sorts across pages, filters that must reset pagination, selection surviving a filter change, bulk action scope and export fidelity.

Test cases for session timeout and concurrent login

Test cases
28 cases on tokens that survive sign out, refresh token reuse, idle against absolute lifetime, multi tab expiry, session limits and remote revocation.

Test cases for email verification

Test cases
28 cases on token reuse and expiry, invalidating earlier links, account enumeration, header injection, safe address change and mail scanner prefetching.

Test cases for dashboards and analytics widgets

Test cases
28 cases on reconciling against source rows, widgets that disagree, timezone aggregation, zero baselines, no data shown as zero and permission leaks in aggregates.

Test cases for booking and reservation

Test cases
28 cases on concurrent bookings for the last slot, inventory holds that leak, payment without a booking, cancellation boundaries and channel sync.

Test cases for mobile app install and update

Test cases
28 cases on migration chains across skipped versions, crashes during post upgrade migration, forced update lockouts, deep links and clean reinstall.

Test cases for accessibility (WCAG 2.2 AA)

Test cases
28 cases on keyboard only completion, focus management, live region announcements, contrast, reflow at 320 pixels, target size and screen reader verification.

Test cases for performance and load

Test cases
28 cases on spikes with no ramp, recovery after peak, soak and leak detection, pool exhaustion, cold caches, retry storms and data correctness under load.

Test cases for the OWASP Top 10

Test cases
28 cases on broken access control, mass assignment, injection across every input surface, credential stuffing, session invalidation, SSRF and exposed secrets.

Test cases for cross browser compatibility

Test cases
28 cases on storage that throws in private mode, blocked third party cookies, engine date parsing, mobile viewport units, in app browsers and ad blockers.

Test cases for database and data integrity

Test cases
28 cases on uniqueness under concurrency, lost updates, counter races, orphaned rows, migration and backfill safety, replica lag and verified restores.

Test cases for localisation and multi language support

Test cases
28 cases on text expansion, concatenated sentences, plural rules, locale date parsing, decimal separators, right to left layout, collation and encoding.

Want your form completion proven, not assumed?

QAble covers functional, state and accessibility paths with ISTQB-certified engineers. Start with a free QA audit of your product.

Talk to QA Advisor