Free · Automation practice

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.

30sections120+elements5frameworks100%free
Built forSeleniumPlaywrightCypressRobot Framework

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 id

By class (.locator-by-class):

Find me by class

By name ([name="locator-name"]):

By data-testid:

Find me by data-testid

By aria-label:

Find me by aria-label

By placeholder:

By exact text:

ExactTextTarget

By partial text:

This contains PartialMatch inside it

CSS-only target (data-css attribute):

Reachable only via [data-css='css-only-target']

Deeply nested structure for XPath axes:

grandparent
parent
child 1 (sibling)
child 2leaf node

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).

    NameDepartmentRoleSalary
    AnitaQASDET12,00,000
    BharathEngineeringBackend15,00,000
    ChitraQALead18,00,000
    Page 1 of 3

    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.

    Drag me
    Drop here

    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.

    Hover for tooltip

    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.

    Tall spacer — scroll down to reach the target at the bottom.

    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.

    Drag my bottom-right corner to resize me.

    Section 30 — Complex DOM Structure

    Practise advanced XPath axes and CSS combinators on a deeply nested, multi-sibling tree.

    grandparent
    parent 1
    child 1aleaf 1a
    child 1bleaf 1b
    parent 2 (sibling)
    • 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.