How to pick a code testing website
A good code testing website for automation practice is stable (it doesn't change every week), public (no account or payment), and built to be tested, with realistic problems such as dynamic content, frames, logins and APIs. Every site below meets those rules. Pick by what you want to practise: single UI problems, full user flows, or APIs.
UI practice sites
1. the-internet
the-internet.herokuapp.com has dozens of small pages, each with one classic automation problem: checkboxes, dropdowns, iframes, JavaScript alerts, file upload, hovers, dynamic loading and basic auth. It's the best place to practise one technique at a time.
2. UI Testing Playground
uitestingplayground.com is built around the traps that cause flaky tests: dynamic IDs, delayed elements, hidden layers, buttons that move, and loading delays. Good for seeing how auto-waiting handles timing.
3. Playwright TodoMVC demo
demo.playwright.dev/todomvc is the to-do app the Playwright team uses in its own examples. Small, fast and predictable, so it's ideal for your first tests.
4. DemoQA
demoqa.com covers forms, widgets, drag and drop, tables and a small bookstore app. It shows ads, so it's also good practice for dealing with overlays.
Demo shops and full apps
5. SauceDemo
saucedemo.com is a small store with a full login-to-checkout flow. Its test users behave differently: standard_user works normally, locked_out_user is blocked, and problem_user and performance_glitch_user have deliberate bugs and delays. Elements carry data-test attributes, the way real teams make apps testable.
6. Automation Exercise
automationexercise.com is a larger e-commerce site with sign-up, cart, checkout and contact forms. It publishes a list of test cases to automate and a set of practice APIs, so you can test the UI and the API of the same app.
7. ParaBank
parabank.parasoft.com is a demo bank from Parasoft with registration, accounts, transfers and bill pay. It's closer to the multi-step business flows found in finance jobs.
API practice sites
8. Restful-Booker
restful-booker.herokuapp.com is a hotel booking API made for testing practice. It has token auth, create, read, update and delete, and it resets regularly. The best free API for portfolio projects.
9. JSONPlaceholder
jsonplaceholder.typicode.com is a fake REST API with posts, comments and users. Reads return real data; writes are faked and not saved. Perfect for your first API assertions.
10. Automation Exercise API list
The Automation Exercise API list documents endpoints for products, brands, search and user accounts, with expected responses, so you can write API tests for the same shop you automated in the UI.
Practice websites compared
| Site | Type | Best for practising |
|---|---|---|
| the-internet | UI | One technique at a time |
| UI Testing Playground | UI | Flaky-test traps, timing |
| Playwright TodoMVC | UI | Your first tests |
| DemoQA | UI | Forms, widgets, overlays |
| SauceDemo | UI flow | Login to checkout, test users |
| Automation Exercise | UI + API | Larger e-commerce flows |
| ParaBank | UI flow | Banking, multi-step forms |
| Restful-Booker | API | Auth + full CRUD |
| JSONPlaceholder | API | First API assertions |
| Automation Exercise API | API | API and UI of one app |
A Playwright starter test for UI and API
Install Playwright with npm init playwright@latest, then drop this file into tests/:
const { test, expect } = require('@playwright/test'); test('the-internet: dynamic loading', async ({ page }) => { await page.goto('https://the-internet.herokuapp.com/dynamic_loading/1'); await page.getByRole('button', { name: 'Start' }).click(); // No sleep: the assertion retries until the text appears. // This page loads for ~5s, longer than the 5s default, so raise the timeout. await expect(page.getByText('Hello World!')).toBeVisible({ timeout: 10_000 }); }); test('SauceDemo: locked-out user sees an error', async ({ page }) => { await page.goto('https://www.saucedemo.com/'); await page.getByPlaceholder('Username').fill('locked_out_user'); await page.getByPlaceholder('Password').fill('secret_sauce'); await page.getByRole('button', { name: 'Login' }).click(); await expect(page.locator('[data-test="error"]')).toContainText('locked out'); }); test('JSONPlaceholder: read a post', async ({ request }) => { const res = await request.get('https://jsonplaceholder.typicode.com/posts/1'); await expect(res).toBeOK(); expect(await res.json()).toMatchObject({ id: 1, userId: 1 }); });
Run npx playwright test --ui to watch each step and inspect the page. For the API side in depth, see the Playwright API testing guide.
A practice route that builds real skill
- the-internet: one test per page until locators, waits, frames and alerts feel routine.
- SauceDemo: automate the full checkout, then refactor it into page objects.
- Restful-Booker: CRUD and auth tests with the request fixture.
- Automation Exercise: combine both, creating data through the API and checking it in the UI.
- CI: run the whole thing in GitHub Actions. Now it's a portfolio, not just practice (portfolio ideas).
Want the route with a teacher? The Playwright + Claude AI course follows this order, in JavaScript, and adds Claude AI to help you write and debug tests.
Practice etiquette
These sites are free because their maintainers keep them running. Don't load-test them, keep loops small, run your suite on demand rather than every few minutes, and never put real personal data or passwords into them.
Frequently Asked Questions
What is the best website to practise automation testing?
For UI practice, the-internet (the-internet.herokuapp.com) covers single problems like dropdowns, frames, alerts and dynamic loading, and SauceDemo gives you a full login-to-checkout flow. For API practice, Restful-Booker has auth and full CRUD.
Can I use these practice websites with Playwright and Selenium?
Yes. They are ordinary public websites and APIs, so any automation tool works, including Playwright, Selenium, Cypress and WebdriverIO.
Is it legal to run automated tests against these websites?
These sites were published for testing practice, so running normal test suites is the intended use. Keep it reasonable: don't load-test them, don't run huge loops, and follow any rules posted on the site.
Where can I practise API testing for free?
Restful-Booker, JSONPlaceholder and the Automation Exercise API list are free and need no sign-up. JSONPlaceholder fakes writes, so a POST returns a result but nothing is saved.
How should I practise test automation as a beginner?
Start with one problem at a time on the-internet, then automate a full flow on SauceDemo, then add API tests on Restful-Booker. Put everything in one GitHub repository with a CI workflow, so your practice also becomes a portfolio.
Do I need to know coding to use a code testing website?
You need basic JavaScript, Python, Java or C# for a code-based tool. Playwright's codegen can record your clicks into a starting script, which helps beginners see how the code maps to actions.
Playwright + Claude AI Course
Stop Guessing What to Practise Next.
Practice sites are great, but without a plan most people repeat the easy parts and skip the hard ones. This course teaches Playwright in JavaScript in a structured order, from first test to Page Object Model, API testing and GitHub Actions CI, then adds Claude AI and the MCP Server. Finish with the practice tests to check what stuck. Rated 4.5★ from 130+ ratings, 510+ students.
- Structured path from first test to CI
- UI and API testing with one tool
- Claude AI + Playwright MCP Server test generation
- Optional practice tests to find your gaps