Write browser tests. See which bugs they catch.

Practise with Playwright, Cypress or Selenium in your browser. Write a test for a working practice app. Nothing to install.

A passing test can still miss a bug. Press Verify to check it. Your test runs against app copies with something broken on purpose. See which required bugs it caught or missed.

No account needed to run or verify tests. Use a laptop or desktop.

how-it-works

How your test is checked

Press Run tests to check the working app. Press Verify to check for a bug added on purpose.

choose-a-problem

Choose a problem

Each problem gives you a practice app and tells you what to check. Test a login, a shopping cart or a contacts page.

loginshopping cartcontacts
NimbusSELECTED

SaaS login & auth

async sign-in · validation errors

Terra Supply

E-commerce store

cart state · full checkout

PipelineHQ

CRM dashboard

save contacts · edit contact details

then pick:PlaywrightCypressSelenium

write-it-yourself

Write the test in the browser

Start with the problem's code and add your checks. The editor suggests code for your framework. You choose what your test does and checks.

PlaywrightCypressSelenium
example.spec.tsTypeScript · typings loaded
1  test('adds product to cart', async ({ page }) => {
2    await page.goto('/');
3    await page.getBy
getByRole(role, options?) → Locator
getByLabel(text) → Locator
getByTestId(id) → Locator
getByText(text) → Locator
Locate by role and accessible name. The way users see the page
4  });
⌘⏎ runautocomplete: framework APIsame shortcuts as your day job

watch-it-run

Watch the test run

Press Run tests to check the working app. Watch the test use the page. Read the action log to find a failed step.

app previewaction log
pipelinehq.app
Add contact
[ step log ]
✓ page.goto('/')
✓ getByTestId('search').fill(…)
getByRole('button').click() ← highlighted
· expect(toast).toBeVisible()

wrong selector? you see it match the wrong element, live

get-graded

Check whether your test catches the bug

Press Verify. Your test must pass on the working app first. Then it runs against app copies with something broken on purpose. It checks each copy separately. If your test still passes, it missed that bug. Read the result to see what it missed.

bugs caughtbugs missed

Example of how Verify works

Working login

The correct email and password should sign you in. A wrong password should be rejected.

Broken version: any password is accepted

A test using only the correct password can still pass. It misses the broken password check.

Add a check that a wrong password is rejected. Verify again to check your changes.

frameworks

Choose a framework to practise

Use the framework you need for your work or interview. Each has practice problems with verification.

OUR PICK FOR BEGINNERS

Playwright

Start here if you're new

Open the login problem with a Playwright starter test. Check that a wrong password is rejected.

Try Playwright →

Selenium

Practise with Selenium

Use Selenium with JavaScript to test the login. Check that a wrong password is rejected.

Try Selenium →

Cypress

Practise with Cypress

Use Cypress to test the shopping cart. Check that adding a product updates the cart count.

Try Cypress →

Read the Playwright vs Cypress comparison for differences in how you write and run tests.

start-here

Choose your next step

manual-tester

Start writing automated tests

Read the Playwright tutorial to learn how a browser test works. Follow the examples, then try the login problem.

explained code examples

Start the Playwright tutorial →

interview-soon

Prepare for a QA interview

Answer questions about waits, selectors and flaky tests. Read the explanation for each answer. Choose coding tasks by framework and level.

questions and coding tasks · by level

Open interview preparation →

switching-tools

Practise another framework

Choose a practice app and a framework you want to learn. Write and run your own tests. Free-play has no graded task.

practice without grading

Open free-play practice →

Review your own test code with the free test review. It checks your code without running it. No account needed.

try-one-now

Try an interview practice question

This question comes from the software development engineer in test (SDET) track. Pick an answer to see the explanation.

Read these guides for more explanation:

SDET track · question 01

Your team has 900 UI end-to-end tests and 100 unit tests. The suite takes 3 hours and fails randomly. What is the main structural problem?

Check whether your test catches the bug.

Choose a problem and read what your test must check. Write your test, then press Verify. See which required bugs it caught or missed.

Choose a practice problem →

Your code and progress are saved in your browser.

QA leads and engineering managers can also review test evidence during hiring. Explore TestAcademy for hiring teams →