Learn QA. Practise on real bugs.
Practical QA guides, exercises with real bugs, and tools for your next test.
playwright · from our own pipeline
Playwright "page.goto: net::ERR_ABORTED; maybe frame was detached?": What Aborted the Navigation
Playwright's "page.goto: net::ERR_ABORTED", reproduced nine ways on a one-file local app and run in Chromium, Firefox and WebKit: a 204 response, two navigations at once, a test timeout, a page closed mid-load, route.abort() and a removed iframe. Why a download now says "Download is starting" instead, where the "maybe frame was detached?" suffix comes from, and the fix for each cause.
Latest
All articles →- Cypress "failed because this element is detached from the DOM": The Messages That Replaced It, and the Fixes
9 MIN · cypress
- Element Click Intercepted: "Other element would receive the click" in Selenium, and "intercepts pointer events" in Playwright
12 MIN · selenium
- Playwright "Element is not attached to the DOM": When Locators Avoid It, and When They Don't
11 MIN · playwright
- Playwright "Executable doesn't exist": Why the Browser Revision in the Path Changed, and How to Fix It
7 MIN · playwright
- Playwright "Target page, context or browser has been closed": What Closed It, and How to Fix It
12 MIN · playwright
Practice · the free challenge
Would your AI-generated tests catch these bugs?
Inspect a passing test suite. Find what it misses. Improve it with the AI tools you already use.
Try the free challengeMore practice
Practice lab →- Playwright practice lab
Run your own suite against a shop with ten seeded bugs and see which ones it catches.
- Why did this test pass?
Three case files from recorded runs: predict, diagnose, repair.
- SQL lab
Write SQL checks against a shop database with seeded bad rows.
- Test design questions
Boundary values, partitions, decision tables and state transitions, every answer explained.
All free and ad-free. Nothing to install to start.
The workbench
Free tools. No sign-up. Nothing leaves your browser.
Playwright test reviewer
Paste a test. Get the questions a careful reviewer would ask — fixed waits, missing awaits, assertions that can never fail — each mapped to its ESLint rule.
HIGH L9 Fixed wait (waitForTimeout) HIGH L11 Missing await MED L5 Waiting for networkidle LOW L6 CSS or XPath locatorReview a test
Bug report grader
Paste a defect report and see what a developer will ask for before they can fix it. Ten weighted checks, severity and priority, Jira export.
✓ Steps to reproduce 20/20 ✓ Expected vs actual 15/15 ✗ Evidence attached 0/15 ! Tone 5/10 Score 78/100Grade a report
Start here
QA Foundations, in 5 parts
01
What Is Software Testing? A Beginner's Guide With a Hands-On Exercise6 MIN
02
How to Write Effective Test Cases: Worked Examples on a Real Checkout Form9 MIN
03
How to Write High-Quality Bug Reports8 MIN
04
Understanding the Test Pyramid: What the Published Numbers Actually Say7 MIN
05
How to Run Automated Tests in CI/CD with GitHub Actions: From One Job to Shards9 MIN
Not an engineer?
Quality for product owners
You do not run the tests, and you decide most of what they will find: the criteria, the definition of done, the release call, and what happens to what got through. Same material, organised by the question you arrived with.
Open the product owner hub →Browse by topic
Tools we reference most
All 28 →| Playwright | Microsoft's end-to-end framework with auto-waiting, isolated browser contexts, a trace viewer, and built-in parallelism across Chromium, Firefox, and WebKit. | Open source |
|---|---|---|
| Cypress | JavaScript testing framework that runs alongside your app, with time-travel debugging, network stubbing, and component testing. | Open source |
| Selenium | The W3C WebDriver reference implementation, with bindings for Java, Python, C#, JavaScript, and Ruby, plus Grid for distributed runs. | Open source |
| BrowserStack | Cloud of real desktop browsers and mobile devices for manual and automated testing, with Selenium, Playwright, Cypress, and Appium support. | Free trial |
How this site works
Dated, not evergreen
Every article shows when it was published, when it was last updated, and what changed. Articles whose steps we ran say which versions they were tested with.
Checked, then cited
Every code sample is syntax-checked in CI, complete Java examples are compiled, and Playwright examples must pass our own test reviewer. Articles end with links to official documentation.
Corrections in public
Spotted something wrong? Every article has a report link, and the fix appears in that article’s revision history.