Build an Automation Framework for a Sample Web App
Part of the QA Testing Roadmap
In short
This is the project that goes on your CV. A small, clean framework with page objects, data, reports and CI shows recruiters you can do the actual job.
The practice project for this phase — build a structured automation framework (using Page Object Model) with a meaningful set of tests against a real or practice web application.

Think of it like this
Setting up cricket nets
Before practice, someone sets up the nets, the bowling machine and the ball crate so every player can just walk in and bat. Your framework is that setup: once it's ready, adding a new test takes minutes.
Watch it happen
Build plan, week by week
1/6Choose a free practice app like saucedemo.com and list ten user flows worth testing.
The big ideas
What you need to know
Clear structure
pages for page objects, tests for tests, testdata for inputs. Anyone should find things fast.
Fixtures for setup
One fixture opens the browser before each test and quits it after. No copy-pasted setup.
Data outside code
Users and expected values in a CSV or JSON file, not hard-coded in tests.
A good README
How to install, how to run, what's covered. Recruiters read this first.
See it in code
Walk through the code
1# tests/conftest.py2import pytest3from selenium import webdriver4 5@pytest.fixture6def driver():7 drv = webdriver.Chrome()8 yield drv # the test runs here9 drv.quit() # runs after the test, pass or fail10 11# tests/test_login.py12from pages.login_page import LoginPage13def test_standard_user_sees_products(driver):14 driver.get("https://www.saucedemo.com/")15 LoginPage(driver).login("standard_user", "secret_sauce")16 assert "inventory" in driver.current_url1/3A pytest fixture creates the browser. Any test that asks for driver gets one.
The heart of a pytest framework: a shared fixture plus a test that uses a page object.
Save yourself the pain
Common mistakes
Oops
Writing 50 tests before the structure, then refactoring everything.
Do this instead
Get one test running end to end through the full structure first, then add more.
Oops
Making every test depend on the previous one, like 'login' then 'add to cart'.
Do this instead
Each test sets up its own state, so tests can run alone and in any order.
Your mission
Milestone 1: one test through the full framework
Quick check
Why should each test set up its own state instead of relying on the test before it?
Go deeper
- 1Choose a stable practice web app (many exist specifically for automation practice).
- 2Build using Page Object Model with at least 8-10 tests covering key user flows.
- 3Include a README explaining your framework structure and how to run the tests.
Stuck on this topic? Ask an Insider
Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.