Multiple Element Filter
Hands-on with allInnerTexts(), locator.all() and filter({ hasText }) on a realistic login UI. Best place to start if you're new to Playwright locators.
32 hands-on pages built specifically to teach Playwright - locator strategies, tables, forms, frames,
widgets, network mocking, end-to-end projects, and the patterns you use in every real test suite.
Every interactive element ships with data-test, id and an accessible name.
Pick a track below, or scroll the full catalogue further down.
The three best entry points - one for learning locators, one for a guided project, one for everything together.
Hands-on with allInnerTexts(), locator.all() and filter({ hasText }) on a realistic login UI. Best place to start if you're new to Playwright locators.
Full TTACart-style e-commerce flow with 6 special test users, sort, cart, 2-step checkout. Write a complete Playwright suite against it.
Open TTACartStep-by-step walkthrough of a production-grade Playwright framework: TypeScript, Page Objects, fixtures, JSON/CSV data, Allure, Docker, sharded CI.
Open the tutorialClick a card below to jump to its full list further down the page.
Locators, web tables, dropdowns, comboboxes, sortable admin grids, the QA profile form, plus 10-row directories.
9 pagesIframes, multi-frame framesets, SVG, Shadow DOM, calendars, drag-drop, dialogs, hover/right-click menus, file upload + download.
14 pagesCookbooks you'll keep open while writing tests - assertions, test modifiers + hooks, data-driven + POM, JavaScript notes (14 sections), and the framework build-out.
5 referencesFull-flow apps for writing complete suites - TTACart (e-commerce), TTAStays (hotel booking), TTA AI Chat. All with rich data-test hooks.
The structured 90-day learning path that complements the hands-on practice pages below.
The full 8-module curriculum covering Playwright fundamentals, advanced locators, network interception, the test runner, page-object models, CI/CD, and debugging.
The original two — login UI and a 10-row employee directory.
Practise allInnerTexts(), locator.all(), footer link extraction, and filter({ hasText }) on a realistic login UI.
Practise XPath sibling selectors, CSS :has(), checkbox selection, and extracting row data from a realistic employee table.
Five practice pages — every page has visible locator markers and a collapsible Playwright solution.
Text inputs, radios, dropdown, date, checkboxes, tabs, upload and download — every standard input type in one page.
A minimal three-column table — Company / Contact / Country — with row-level data-testids for clean locator practice.
A six-column wide table for nth-child reads, multi-cell row extraction, and sibling-text queries.
Three custom dropdowns built without native <select>. Click-to-open, click-an-option pattern with .select-trigger markers.
Five combobox variants — single, multi, creatable, grouped, async — using familiar tta-rs__ class names.
24 employees, sortable columns with aria-sort, search/role/status filters, pagination, and a bulk-select bar.
Two-innings batting card. Pull every score with tbody td:nth-child(3), drop Extras + Total, find the highest run-getter.
An iframe form and a multi-frame frameset — practise frameLocator() and page.frames().
An iframe hosting a vehicle registration form for frameLocator(...), plus a link to the multi-frame frameset.
A classic <frameset> with three named frames (main, side, footer) for counting and iteration.
Three iframes nested three levels deep — #pact1 > #pact2 > #pact3. Practise chained frameLocator() with inputs at every depth.
Classic 8-frame nested <frameset> with names main, navbar, content, bot + 4 voids. Read frame[name='main'] h2, count via page.locator('//frame').all(), and click navbar links retargeting name='content'.
Inline SVG, web components with shadow roots, and a MakeMyTrip-style date range picker — three new locator-practice surfaces.
A shape gallery, an interactive bar chart, and a star rating control. Practise SVG selectors, getByRole with accessible names, and data-testid on SVG nodes.
Three custom elements (tta-input-card, tta-counter, tta-nested) with open shadow roots. Modern Playwright pierces shadow boundaries automatically.
A two-month range picker in the spirit of MakeMyTrip / SpiceJet. Each day is a role="button" with aria-label and data-date="YYYY-MM-DD".
4-column board with 8 draggable cards. HTML5-native DnD so locator.dragTo() works, plus a manual mouse-event recipe for stubborn libraries.
Trigger toasts in 4 flavours with configurable duration. Practise toBeVisible({ timeout }) and asserting they're gone.
Browser alert / confirm / prompt plus a custom modal that stacks. Practise page.on('dialog', ...).
Travel-style nav. Hover Add-ons to reveal Taxi/Hotel/Insurance/Meal/Wifi/Activities. Practise locator.hover() + nested hover.
Right-click target spawns ul.context-menu-list. Read items via allInnerTexts(), click any item by text. Practise click({ button: 'right' }).
Sign-up form driven entirely by page.keyboard. Practise pressSequentially, Tab order, Space to toggle, Enter to submit.
Mock APIs from your tests with page.route(). Stub success, force errors, slow things down, modify payloads.
A small product catalog backed by /api/products. The endpoint doesn't exist — install page.route() mocks to drive the UI.
Two pages that filled the old "Coming next" slot — now real, runnable, with hidden Playwright solutions.
Anchor target=_blank · window.open() · spawn 3 tabs · noopener variant. Practise context.waitForEvent('page') + Promise.all.
Single + multi-file inputs · drop-zone with hidden input · blob downloads + static link. Practise setInputFiles and waitForEvent('download').
Full-flow apps you can write a complete test suite against - register, login, checkout, payment, confirmation.
Full TTACart-style flow: login (6 special test users) → product list with sort → product detail → cart → 2-step checkout → order complete. Every interactive element has data-test, id and accessible name for Playwright. Special users trigger quirks (locked-out error, problem-user image swap, performance_glitch_user 4s delay, etc.).
Full booking flow: search by destination + dates → filter/sort 10 stays → hotel detail with 3 room types → register / login → guest details → dummy card payment → confirmation with TTA-XXXXXX reference. 200+ data-test hooks for Playwright.
ChatGPT-style chat UI calling an LLM via a Cloudflare Pages Function proxy (/api/chat). Students drive it with Playwright: type a prompt, click data-test="send-button", wait for data-test="message-assistant". Supports BYO API key via the settings drawer.
V2 of TTACart with the AI layer live in the browser. Five clickable demos calling the /api/chat proxy: failure RCA, self-healing locator, prompt-to-spec, smart test data, PR reviewer bot. Sticky control bar with model dropdown (8 options), temperature slider, 50k token budget chip + BYO-key drawer.
Reference pages with code patterns you'll lift into your own framework.
Cookbook covering test.skip / slow / fixme, test.step, hooks, describe.serial, data from JSON · CSV · Faker, plus a reusable UtilElementLocator helper.
14-section reference covering V8 engine, scoping, operators, control flow, loops, objects/JSON, functions, arrow / IIFE / callbacks, plus 140+ assignment prompts. Hand-drawn diagrams for the tricky bits.
11 patterns: Faker single / util / loop / domains, inline array, JSON, CSV, XLSX, hooks, POM + DDT, and 5 page-object classes wired through UtilElementLocator. Sample register.csv / register.json downloads + client-side XLSX generator.
Step-by-step walkthrough of the TTA Advance Playwright Framework - TypeScript, Page Object Model, custom fixtures, JSON/CSV test data, environment-aware config, a custom HTML reporter, Dockerfile, and a sharded 4-way GitHub Actions workflow with merge-reports. Every snippet copy-pasteable and targets TTA practice pages.
V2 of the framework tutorial. Adds an 11th box for the AI layer, five deep cards (one per AI feature) with per-feature mermaid diagrams, a multi-model adapter for 7 providers (DeepSeek default + Anthropic / OpenAI / Gemini / Mistral / Ollama / LM Studio) and a privacy + cost guards section. Pairs with the live demo at /playwright/ttacart-ai/.
Local review paths: /playwright/index.html, /playwright/multiple_element_filter.html, /playwright/webtable.html, /playwright/tables/*.html, /playwright/frames/*.html, /playwright/widgets/*.html, /playwright/network/*.html.
Nothing in this batch is committed or deployed until you ask for the upload.