All challenges
Focused pages for every tricky element. Every interactive element carries a data-testid.
π§± Elements13
Every native input type, plus a form that echoes back what you typed.
A parent/child checkbox tree with indeterminate state and select-all.
A radio group including a disabled option.
Add, edit and delete rows in a data table.
Click, double-click and right-click handlers, plus a dynamic-id button.
Simple, dynamic, new-tab, broken and redirecting links.
Working vs. intentionally broken <img> sources.
Lazy-loaded images, a responsive srcset image, a figure with caption, and a clickable image map.
Clickable inline SVG icon buttons, an SVG shape, and an animated SVG.
Elements hidden via display:none, visibility:hidden, opacity:0 and off-screen positioning.
A breadcrumb trail and a numbered pagination control.
Upload a file and see its details; download a generated file.
An id/class that changes, a button enabled after a delay, color that shifts.
π Forms & Login3
A real login flow: validation errors, a locked-after-attempts state, and a success redirect.
One large real-world form: text, radios, checkboxes, dependent dropdowns, tags, file upload, submit summary.
A 3-step form with a progress indicator and per-step validation.
πͺ Alerts, Frames & Windows3
ποΈ Widgets8
Expand/collapse panels, only one open at a time.
A tabbed panel switcher.
Native select, searchable single-select, and multi-select tag autocomplete.
A calendar date picker and a date-time input.
A range slider with live value, and a start/stop progress bar.
Hover tooltips, a nested dropdown menu, and a right-click context menu.
An on/off toggle switch and a star rating widget.
A 6-box OTP input with auto-advance, and a live password strength meter.
π Interactions7
Drag to reorder a list.
Click (and shift/ctrl-click) to multi-select grid items.
A box you can resize, with and without constraints.
Drag a box into an accept zone and a revert zone.
Elements that appear and disappear on click β practice re-querying the DOM.
Captures and displays the last key you pressed.
Drag the puzzle piece to the end to "verify" β a slide-to-unlock pattern.
β‘ Dynamic Behavior2
ποΈ Media & Scrolling5
An auto-advancing image carousel with manual controls.
A feed that loads more items as you scroll down.
A horizontally scrolling card gallery.
A mouse-driven canvas drawing pad with a clear button.
An HTML5 video player and an audio player with native controls.
β¨ More6
Toast messages that appear and auto-dismiss.
A real custom element with a closed-off shadow root.
A contentEditable WYSIWYG editor with formatting buttons.
A modal that appears shortly after page load, to practice dismissing overlays.
Copy to clipboard, and read/write localStorage, sessionStorage and cookies.
What real HTTP Basic Auth needs (and a client-side stand-in you can practice against here).