Scenarios

Combine skills into a real flow

Drills isolate one locator or action at a time. Scenarios string several of them into a realistic, multi-page flow with state that actually carries across pages — closer to what you'd be asked to automate on the job, and a better test of whether your framework and page-object structure hold up outside a single isolated page.

Every scenario with persisted state has a seed/reset API for bootstrapping preconditions without clicking through the UI first — see the Test Data & Fixtures reference.

UI Workflows

12

Click through a real browser flow — logins, forms, boards, drag-and-drop — across multiple pages. State usually lives in your session cookie, so it's private to you and safe to reset any time.

Checkout Flow

Search and filter products, build a cart that survives across pages, get through an intermittently-flaky payment step, and land on a real order confirmation with a fresh order id every time.

Products → Cart → Checkout → Confirmation

Admin Panel

Log in, search and manage a table of user records — edit a role, suspend an account, add a new user, delete one — then log out and confirm the page is protected again.

Login → Records

API-Seeded Task Board

A real REST API (create/list/update/delete tasks) backing a live board UI. Seed or verify data through the API directly, then confirm the UI reflects it — the API-plus-UI pattern real hybrid test suites rely on.

Board

Profile Wizard

A simple multi-step form — Basic Info, Preferences, Review, Complete — with data that persists across steps and an unsaved-changes prompt if you try to leave early. The gentlest scenario to start with.

Basic Info → Preferences → Review → Complete

Support Ticket Submission

Submit a support ticket with an optional file attachment, then track it — and close it — from a My Tickets list. Covers the validation-error path too, not just the happy path.

Submit → My Tickets

Notification Center

A bell icon with a live unread-count badge, backed by Server-Sent Events. Open the dropdown, mark items read individually or all at once, and watch the badge react.

Inbox

Async File Processing

Upload a file, then poll a real job-status endpoint until it resolves (~5s) — complete about 75% of the time, failed the rest, requiring a retry. No fixed sleeps will reliably pass this one.

Upload → Status

Job Search + Apply + Track

Search listings with a typeahead suggestion list, apply to one via a dynamically-routed page with a resume upload, then track and withdraw applications from a My Applications list.

Listings → Applications

Password Reset

Request a reset link (no real email — it's shown directly), follow the token-bearing link, set a new password, then log in with it. The new password is real for the rest of your session.

Request → Check Email → New Password → Login → Done

Draggable Kanban

Real native HTML5 drag-and-drop between and within columns, with order persisted to a server-backed API — combines the Drag & Drop drill's flaky-event lesson with genuine, verifiable state.

Board

Two-Role Approval Workflow

An employee submits a request, a manager (a separate login, separate session) approves or rejects it with a comment, and the employee sees the outcome. Data is shared across sessions, not cookie-isolated like everywhere else on this site.

Login → Dashboard

Real-Time Chat

A single shared chat room over a real WebSocket connection — open two tabs and watch messages and a typing indicator sync between them instantly. True bidirectional interception, not Server-Sent Events.

Chat Room

API Scenarios

5

No browser UI, no cookies — pure HTTP calls (curl, Postman, or your own scripts) against a stateful API. Every one of these has a live Console page for trying requests without leaving the browser, and covers a specific test-data-management pattern: token expiry, chained state transitions, idempotent retries, tenant isolation, and fixture dependency ordering. Each card below is paired with its endpoint reference and a reset button, so you can check a signature or clear state without clicking in first.

Auth Token Lifecycle

Pure API: get a short-lived access token (20s) and a refresh token, hit a protected endpoint until it expires, refresh to get a new pair (rotating out the old refresh token), or revoke it outright. No cookies, no browser session — just bearer tokens.

Console

Endpoints

POST /api/scenarios/api-auth/token

GET /api/scenarios/api-auth/protected

POST /api/scenarios/api-auth/refresh

POST /api/scenarios/api-auth/revoke

No reset needed — tokens self-expire (20s access / 5min refresh).

Chained Order Pipeline

Pure REST, no cookies: create an order, capture its id, confirm payment, then ship — each transition is validated against the current state (409 if you skip a step), and continuity comes entirely from the id in the URL.

Console

Endpoints

POST /api/scenarios/pipeline/orders

GET /api/scenarios/pipeline/orders/:id

POST /api/scenarios/pipeline/orders/:id/confirm-payment

POST /api/scenarios/pipeline/orders/:id/ship

Wipe shared state and start clean.

Idempotency Keys

A charge endpoint that requires an Idempotency-Key header — replaying the same key returns the exact original response instead of creating a duplicate, the pattern real payment APIs use to survive network retries.

Console

Endpoints

POST /api/scenarios/idempotent/charges

GET /api/scenarios/idempotent/charges

Wipe shared state and start clean.

Workspace/Tenant Isolation

Create two workspaces, add items to each, and confirm the API keeps them completely separate — items in one never leak into the other, and an unknown workspace id 404s instead of returning an empty list.

Console

Endpoints

POST /api/scenarios/workspaces

GET /api/scenarios/workspaces/:workspaceId/items

POST /api/scenarios/workspaces/:workspaceId/items

Wipe shared state and start clean.

Fixture Dependency Graph

Build a chain of test fixtures by hand inside a workspace — user, product, payment method, order — and see the specific error each one throws when a dependency is missing, plus a seed-fixtures shortcut once you know the correct order.

Console

Endpoints

POST /api/scenarios/workspaces/:workspaceId/users

POST /api/scenarios/workspaces/:workspaceId/products

POST /api/scenarios/workspaces/:workspaceId/payment-methods

POST /api/scenarios/workspaces/:workspaceId/orders

POST /api/scenarios/workspaces/:workspaceId/seed-fixtures

Wipe shared state and start clean.