Playwright
10 articles
-
Waits in UI Tests: Why Tests Flake and How to Wait Right
The #1 cause of flaky tests is bad waiting. Why sleep() always loses, why implicit wait is treacherous, how to wait on a condition with explicit wait, what auto-wait changes in Playwright/Cypress, and how to rewrite a flaky test from a timer to a state.
-
Playwright vs Cypress vs Selenium in 2026: Which to Pick for E2E
A 2026 comparison of the three main E2E frameworks: Playwright (multi-browser, auto-waiting, Trace Viewer, the default for new projects), Cypress (best DX and time-travel debugging), and Selenium (the W3C standard, most languages and Grid). A difference matrix, who should pick what, and how not to get the choice wrong.
-
API Test Automation: Where to Start and What to Cover in 2026
API tests are the base of the pyramid: faster and more stable than UI, catching logic bugs earlier and cheaper. A first-person take: what to check beyond 200 (schema, error paths, authorization, boundaries, idempotency), data setup/teardown and isolation, validating the contract against OpenAPI/JSON Schema, and the 2026 toolset (Playwright request, pytest+httpx, REST Assured, Hurl, Schemathesis). With a good-API-test checklist.
-
Test Reporting in 2026: Allure vs ReportPortal vs Currents vs Native Playwright
"Green/red in the console" isn't a report. Your team and manager need run history, trends, flaky detection, and something they can share. A first-person take: Playwright's native HTML report and Trace Viewer, Allure, ReportPortal, and Currents/Cypress Cloud — what each gives you, what it can't do, and who it suits. With a decision matrix and a good-report checklist.
-
Locators That Survive a Redesign: A Selector Strategy for UI Automation
UI automation fails from brittle locators far more often than from real bugs. A first-person take: selector priority (role/label → data-testid → text → CSS → XPath last), why positional XPath and auto-generated classes are time bombs, how to agree on data-testid with developers, the dynamic-content and i18n traps, and how it maps across Playwright, Selenium, Cypress, and Appium. With a good-locator checklist and a list of anti-patterns.
-
UI Test Automation Architecture: Page Object and What Comes After It
A good automation suite is measured not by the number of tests but by the cost of change. A first-person take: what a Page Object actually is (it hides HOW behind WHAT), why assertions inside the object are an anti-pattern, the layers above Page Object (components, API setup, test data), where people over-engineer, and the rule of three against premature abstraction. Plus the test-of-a-healthy-test: it reads like a user scenario, with no selectors in the body.
-
Registration & login testing checklist — with a Playwright autotest for every item
Login is the first screen a user sees and a favorite spot for production incidents. The "checklist item → how to automate it" format: user enumeration via identical error messages, password reset with a single-use token, logout and the back button, HttpOnly/Secure cookies via context.cookies(), sessions across two tabs, mocking 429 for lockout UI, the storageState pattern so you don't log in inside every test — and what parts of auth should never go into e2e.
-
Search and filters testing checklist — and how to automate every item with Playwright
Search and filters are almost everywhere, and the bugs are always the same. A checklist of what to test (edge-case queries, debounce, request races, empty state, XSS, filters in the URL, resilience to backend errors, localization) — and for each item a real Playwright test via network interception with page.route. Plus what NOT to automate in e2e.
-
Playwright auto-wait: why you don't need explicit waits
If you came to Playwright from Selenium — your first instinct is to write waitForSelector before every action. 90% of the time it's redundant work: Playwright already waits for you.
-
Playwright: where to start and how to learn
Playwright became the web automation standard in 2023-2025. A curated set of resources to help you switch from Selenium/Cypress or start from scratch.