Workspace overview
StudioDashboard
Sandbox ready

New to Testbox?Take the quick tour, or export a starter suite for your preferred framework.

Automation workspace

What do you want to test?

Choose a realistic workflow, inspect its selectors, and turn interactions into repeatable automated tests. No setup or account required.

  • 52practice domains
  • 1,300+stable selectors
  • 8frameworks
Workspace coverage0%

0 of 52 sections explored

Start with any practice section below.
Goal mastery0 / 172
Recommended first lab

Forms & Inputs

Practice validation, OTP, uploads, dates, and reliable form state.

Practice domains

Start with a real workflow

Built-in workbench

Move from action to test

Open a tool without leaving your current workflow.

Forms & Inputs

62 lab controls

Practice track

User flows

Practice realistic sign-in, verification, payment, and contact-entry journeys.
4 patterns
Pattern 01 User flows 3 controls

Login Form

Assert native constraints, submission feedback, and a known success path.

Demo: admin@test.com / password123

Pattern 02 User flows 8 controls

OTP / PIN Input

Test single-character focus movement, keyboard correction, paste, and completion state.

Enter verification code:

Enter 6-digit code

Pattern 03 User flows 4 controls

Credit Card Input

Observe formatting and card-brand feedback without losing the entered digits.

Pattern 04 User flows 2 controls

Phone Input

Compare a formatted phone field with an international country-code control.

Practice track

Validation & feedback

Exercise suggestions, token inputs, inline validation, and secure password states.
4 patterns
Pattern 05 Validation & feedback 1 control

Autocomplete / Search

Practice an ARIA combobox with filtering, arrow-key navigation, and selection.

Selected: None

Pattern 06 Validation & feedback 5 controls

Multi-Select Tags

Add, de-duplicate, and remove tokenized values through keyboard or pointer input.

Suggestions:
Pattern 07 Validation & feedback 4 controls

Text & Validation

Assert valid, invalid, empty, required, and character-count states.

0/200

Pattern 08 Validation & feedback 3 controls

Password Strength

Verify strength criteria, visibility state, and confirmation matching.

Enter a password

Practice track

Choices & preferences

Cover grouped choices, native selects, switches, and range values.
3 patterns
Pattern 09 Choices & preferences 10 controls

Checkboxes & Radios

Cover multi-choice, single-choice, checked counts, and label activation.

Select Skills (checkboxes)

Selected: 0


Experience Level (radio)

Pattern 10 Choices & preferences 3 controls

Dropdowns & Select

Exercise single-select, multi-select, defaults, and high-priority values.

Pattern 11 Choices & preferences 6 controls

Toggles & Sliders

Assert boolean preferences and changing numeric range outputs.

Enable Notifications

Receive email alerts

Dark Mode

Switch UI theme

Auto-Save

Save drafts automatically


Volume50
Brightness75
Price Range ($)500

Practice track

Native & file inputs

Test browser-native pickers, numeric boundaries, and resilient file selection.
3 patterns
Pattern 12 Native & file inputs 6 controls

Date / Time / Color

Use date, time, month, week, and color controls rendered by the browser.

#f6511d
Pattern 13 Native & file inputs 5 controls

Number Inputs

Test stepper controls, min/max boundaries, decimals, and keyboard entry.

Pattern 14 Native & file inputs 2 controls

File Upload

Cover browse, drag-and-drop, type and size rejection, and file removal.

Drag & drop files here or

JPG, PNG, PDF, DOC — max 10MB

No files selected

Data Tables

ID NameEmailRoleActions

Inline-Edit Table

Click a task name to edit it in place (Enter saves, Esc cancels). Edits: 0

IDTaskOwnerStatusProgress

Expandable Orders (Master-Detail)

Click the chevron to expand an order and reveal its line-item detail. Expanded: 0

OrderCustomerDateTotalStatus

Inventory Status Table

Filter by status tabs, spot the priority chips and progress bars.

InvoiceProductQty × PriceStatusPriorityFulfilment

Hierarchical Tree Table

Expand folders to reveal nested files — practice depth-aware selectors.

NameTypeSize

Live Stock Table (updates every 1s)

Ticks: 0 · Paused

SymbolPriceChangeLast update

Table States (Loading / Empty / Data)

Switch the table between its loading skeleton, empty state, and populated state — classic state-assertion practice.

User Interactions

Kanban (Drag & Drop)

📋 To Do

