🧪 QA Automation Practice · Updated 2025
Master Automation Testing
Fresher → QA Lead
31+ exercises across 10 topics -- step-by-step instructions, starter code, hints & timers. Structured by career level so you always know what to practise next.
31+
Exercises
10+
Topics
5
Career Levels
3
Difficulty Bands
Progress
0%
·
0 / 0 done
0 Easy
0 Med
0 Hard
Exercise
Diff
Selenium (8)
Launch Browser and Open URL
Set up ChromeDriver and launch Chrome browser, then navigate to a URL.
Easy
Find Element by ID, Name, ClassName
Locate elements using the 3 simplest locator strategies: ID, Name, ClassName.
Easy
XPath Strategies -- Absolute, Relative, Dynamic
Master all key XPath strategies for locating elements reliably.
Easy
Explicit Wait -- WebDriverWait & ExpectedConditions
Replace all Thread.sleep() calls with smart explicit waits.
Medium
Handle Dropdowns -- Select Class
Interact with HTML <select> dropdowns using the Select utility class.
Easy
Handle Alerts, Confirms and Prompts
Switch to and interact with browser-native JavaScript alert dialogs.
Medium
Page Object Model -- Build LoginPage & HomePage
Refactor raw test code into a proper Page Object Model structure.
Medium
Cross-Browser DriverFactory
Create a factory that returns any browser driver from a config parameter.
Hard
TestNG (5)
TestNG Lifecycle -- @Before/@After Annotations
Understand and implement the complete TestNG execution lifecycle.
Easy
@DataProvider -- Data-Driven Login Test
Run the same test with multiple data sets using @DataProvider.
Medium
Custom ITestListener -- Screenshot on Failure
Implement a TestNG listener that auto-captures screenshots when tests fail.
Hard
IRetryAnalyzer -- Auto-Retry Flaky Tests
Automatically retry failed tests up to N times to handle flaky test scenarios.
Hard
Parallel Execution with ThreadLocal Driver
Run tests in parallel without browser conflicts using ThreadLocal.
Hard
Cypress (3)
First Cypress Test -- Setup and Visit
Install Cypress, write your first test, and understand the test runner.
Easy
cy.intercept() -- Stub API Responses
Intercept network requests and replace them with fixture data.
Medium
Custom cy.login() Command
Create a reusable login command to avoid duplicating login steps.
Medium
Playwright (2)
First Playwright Test & Config Setup
Install Playwright, configure it, and write your first passing test.
Easy
Playwright Fixtures -- Shared Auth State
Log in once globally and share the authenticated state across all tests.
Hard
API Testing (4)
First REST Assured Test -- GET Request
Write your first REST Assured test using the Given-When-Then fluent pattern.
Easy
POST Request -- Create a Resource
Send a POST request with a JSON body and validate the created resource.
Medium
Schema Validation with JSON Schema
Validate the complete API response structure against a JSON Schema file.
Medium
Chain API Calls -- Create, Read, Delete
Write an end-to-end API test that creates a resource, reads it back, and deletes it.
Medium
Cucumber (2)
Write a Complete Feature File
Write a well-structured Gherkin feature file with Background, Scenarios, and Examples.
Easy
Step Definitions + Hooks + PicoContainer
Implement step definitions that share state via dependency injection.
Hard
Framework (2)
Build a Complete Hybrid Framework from Scratch
Design and build a production-grade test automation framework combining POM, data-driven, and config-driven approaches.
Hard
Data-Driven Testing with Apache POI (Excel)
Read test data from an Excel file and feed it into TestNG @DataProvider.
Hard
CI/CD (2)
GitHub Actions -- Run Tests on Every PR
Create a GitHub Actions workflow that runs your test suite on every pull request.
Medium
Docker Compose -- Selenium Grid + Tests
Spin up Selenium Grid using Docker Compose and run tests against it.
Hard
Performance (1)
JMeter Load Test -- Design and Execute
Create a complete JMeter test plan for load testing a web API.
Medium
SQL for QA (2)
SQL Test Verification Queries
Write SQL queries to verify data created or modified by your UI/API tests.
Easy
🏆 JDBC -- Database Assertions in Java
Build a DBUtil class that lets your test code query the database directly.
Hard
🎯 Guided Order
Recommended Learning Path
Follow this sequence to build skills in the right order -- no gaps, no wasted time.
Fresher
Junior
Mid
Senior
Lead
Phase 1 · Weeks 1-4
Foundation -- Your First Automated Test
1
Launch Browser & Open URL
2
Find Elements -- ID, Name, Class
3
XPath Strategies
4
Handle Dropdowns
5
TestNG Lifecycle Annotations
6
First REST Assured GET Test
7
Write Your First Feature File
8
SQL Test Verification Queries
🎯 Milestone: Write a complete login test that clicks, fills, and asserts
↓
Phase 2 · Weeks 5-10
Core Skills -- Waits, POM, API & BDD
9
Explicit Wait & ExpectedConditions
10
Handle Alerts & Popups
11
@DataProvider -- Data-Driven Tests
12
Page Object Model (POM)
13
POST Request -- Create Resource
14
First Cypress Test
15
First Playwright Test
16
Build Hybrid Framework
🎯 Milestone: Complete POM-based framework running 10+ tests
↓
Phase 3 · Weeks 11-18
Intermediate -- Listeners, CI/CD, Advanced API
17
Custom ITestListener
18
IRetryAnalyzer -- Auto-Retry
19
JSON Schema Validation
20
Chain API Calls -- CRUD Lifecycle
21
cy.intercept() -- Stub APIs
22
Step Defs + Hooks + PicoContainer
23
Data-Driven with Excel (POI)
24
GitHub Actions CI Workflow
🎯 Milestone: Tests running automatically in GitHub Actions on every PR
↓
Phase 4 · Weeks 19-28
Advanced -- Parallel, Cross-Browser, Performance
25
Parallel Execution + ThreadLocal
26
Cross-Browser DriverFactory
27
Playwright Global Auth State
28
Docker Compose + Selenium Grid
29
JMeter Load Test
30
JDBC -- DB Assertions in Java
🎯 Milestone: 4-browser parallel run in Docker with HTML report published to CI
Ready to Level Up?
Follow the complete QA Automation roadmap, track your progress, and crack your next SDET interview.