QA Practice Sandbox
Drill every locator, on purpose-built pages
24 interactive drills and 17 full scenarios — tagged by locator strategy, action type, and difficulty.
or press Ctrl K to jump straight to anything
Start with Drills
24 small, isolated pages — one locator strategy or UI action at a time. Search or filter by difficulty, category, locator type, or action type.
Browse drills → Comfortable with the basics?Try a Scenario
Multi-step, realistic flows — a checkout, an admin panel, an API-backed board — with state that carries across pages, closer to what you'd actually be asked to automate.
Browse scenarios →How it fits together
From one locator to a real test suite
The site is built in layers on purpose — each one adds a skill the last one doesn't need.
Drill
Isolate one locator strategy or UI action — nothing else on the page to distract you.
2Scenario
Combine several drills into a real, multi-page flow — a checkout, an approval workflow.
3API Scenario
Pure HTTP, no browser UI — token expiry, idempotency, tenant isolation, fixture graphs.
4Test Data
Seed preconditions and reset state through an API, the way a real suite manages fixtures.
Try it right now
The Locator Inspector, live
Every drill and scenario page ships with this toolbar built in. Paste a CSS selector or an XPath expression and matching elements highlight live on the page — with a count badge showing exactly how many elements matched.
No signup, no page reload — try .demo-btn or
//button[text()='Second sample'] in the panel on the right, against the elements above it.
Not just theory
Real code, real difficulty
Playwright against an actual drill
A few examples
See all drills →Unique ID
A button with a stable, unique `id` — the friendliest locator there is.
Duplicate Classes
Five buttons share one class and no unique attribute — practice `nth-of-type` and structural CSS.
Regenerating IDs
Every page load, the server mints a fresh random id/class — a hardcoded locator breaks on the very next run.