Setup tests
Write specs

🔨 In Progress

E2E suite

👀 Review

✅ Done

Star Rating

Click to rate

Context Menu

Right-click here

Click Events

Last event:

Click count: 0

Keyboard Events

Key

Code

Modifiers

Events fired: 0

Sortable List

Drag items to reorder:

  • 🍎 Apples#1
  • 🍌 Bananas#2
  • 🍒 Cherries#3
  • 🍇 Grapes#4
  • 🍊 Oranges#5

Current order: 1,2,3,4,5

Hover & Focus

Hover over the boxes:

Hover me
Hover me
Hover me

Focus / blur (tab through):

Last:

Drag & Drop Zone

Drag items from left to the drop zone:

📦 Item A
📦 Item B
📦 Item C

Drop items here

Dropped: 0 items

Scroll & Resize

Scrollable container:

Scroll item 1

Scroll item 2

Scroll item 3

Scroll item 4

Scroll item 5

Scroll item 6

Scroll item 7

Scroll item 8

Scroll item 9

Scroll item 10

Scroll position: 0px

Resizable element (drag corner):

Window size:

Tooltips & Popovers

Hover for tooltips:

Tooltip on top
Tooltip on right
Tooltip on bottom

Click for popover:

Dynamic Content

Timer

00:00:00

Toasts

Progress Bars

Upload Progress0%
Build Progress0%
Test Coverage87%

Skeleton Loaders

Loaded User

user@test.com

Spinners & Loaders

Standard

Thin

Quarter

Icon

Alerts

Success!

Your changes have been saved.

Info

New features available.

Warning

Please review before continuing.

Error

Something went wrong.

Modal Dialog

Countdown Timer

Start
10

seconds remaining

Infinite Scroll

Scroll down to load more items...

Items loaded: 0

Dynamic Elements

Click "Add Element" to create dynamic elements

Element count: 0

Polling Job Status

Background Job Idle

No active polling job

Attempts: 0

Loading Button States

Buttons switch between idle, loading, success, and error states.

Live Activity Feed

No live events yet

Dismissible Banners

Scheduled Maintenance

System update planned for tonight at 11:00 PM UTC.

New Release Available

Version 2.1 introduces enhanced recorder support and improved selectors.

Navigation Components

Tabs

Content for Tab 1

Accordion

Media

Image Gallery

Snow-capped mountain peak above an alpine lake at sunset Tropical beach with turquoise water and palm trees Sunbeams filtering through a lush green forest Golden desert dunes at sunrise Waterfall cascading through a tropical rainforest Colorful autumn forest path with maple leaves Aurora borealis over snowy mountains at night Lavender field rows at golden hour Waves crashing against rocky ocean cliffs

Lazy-loaded images with descriptive alt text — assert on alt, naturalWidth and lazy-load behavior.

Responsive Image

City skyline at dusk with glowing towers

Use picture/srcset to serve art-directed images per breakpoint.

Video

Test play/pause, currentTime, buffering and the ended event.

Audio

Test playback, seeking and volume controls.

API Testing Studio

Compose mock requests, validate contracts, generate automation, and run repeatable API collections without leaving the browser.

Hosted contract lab

Deterministic REST and GraphQL simulations using the app.uassert.com API base URL.

EnvironmentHosted mock
Last status
Assertions0 / 0
Requests0
Request builderCompose parameters, authorization, headers, and JSON bodies.
https://app.uassert.com/api/users
Query parameter

The enabled parameter is merged into the endpoint without mutating the saved request.

Response inspectorBody, response headers, and executable assertions.
— ms— B
// Ready. Send a request or run the collection.
Collection runnerExecute repeatable contracts and export a machine-readable report.
Result Not runPassed 0Failed 0Duration
Request historyReplay the eight most recent requests.

No requests yet

Advanced

Shadow DOM

Clipboard

Storage Lab

sessionStorage vs localStorage · TTL expiry · cross-tab sync (open a second tab!).

sessionStorage (per-tab)

0

Survives reload, dies with the tab.

localStorage (persistent)

0

Persists across tabs & sessions.

TTL expiry (20s)

(none)

Cross-tab sync (BroadcastChannel)

Banking & Finance

44 Elements
Checking Account
$12,450.00

Account ****4521

Savings Account
$45,230.00

Account ****7892 · 4.5% APY

Credit Card
-$2,150.00

Card ****3345 · Limit $10,000

Transfer Funds

