Stop 07 · Web Automation TestingProjects · 1/1

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.

The purple blob fixes a cricket net frame beside a bowling machine and a stack of ball crates.

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

Pick app
Set up
Pages
Tests
Reports
CI

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

python
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_url

1/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

~45 min

Quick check

Why should each test set up its own state instead of relying on the test before it?

Go deeper

  1. 1Choose a stable practice web app (many exist specifically for automation practice).
  2. 2Build using Page Object Model with at least 8-10 tests covering key user flows.
  3. 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.

Download
InsideEdge