⚡ Local SDET practice ground — Selenium · Playwright · Appium · API testingnavtutorial.com ↗
Frameworks & Guides
All guides ← Hub
Start here

How to use this hub

Serve the hub, pick a framework, and copy the examples — each one targets a real page and real selectors in this hub, so it runs as-is once the site is up on localhost:8000.

Serve the hub first. From the folder that contains index.html, run a static server so every page has a real URL (some browsers restrict things on file://):
cd automation-practice-hub
python -m http.server 8000
# open http://localhost:8000
cd automation-practice-hub
npx serve -l 8000
# or: npx http-server -p 8000
cd automation-practice-hub
php -S localhost:8000
# open http://localhost:8000
SPA routing note. The sub-sites use hash routes (e.g. #inventory, #pim) and keep login state in memory. Deep-linking straight to a gated route won't work — your script must log in first, then interact. That's realistic and intentional.

Pick a guide

Selenium

WebDriver in Java & Python. Waits, alerts, frames, windows, drag & drop — mapped to the hub's selectors.

Open Selenium guide

Playwright

Modern JS/TS & Python. Auto-waiting, getByTestId, dialogs, frame locators, API testing built in.

Open Playwright guide

Appium

Mobile-web automation against the hub on a real device/emulator, plus how native testing differs.

Open Appium guide

API Testing

Run the included mock server, then hit it from REST Assured, Playwright, Python or Postman. Interactive playground included.

Open API guide

How the selectors work

Every interactive element carries a stable id and a data-test attribute. Prefer data-test — it's designed to survive restyling. In CSS-selector form that's [data-test='login-button']; Playwright can address it directly with getByTestId('login-button') once you point its test-id attribute at data-test (shown in the Playwright guide).