Bill Pay

Recent Transactions

Amazon Purchase

Dec 15 · Checking

-$156.99

Salary Deposit

Dec 14 · Checking

+$5,500.00

Restaurant

Dec 13 · Credit Card

-$45.00

Gas Station

Dec 12 · Credit Card

-$62.40

Freelance Payment

Dec 11 · Checking

+$1,200.00

Rent Payment

Dec 1 · Checking

-$1,800.00

Loan Calculator

Loan Amount ($)$25,000
Interest Rate (%)6.5%
Term (years)5

Monthly Payment

$489

Total Interest

$4,358

Total Repayment

$29,358

Account Statements

PeriodAccountOpeningClosingStatus
Dec 2024Checking$8,200.00$12,450.00Ready
Nov 2024Checking$6,850.00$8,200.00Ready
Dec 2024Credit Card-$1,420.00-$2,150.00Pending

E-Commerce

32 Elements

Cart 0

Cart is empty

Store Tools

Wishlist: 0

Orders: 0

Order History

No orders yet

Multi-Step Checkout

4 Steps · Validation
1

Shipping

2

Payment

3

Review

4

Done

Shipping Information

First name is required

Last name is required

Valid email is required

Address is required

Required

Required

5-digit ZIP

Payment Details

Valid 16-digit card number required

Invalid

Required

Required

Order Review

Shipping
Payment
Subtotal$259.97
ShippingFree
Tax$26.00

Total$285.97

Order Placed!

Thank you for your purchase.

Order #ORD-000000

Confirmation email sent to

Rich UI Patterns

Phase 2

Date Range Picker

Su
Mo
Tu
We
Th
Fr
Sa

Selected: None

Rich Text Editor

Characters: 0

Signature Pad

CAPTCHA Simulation

I'm not a robot

reCAPTCHA

Solve:

Select all squares with

Flaky Element Simulator

Testing Challenge

Practice writing resilient selectors and waits. These elements randomly appear, disappear, move, or go stale — exactly like flaky elements in real apps.

Disappearing Elements

These buttons randomly hide for 1-3 seconds then reappear.

Moving Elements

This button randomly changes its position.

Stale Element Reference

This element gets re-rendered on each click (new DOM node, same testid). Tests must re-query.

Element v1

dom-id: 1

Delayed Appearance

Trigger elements that appear after random delays (1-5s). Practice wait strategies.

No delayed elements yet

Insurance

10 Elements

Quote Calculator

Age30
Coverage ($)100,000
Deductible ($)500

Estimated Monthly Premium

$0

Claims

CLM-2024-001

Auto - Fender bender

In Review

CLM-2024-002

Home - Water damage

Approved

CLM-2024-003

Auto - Windshield

Denied

Real Estate

10 Elements
$0
$2,000,000

Mortgage Calculator

Monthly Payment

$0

POS Terminal

10 Elements

Products

Current Order

No items


Subtotal$0.00
Tax (8%)$0.00
Total$0.00

Payment

$0.00

Email Client

12 Elements
Inbox
33
Sent
Drafts
Trash

Calendar & Scheduling

8 Elements
Sun
Mon
Tue
Wed
Thu
Fri
Sat

WebSocket / Real-Time

A simulated WebSocket: connect, watch a stock ticker and a chat feed stream in, then enable flaky mode to see random drops and auto-reconnects — just like a flaky real-time backend. Practice connection-state assertions and polling waits.

Connection

Disconnected

Connection log — press Connect to begin.

Stock Ticker (updates every ~0.9s)

$100.00

Ticks: 0

Live Chat (messages every ~1.6s) — received: 0

Connect to start receiving messages.

Authentication & Sessions

The most-tested flow in real apps, simulated client-side: an OAuth2/SSO dance, a rotating TOTP code, token expiry → 401 → refresh, and remember-me storage.

OAuth2 / SSO Dance

Idle — not authenticated

TOTP 2FA

This authenticator code rotates every 30 seconds — typing takes time, so test the race.

------

Session Expiry

Not started — sign in first

After expiry the protected resource returns 401 until you refresh.

Remember Me & Storage

Uncheck to use in-memory (sessionStorage-like) storage — reload wipes it. Watch the Storage line in the SSO card.

Demo token saved under ts_auth_demo. Reset All Data clears it.

File Upload & Download

Practice the two awkward test areas: setInputFiles with size/type validation and progress, and download assertions (filename + content). Everything is simulated in-browser.

