Automation Practice Playground
30 sections, every element you actually need to practise UI automation — forms, dynamic content, waits, tables, alerts, modals, iframes, shadow DOM, drag & drop, flaky elements and more. Point Selenium, Playwright, Cypress or Robot Framework at it and go.
Every element carries an id, class, name, data-testid and aria-label — so you can practise every locator strategy on one page.
Practising for interviews? This playground is where you build the muscle. My kits give you the answers — 300+ Q&A with the interview-answer strategy for each, plus solved coding problems.
Section 1 — Basic Form Elements
Practise filling text, password, email, phone inputs and a textarea, then submitting and resetting a real form.
Not submitted
Section 2 — Button Interactions
Practise single click, double click, right click, disabled buttons, a button that enables after 3s, and a self-relabelling button.
No click yet
Not double-clicked
Not right-clicked
Section 3 — Checkboxes & Radio Buttons
Practise toggling checkboxes, a select-all that controls them, radio groups, and a checkbox that reveals hidden text.
Radio group:
Selected: none
Section 4 — Dropdowns
Practise standard select, multi-select, a custom div-based dropdown, and a select populated from state.
Standard select:
Selected: none
Multi-select (Ctrl/Cmd + click):
Selected: none
Custom div dropdown:
Selected: Choose...
Select populated from state array:
Selected: none
Section 5 — Locator Practice
One element per common locator strategy plus a deeply nested tree for XPath axis practice.
By id (#locator-by-id):
Find me by idBy class (.locator-by-class):
Find me by classBy name ([name="locator-name"]):
By data-testid:
Find me by data-testidBy aria-label:
Find me by aria-labelBy placeholder:
By exact text:
ExactTextTargetBy partial text:
This contains PartialMatch inside itCSS-only target (data-css attribute):
Reachable only via [data-css='css-only-target']Deeply nested structure for XPath axes:
Section 6 — Dynamic Content
Practise waiting for elements to appear/disappear, text changes, a counter, and dynamically injected content.
Waiting for delayed element...
Original text
Counter: 0
Section 7 — Waits & Synchronisation
Practise explicit waits: a spinner that becomes Loaded, delayed text, an animated progress bar, and a delayed AJAX response.
Loading spinner...
Waiting...
0%
No request sent
Section 8 — Table Automation
Practise reading rows, sorting by name, filtering with search, and paginating (page size 3).
| Name | Department | Role | Salary |
|---|---|---|---|
| Anita | QA | SDET | 12,00,000 |
| Bharath | Engineering | Backend | 15,00,000 |
| Chitra | QA | Lead | 18,00,000 |
Section 9 — Alerts
Practise handling native JS dialogs: alert, confirm and prompt.
No interaction yet
Section 10 — Modals
Practise opening a modal, closing via the X or close button, and closing by clicking the overlay.
Section 11 — iFrame
Practise switching into an iframe context before interacting with the form inside it.
Section 12 — Shadow DOM
Practise piercing a shadow root: the input and button live inside a custom element's shadow DOM.
Section 13 — Drag & Drop
Practise native HTML5 drag and drop: drag the source onto the drop zone.
Nothing dropped
Section 14 — Hover Menu
Practise hovering a menu item to reveal a submenu (Actions class hover/move-to-element).
Section 15 — Tooltip
Practise triggering and reading a tooltip that appears on hover.
Section 16 — File Upload
Practise uploading a file and verifying the selected file name appears.
No file selected
Section 17 — Download
Practise triggering a file download (practice.txt) and asserting on the downloaded file.
Not downloaded
Section 18 — Hidden Elements
Practise locating elements that are in the DOM but hidden via CSS, and revealing hidden content.
(There is a button above hidden with display:none — present in the DOM.)
Section 19 — Scroll Testing
Practise scrolling a far-away element into view before asserting on it.
You scrolled to me
Section 20 — Multiple Windows
Practise switching between window/tab handles after opening a new one.
No window opened
Section 21 — Authentication Simulation
Practise a login flow. Demo credentials: username admin, password admin123.
Section 22 — Stale Element Simulation
Practise StaleElementReferenceException: the target node is replaced (new key), so a previously located reference is no longer attached.
Stale target instance #0
Section 23 — Dynamic List
Practise adding and removing items and asserting on the changing list length.
- First item
- Second item
Section 24 — Network Delay Simulation
Practise waiting through a simulated network delay before the response text appears.
Idle
Section 25 — Random Fail (Flaky) Elements
Practise handling flaky outcomes: this button passes or fails roughly 50/50 each run.
Not run yet
Section 26 — Keyboard Actions
Practise sending keys: type here and watch the last key; Arrow Up/Down change the counter. Try Enter, Tab and arrows.
Last key: None
Arrow counter: 0
Section 27 — Slider
Practise moving a range slider and reading its live value.
Value: 50
Section 28 — Date Picker
Practise selecting a date and asserting the echoed value.
Chosen date: none
Section 29 — Resizable Element
Practise resizing an element by dragging its bottom-right handle.
Section 30 — Complex DOM Structure
Practise advanced XPath axes and CSS combinators on a deeply nested, multi-sibling tree.
- list leaf 1
- list leaf 2
- list leaf 3
You can automate it — can you ace the interview about it?
Every element here maps to a question you'll be asked. My kits give you the concept, the exact way to phrase the answer, quizzes and a final mock — for Selenium, Playwright, Python and more.
Want my free interview resources too?
Roadmaps, the XPath/CSS cheat sheet, and new free Q&A drops — straight to your inbox.