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.