Upload

Drag & drop files here or

JPG, PNG, PDF, DOC, TXT, CSV — max 10MB

Upload history

No uploads yet

Download Generator

Suggested filename: invoice-sample.pdf

Visual Regression Playground

Capture a baseline, switch between 3 mutations (shifted element, changed color, removed text), and run a pixel diff that highlights changed regions — the same idea as Percy / Applitools / toHaveScreenshot, running entirely in your browser.

Screen (component under test)

Simulated UI screenshot

Baseline

No baseline yet

Pixel Diff

Baseline (captured)

Captured baseline thumbnail

Capture a baseline to start diffing.

2%

Raise the tolerance and watch a real diff failure become a pass — exactly how flaky screenshot tests get muted.

Animation & Reduced-Motion

0 Elements

Practice asserting on CSS animations (play-state, duration, animationend) and the accessibility rule: honor prefers-reduced-motion. Toggle the simulation and watch animations disable — exactly what tests should verify.

Animated Elements

Slide-in card (2s, 1 iteration)

I slide in — assert animationend or play-state

Ready — press Play.

Spinner

Pulse dot

animationend events: 0

    Reduced Motion Simulation

    Real apps ship @media (prefers-reduced-motion: reduce) rules. This section simulates that preference — tests should assert animations actually stop.

    prefers-reduced-motion: no-preference — animations run normally.

    What to assert

    • With reduce: computed animation-name = none (or duration 0s).
    • animationend should NOT fire under reduced motion.
    • Play-state toggles running / paused via animation-play-state.

    CSS to assert on

    .am-slide { animation: slide 2s ease; }
    .am-slide.am-paused { animation-play-state: paused; }
    @media (prefers-reduced-motion: reduce) {
      .am-slide, .am-spinner, .am-pulse { animation: none !important; }
    }

    The am-reduced class on the section simulates the media query for this lab.

    Music Player

    0 Elements

    Now playing: —

    0:00 / 0:00
    Volume

    Playlist

    Tracks use small embedded WAV clips so playback works offline. Test play/pause, seek, volume, shuffle order and repeat — click a playlist row to switch tracks.

    Toast & Notification Testing

    0 Elements

    aria-live Regions

    Screen readers announce changes to aria-live regions automatically. Assert on the region text, not the visual toast.

    polite (role="status") - non-urgent

    (empty - nothing announced yet)

    assertive (role="alert") - urgent

    (empty)

      Toast Stacking & Dismissal

      Toasts mount in #toastContainer (top-right, role="status"). Practice stacking, auto-dismiss timing, and manual close.

      What to assert

      • #toastContainer has aria-live="polite" - assert the attribute.
      • After Stack: .toast count grows in #toastContainer.
      • Auto-dismiss: tn-toast-auto disappears after ~3s.
      • Manual: click the x (tn-toast-manual-x) and assert removal.

      Real-world pattern: assert on the live region (what a screen reader hears) rather than toast CSS. Toasts animate out - poll until gone.

      Accessibility Tree Viewer

      0 Elements

      Screen-reader view of any element

      Turn Inspect mode ON, then click any element in the app (e.g. a button, input, link) to see exactly what a screen reader announces: its role, accessible name, state, and keyboard position.

      Turn on Inspect mode and click any element — or press "Try a demo element".

      Cheat sheet

      role — button, link, heading, textbox…
      name — aria-label > label > placeholder > text
      state — disabled, checked, expanded…
      focus — is it keyboard-reachable? tab #

      Practice: find an element with no accessible name, or a div that should be a button. That's what automated a11y audits flag.

      Security Testing

      0 Elements

      Simulated security scenarios: CORS read failures, cookie flags (HttpOnly / SameSite), CSP violations, and token-storage best practices. Learn what each control blocks — and how to assert it in a test.

      CORS (cross-origin reads)

      Cookie Flags

      Content Security Policy

      Token Storage

      Browser APIs Lab

      0 Elements

      Geolocation (mocked)

      Practice the permission prompt: grant or deny, then read a position or watch it move.

      No permission asked yet.

      Web Worker (background thread)

      A blob-based worker counts in the background and posts messages — the page never blocks. Try Stop to terminate it.

      Worker not started.

      Observers

      IntersectionObserver

      Scroll me in & out of view

      ResizeObserver

      resize me

      MutationObserver

        Fullscreen API

        Request fullscreen on the box below. Note: sandboxed previews may block it — a graceful fallback message teaches why user-gesture rules exist.

        Fullscreen target

        Not in fullscreen.

        Performance / Web-Vitals

        Simulate the three Core Web Vitals and practice budget assertions (LCP < 2.5s, CLS < 0.1, INP < 200ms). Learn what degrades each metric — the gap between "it works" and "it’s good enough".

        LCP — Largest Contentful Paint

        A hero image that loads after a delay.

        Hero image

        LCP:

        CLS — Cumulative Layout Shift

        A banner appears above content, pushing it down — layout shift you can measure.

        Content below the fold — shifted when the banner appears.

        CLS: 0.000

        INP — Interaction to Next Paint

        A button whose handler blocks the main thread.

        INP: budget 200ms

        Web Vitals Report

        Run measurements to build the report

        Localization / i18n + RTL

        Switch languages (EN / DE / AR) and watch the layout flip to RTL for Arabic. Notice the deliberately broken translation (a missing key renders as [missing:…]) and the over-truncated long string. Lesson: assert on translation keys, not literal text.

        Language Switcher

        EN

        Welcome

        Hello, world!

        Items in cart

        Total

        Date

        Close Close

        Long string (over-truncates in RTL):

        This is a very long untranslated English string that will overflow or truncate awkwardly in narrow RTL layouts.

        Number & Date Formats

        Formatted with Intl for the current locale — tests that hard-code "1,234,567.89" will break in DE/AR.

        Number: 1,234,567.89

        Date:

        Switch to DE → "1.234.567,89" and a German date. Switch to AR → Eastern Arabic numerals.

        Race Condition & State Lab

        The flakiest class of real bugs — timing. Each widget shows the wrong behavior and gives you the right way to test it: fast clicks, out-of-order async writes, debounced search, and click-before-hydration.

        Double Submit

        Rapid double-clicks: 0 duplicate submissions

        The button disables during the 900ms request — click it twice fast to see the guard fail if you bypass it.

        Out-of-Order Saves

        No saves yet

        Save fast (150ms) then slow (900ms): the slow one resolves after and overwrites — "submit A then B, B wins".

        Debounced Search

        Only the final keystroke fires after a 500ms debounce — assert the last query, not each keystroke.

        Click Before Hydration

        Clicks before hydration are silently dropped — the classic "works locally, breaks in CI" bug.

        Chaos / Error Boundary

        Negative testing: crash components on purpose, watch error fallbacks, and practice page.on('pageerror') / page.on('console') patterns. Everything here is safe — it only affects this section.

        Crash Zone

        Crashes: 0

        Each throw fires a pageerror — catch it with page.on('pageerror').

        Console Spy

        Listen with page.on('console') and assert the message.

        Broken Image Fallback

        Broken image'">

        The onerror fallback swaps in a placeholder — assert the fallback, not the failure.

        App-State Reset

        Restores crash counter, image, and console status — the "recover from chaos" pattern.

        Deeper DOM Labs

        Beyond the basics: closed shadow roots, nested shadow hosts, a cross-origin iframe simulation, and dynamically injected styles — the DOM patterns that break naive selectors.

        Closed Shadow Root

        shadowRoot is null — only piercing automation can reach inside.

        Nested Shadow DOM

        An open shadow host containing another shadow host. The button inside is reachable via piercing selectors only.

        Cross-Origin Iframe Sim

        A srcdoc frame simulates the cross-origin lesson — in a real cross-origin iframe, contentDocument access throws.

        Dynamic Injection

        Watch me get highlighted by injected CSS.

        Practice mutation handling: the injected <style> and class appear after click.

        Print / PDF Rendering

        A printable invoice with print-specific styling, plus a deliberately broken screen-only element that should NOT appear in print. Open the print preview (or print to PDF) and assert on what’s visible.

        Invoice

        INV-2024-0042

        Acme Corp

        123 Test St

        ItemQtyPrice
        Test Automation Suite2$99.99
        Runner License1$199.00
        Total$398.98

        Screen-only note — hidden in print.

        BROKEN: this screen-only element forgot its print:hidden — it will print.

        Sortable / Resizable / Slider

        Drag & resize practice: a sortable list (mouse drag), a resizable box (drag corner and arrow keys), and a compound slider (two inputs sum live).

        Sortable List (drag items)

        • Alpha#1
        • Bravo#2
        • Charlie#3
        • Delta#4

        Order: alpha,bravo,charlie,delta

        Resizable Box (drag corner or focus + arrows)

        Drag corner or use arrows

        Size: 320 × 120

        Compound Slider (sum updates live)

        A50
        B30

        Sum: 80

        Healthcare & Medical

        19 Elements

        Patient Directory 5 patients

        IDNameAgeDeptStatusBPRoom

        Book Appointment

        Upcoming

        No appointments

        Prescriptions

        Travel & Hotels

        17 Elements

        Search Hotels

        Available: 5

        My Bookings

        No bookings yet — book a hotel.

        Food Delivery

        21 Elements

        Menu

        Your Order

        Order is empty

        Total$0.00

        Education / LMS

        20 Elements

        Course Catalog

        Quick Quiz Score: 0 / 0

        What does data-testid help you do?

        Crypto & Trading

        19 Elements

        Market

        AssetPrice24hCapVol

        Portfolio Total: $0.00

        Logistics & Shipping

        17 Elements

        Create Shipment

        Shipments

        IDRouteStatusProgressETA

        Tracking Timeline

        Click Track on any shipment to see its timeline.

        Select a shipment to track.

        Test Case Manager

        0 Elements

        Each step runs against the real app via the Test Runner interpreter — click Run and it navigates to the section and executes live. Cases persist in your browser.

        CI Pipeline Visualizer

        0 Elements

        A mock GitHub Actions / GitLab pipeline that runs your last real test run (from the Test Runner) through install → lint → unit → e2e → report, then gates the deploy on the flake rate — exactly where E2E sits and why flaky suites block shipping.

        Pipeline

        E2E runs the real Test Runner suite. If any test failed in your last run, the pipeline stops at E2E — just like CI.

        Last Test Run

        Deploy Gate

        Flake rate = tests that both passed and failed across your run history. Over 20% blocks the deploy.

        Platform Tools

        TestID Viewer

        Click to list

        Data Generator

        Click a button

        Reset

        Clear every registered Studio preference, progress record, session value, offline database, and cache. You will review the complete list before anything is removed, and Studio verifies the reset after reload.

        Workspace & Progress Report

        Export all your progress (goals, runner history, challenges, bug hunt, test cases, recorded steps, theme) as a JSON file — and import it back here or on another device. Download a CSV progress report for instructors or CI.

        Achievements

        0 Elements

        Earn XP by exploring sections, completing goals, solving challenges, finding bugs, running test cases and suites. Complete 15 achievements to collect every badge — and keep your daily streak alive!

        Accessibility Testing

        This section contains deliberate accessibility bugs. Your job: find all 6 challenges using a screen reader, an automated checker (axe / Wave), or keyboard alone. Each card violates WCAG in a specific way — nothing here is labeled "bug".

        Good practice: run your favorite a11y scanner against #section-a11y and see what it catches.

        Challenge 1 · Icon button

        What does this button do? A screen-reader user won't know.

        Challenge 2 · Image alt

        This image has no alt text — what would a screen reader announce?

        Challenge 3 · Placeholder-only input

        A placeholder is not a label.

        Challenge 4 · Low contrast

        Can you read this? Check the ratio.

        This text is hard to read.

        Challenge 5 · Div as button

        Clickable with a mouse — is it keyboard accessible?

        Click me

        Challenge 6 · Unlabeled checkbox

        What does this checkbox control?

        Assertion Playground

        Pick a target element, pick an assertion, hit Evaluate — the exact same interpreter the Test Runner uses checks it against the live DOM. Change the element's state with the buttons and watch the same assertion flip from PASS to FAIL. The curated examples below include deliberate failures — that's the point. Learn the difference between exist and visible, why containhave.text, why a placeholder is not a value, and how negations (not.*) work.

        1 · Choose a target

        Change its state

        2 · Try these (includes deliberate failures)

        3 · Build an assertion

        Live widgets — the targets above

        Message
        Mini login
        Counter 0
        Text input
        Checkbox
        Removable element
        I am a removable element
        List (count)
        Color swatch

        Guided Challenges

        0 Elements

        Bug Hunt Mode

        Toggle ON to seed 12 real bugs across the industry & practice sections — then navigate, spot the bug, and click the buggy element to report it. Track found/total and reset anytime.

        Each challenge seeds a bug. Open the section, write an assertion that detects it (it should FAIL while the bug is live), then press Fix the bug and watch your assertion PASS. Solved challenges earn a badge.

        Best Practices Library

        0 Elements
        26 / 26 practices

        Rules of thumb for writing tests that survive refactors, run fast, and never flake. Click a category to browse, or type to search (also reachable via Ctrl+K → "Best Practices").

        Help center Studio v2.7

        What are you trying to test?

        Describe a workflow, component, error, or paste a data-testid. Get a live example and framework-ready code without leaving Studio.

        Popular
        Live contracts Three frameworks Browser-local progress
        Start with an outcome

        Get to a useful result in one click.

        Choose the closest task. You can switch domains or frameworks at any time.

        Updated for v2.7

        Guidance for the newest workflows.

        These focused guides open the live feature, list stable selectors, and include production-shaped examples.

        3 release guides
        API contractHosted endpoint workflows

        Build CRUD, GraphQL, assertion, collection, and failure-mode tests around the canonical base.

        https://app.uassert.com/api/users
        In-product helpContext-aware guidance

        Open Help from a header or card and keep the exact domain and selector contract in view.

        data-testid="header-help-docs"
        Test casesIntentional save validation

        Starter cases load quietly; title and step validation runs only after an explicit save.

        tc-new → tc-save
        Troubleshooting

        Diagnose the symptom before changing the test.

        Pick what failed. The runbook keeps the fix observable, reproducible, and tied to a real Studio contract.

        Live domain reference

        Choose a domain. Inspect its test contract.

        Guidance is generated from the controls that exist now—not from a screenshot that can drift out of date.

        52 documented
        Domain directoryFilter, then choose a domain
        Recipe lab

        Copy a reliable pattern, then adapt the outcome.

        Choose a framework once. Domain examples and all 107 reference guides update with it.

        PLAYWRIGHTStable selectors
        Why this is reliableThe selector describes the test contract instead of the page styling.
        Guided practice

        Learn by completing a real workflow.

        Each path opens live labs and keeps a browser-local checklist. Resume whenever you return.

        3 paths
        Searchable reference

        Step-by-step guidance for individual workflows.

        Groups are collapsed by default to reduce noise. Every guide includes exact selectors, practical advice, and copyable code.

        107 guides
        107 guides
        Support & handoff

        Still blocked? Share a reproducible report.

        Start with self-service guidance, then take a concise environment and reproduction summary to the community or uAssert team.

        Nothing uploads automatically
        01

        Prepare the handoff

        Copy version, route, selected domain, browser capabilities, viewport, theme, and saved-run counts.

        02

        Include a minimal reproduction

        • Expected result and actual result
        • Smallest repeatable sequence of actions
        • Domain route and relevant data-testid
        • Framework and exact error message

        Remove credentials and private fixture data before sharing.

        About Uassert Testbox Ecosystem

        Built for QA engineers, SDETs, and RPA Developers — a complete ecosystem for learning and practicing test automation.

        Learning & Courses

        Looking to learn Test Automation or Robotic Process Automation (RPA)? Dive into high-quality video tutorials, quizzes, and automation tool courses (like TagUI and Taskt).

        • Video tutorials for beginners to advanced
        • Quizzes to test your understanding
        • Automation tool courses (TagUI, Taskt)
        • Structured learning paths
        Go to uassert.com

        Practice Sandbox

        Already know the basics and want to practice? Our multi-domain testing playground offers 100+ complex web elements designed to hone your scripts without bot blockers.

        • 1,700+ testable elements with data-testid
        • 52 specialized testing domains
        • 12 real industry applications
        • No captchas, no bot blockers

        How We Got Here

        1

        Foundation — 18 core sections

        Forms, tables, interactions, banking, e-commerce, checkout and the power tools.

        2

        Hardening — accessibility & quality

        0 contrast failures, labeled inputs, focus traps, mobile-clean, the Accessibility training section.

        3

        The loop — runner, report, playground

        In-browser test runner, CI-style report with flake detection, assertion playground, help hub.

        4

        Real-world & breadth

        WebSocket, auth/sessions, uploads, visual regression, Web-Vitals, i18n/RTL, race lab, chaos, deeper DOM, print, sortable/resizable — 41 sections.

        5

        What’s next?

        Guided challenges, bug-hunt mode, a CI pipeline visualizer, shareable test links and more.

        Ready to put it to the test?

        Jump into the sandbox and write your first suite in under a minute — no setup, no sign-up.

        Browser-local · All data stays in your browser.