Foundations
Locators, assertions, forms, and waits built around accessible contracts.
Coming soonTypeScript first · Python and Java next
Follow a progressive route from semantic locators and deterministic waits to API-aware, session-safe, production-minded browser tests.
Learning path
Locators, assertions, forms, and waits built around accessible contracts.
Coming soonFocused controls and documented edge cases before they appear in an application.
Coming soonAuthentication and ecommerce flows that connect browser, API, and network testing.
Coming soonReusable system preview
PRACTICE FIXTURE — intentionally built for automation practice
The first-class path with complete starter tests and examples.
Secondary examples follow the same observable fixture contracts.
Secondary examples preserve the same stable URLs and outcomes.
import { test, expect } from '@playwright/test';
test('opens the practice hub', async ({ page }) => {
await page.goto('/practice/');
await expect(page.getByRole('heading', { name: 'Testheon Practice Lab' })).toBeVisible();
});Prefer role and accessible-name locators, assert the user-visible outcome, and keep the exercise route stable. The same contract can then move into a realistic app flow.
Component Labs
Learn one interaction contract at a time, then carry the same controls into realistic applications.
FX-INPUT-001
Native, masked, dynamic, validated, debounced and suggested inputs.
FX-BUTTON-001
Actions, gestures, delays, DOM replacement and scoped duplicate labels.
FX-CHOICE-001
Groups, indeterminate state, hierarchy, generated and conditional options.
FX-DROPDOWN-001
Native and ARIA selection plus dependent and paged API options.
FX-FORM-001
Client and API validation across six believable form workflows.
FX-LOCATOR-001
Semantic selection, filtering, position and frame-free scoping.
FX-TABLE-001
Sorting, search, filters, pagination, editing, row actions, virtualization and nested data.
FX-LIST-001
Search timing, autocomplete, combined filters, load more and cursor-backed infinite scroll.
FX-WAIT-001
Auto-waiting, web-first assertions, deterministic delays, requests, lazy content and progress.
FX-DOM-001
Generated selectors, seeded order, duplicate text, replacement and API-rendered elements.
FX-DIALOG-001
Browser dialogs, accessible application modals and semantic toast notifications.
FX-INTERACT-001
Hover, pointer gestures, scrolling, focus order, shortcuts, listboxes and autocomplete.
FX-DATETIME-001
Native and custom dates, fixed timezones, sliders, linked values and async progress.
FX-FRAME-001
Same-origin iframes, nested documents, tabs, popups and parent communication.
FX-SHD-001
Open, closed, nested and slotted component boundaries with truthful locator guidance.
FX-VIS-001
Frozen v1 and v2 release states for deterministic screenshot assertions.
FX-MOCK-001
Same-origin synthetic request interception, fulfilment, failures, bounded delays, retries and contract variation.
FX-FILE-001
Private safe uploads, sanitized previews, rejection paths and deterministic downloads.
FX-DRAG-001
HTML5 and pointer dragging, keyboard sorting, file drops and API-backed Kanban.
FX-CONTEXT-001
Cookies, storage, permissions, offline requests and responsive breakpoints.
FX-A11Y-001
Keyboard-ready controls and isolated, documented accessibility anti-patterns.
FX-AUTH-001
Public demo users, password reset, secure sessions, roles, bearer tokens and API keys.
Index lesson
Global setup, storageState, role projects, API login, logout and deterministic expiry.
FX-STORE-001
Catalogue, product, guest cart, authenticated checkout, orders, network failures and visual mode.
Learning objective
Follow a progressive Playwright path from semantic locators and deterministic waits to API-assisted, session-safe end-to-end testing.
Continue learning