With a year or two of experience, your projects should show framework thinking, not just scripts. These automation projects cover the Page Object Model, Cucumber BDD, REST Assured API suites, data-driven testing and reporting, each with instructions and enhancement ideas.

Automation projects by level: Freshers · 1–2 years · 2–3 years · 3–5 years · Domain projects

These projects introduce Page Object Model, BDD with Cucumber, REST API testing, and data-driven testing — core skills for junior SDETs.

Project 11: Page Object Model (POM) Framework from Scratch

DifficultyIntermediate
Tech StackSelenium WebDriver, Java, TestNG, POM
Time Needed5–7 days
Resume ValueCore framework design skill — asked in every interview

Objective

Build a complete POM framework for an e-commerce website with proper separation of test logic, page objects, and utilities.

Folder Structure

  • src/main/java/pages/ — Page Object classes (LoginPage, HomePage, CartPage, CheckoutPage)
  • src/main/java/utils/ — Utilities (DriverFactory, WaitUtils, ScreenshotUtils, ConfigReader)
  • src/test/java/tests/ — Test classes (LoginTest, CartTest, CheckoutTest)
  • src/test/resources/ — testng.xml, config.properties

Step-by-Step Instructions

  • Step 1: Create LoginPage.java — declare WebElements using @FindBy annotations
  • Step 2: Use PageFactory.initElements(driver, this) in the constructor
  • Step 3: Create action methods: login(username, password), getErrorMessage()
  • Step 4: Create HomePage.java with methods: searchProduct(), getProductCount(), addToCart()
  • Step 5: Create DriverFactory.java with getDriver(browser) method — singleton pattern
  • Step 6: Create config.properties with baseUrl, browser, timeout values
  • Step 7: Create ConfigReader.java to load .properties file using FileInputStream
  • Step 8: Create BaseTest.java with @BeforeMethod calling DriverFactory.getDriver()
  • Step 9: Write LoginTest.java extending BaseTest — call LoginPage methods, Assert results
  • Step 10: Run via testng.xml — verify all tests pass with ExtentReport generated

Key Design Principles

  • No direct WebDriver calls in test classes — only page object methods
  • All locators defined in page classes, not in tests
  • Reusable utility methods shared across all tests
Advertisement

Project 12: BDD Framework with Cucumber and Gherkin

DifficultyIntermediate
Tech StackSelenium, Java, TestNG/JUnit, Cucumber, Gherkin, Maven
Time Needed7–10 days
Resume ValueBDD is required in most SDET job descriptions

Objective

Build a BDD test framework for a banking application using Cucumber, with feature files written in plain English and step definitions in Java.

Step-by-Step Instructions

  • Step 1: Add Cucumber dependencies to pom.xml — cucumber-java, cucumber-testng, cucumber-junit
  • Step 2: Create feature file: src/test/resources/features/Login.feature
  • Step 3: Write Gherkin scenarios using Given/When/Then syntax
Example: Given the user is on the login page / When they enter valid credentials / Then they should see the dashboard
  • Step 4: Create StepDefinitions.java and implement each Gherkin step with @Given/@When/@Then annotations
  • Step 5: Create TestRunner.java with @CucumberOptions — features path, glue path, plugin for reports
  • Step 6: Implement Background keyword for shared preconditions across scenarios
  • Step 7: Use Scenario Outline with Examples table for data-driven BDD tests
  • Step 8: Add tags (@smoke, @regression) to scenarios and configure runner to filter by tag
  • Step 9: Generate Cucumber HTML report and Pretty console report
  • Step 10: Integrate POM classes inside step definitions to maintain separation

Sample Feature File Content

Feature: User Login

@smoke
Scenario: Successful login with valid credentials
  Given the user navigates to the login page
  When the user enters username 'admin' and password 'password'
  Then the user should be redirected to the dashboard
  And the welcome message should be visible

Project 13: REST API Testing with Postman & RestAssured

DifficultyIntermediate
Tech StackRestAssured, Java, TestNG, JSONPath, Postman
Time Needed5–7 days
Resume ValueAPI testing is essential for all modern SDET roles

Objective

Test a public REST API (https://reqres.in) covering all CRUD operations — GET, POST, PUT, PATCH, DELETE with schema validation and JSONPath assertions.

Step-by-Step Instructions

  • Step 1: Add RestAssured dependency to pom.xml
  • Step 2: Explore API on Postman first — understand endpoints, request/response structure
  • Step 3: Create ApiBaseTest.java — set baseURI = "https://reqres.in/api" using RestAssured.baseURI
  • Step 4: GET Test — get all users, assert statusCode 200, assert body JSON has 'data' array, extract user IDs using JSONPath
  • Step 5: POST Test — create new user with JSON body {name: 'Asha', job: 'SDET'}, assert 201 status, assert response has 'id' field
  • Step 6: PUT Test — update user with full body replacement, assert 200 status, assert updated fields
  • Step 7: PATCH Test — partial update, assert only changed field is updated
  • Step 8: DELETE Test — delete user, assert 204 No Content status
  • Step 9: Add Authentication header test — pass token in header, assert 200 vs 401 without token
  • Step 10: Add JSON Schema validation using hamcrest matchers

Key RestAssured Syntax to Learn

  • given().header().body() — request specification
  • when().get()/post()/put()/delete() — HTTP method
  • .then().statusCode().body() — response validation
  • extract().path("data[0].id") — JSONPath extraction

Project 14: Data-Driven Testing with Apache POI

DifficultyIntermediate
Tech StackSelenium, Java, TestNG, Apache POI, Excel
Time Needed4–5 days
Resume ValueData-driven testing — directly on your resume

Objective

Implement data-driven testing where test input data is read from an Excel (.xlsx) file, enabling running the same test with multiple data sets without code changes.

Step-by-Step Instructions

  • Step 1: Add Apache POI dependencies — poi, poi-ooxml — to pom.xml
  • Step 2: Create an Excel file TestData.xlsx with sheet 'LoginData' having columns: Username, Password, ExpectedResult
  • Step 3: Add 5 rows: 2 valid, 2 invalid credential pairs, 1 empty field row
  • Step 4: Create ExcelUtils.java with method: String[][] getTestData(String filePath, String sheetName)
  • Step 5: Inside method, use FileInputStream → XSSFWorkbook → XSSFSheet → iterate rows/cells
  • Step 6: Return 2D String array where each row is one test data set
  • Step 7: Create LoginDataProvider.java with @DataProvider that calls ExcelUtils.getTestData()
  • Step 8: In LoginTest, use @Test(dataProvider='loginData') and accept (String username, String password, String expected) parameters
  • Step 9: Run tests — they execute once per Excel row automatically
  • Step 10: Add screenshot on failure so each row's failure is captured separately

Project 15: Hybrid Framework — POM + Data-Driven + Reporting

DifficultyIntermediate-Advanced
Tech StackSelenium, Java, TestNG, POM, Apache POI, ExtentReports, Log4j
Time Needed10–14 days
Resume ValueMost in-demand framework type — directly matching your resume

Objective

Build an enterprise-grade Hybrid Framework combining POM architecture, data-driven capabilities, ExtentReports, Log4j logging, and configuration management.

Complete Folder Structure

  • src/main/java/base/ — BaseTest.java, DriverManager.java
  • src/main/java/pages/ — All page object classes
  • src/main/java/utils/ — ExcelUtils, ConfigReader, ScreenshotUtils, WaitUtils, ReportManager
  • src/main/java/constants/ — AppConstants.java (all string constants)
  • src/test/java/tests/ — All test classes
  • src/test/resources/ — testng.xml, config.properties, log4j.properties
  • testdata/ — Excel files
  • reports/ — ExtentReports output
  • screenshots/ — Failure screenshots

Key Components to Build

  • DriverManager using ThreadLocal<WebDriver> for thread-safe parallel execution
  • ReportManager as singleton handling ExtentReports instance
  • Custom ITestListener for automatic screenshot + report logging on failure
  • ConfigReader using Properties class to read config.properties
  • Log4j integration for console and file logging

Project 16: Smoke Test Suite for Banking Application

DifficultyIntermediate
Tech StackSelenium, Java, TestNG, POM, ExtentReports
Time Needed5–7 days
Resume ValueDomain knowledge — banking/finance testing

Use demo banking site https://www.globalsqa.com/angularJs-protractor/BankingProject/ to build a complete smoke test suite. Cover: Manager login, Create customer, Open account, Deposit money, Withdraw money, View transaction history, Delete customer, and Customer login with balance check. Organize tests with @Test(groups={'smoke'}) tags. Run smoke suite in under 5 minutes as would be required in real CI/CD pipelines.

Project 17: TestRail-Like Test Management System Simulation

DifficultyIntermediate
Tech StackSelenium, Java, TestNG, Excel/JSON, ExtentReports
Time Needed4–5 days
Resume ValueShows test management experience

Simulate a structured test management approach similar to TestRail. Create Excel sheets representing: Test Plan (Sprint, Module, Priority), Test Cases (TC_ID, Description, Precondition, Steps, Expected Result), Test Execution (TC_ID, Status, Comments, Defect_ID). After running Selenium tests, automatically update the Test Execution sheet with Pass/Fail status using Apache POI write operations. Generate a test execution summary report. This mimics real TestRail workflows from your current role.

Project 18: API + UI Integration Testing

DifficultyIntermediate
Tech StackSelenium, RestAssured, Java, TestNG
Time Needed5–7 days
Resume ValueEnd-to-end integration testing skills

Build tests that combine API calls with UI verification. Flow: (1) Use RestAssured to call POST /api/users to create a user programmatically; (2) Use Selenium to navigate to the admin dashboard; (3) Verify the newly created user appears in the UI table; (4) Use API to delete the user; (5) Verify UI no longer shows the user. This tests the sync between backend and frontend — a real-world pattern used in integration testing.

Project 19: JIRA Defect Report Automation

DifficultyIntermediate
Tech StackJIRA REST API, RestAssured, Java, TestNG
Time Needed3–4 days
Resume ValueJIRA automation — unique differentiator

Automate JIRA defect creation when a Selenium test fails. When a TestNG test fails in onTestFailure() listener: (1) Capture screenshot; (2) Call JIRA REST API POST /rest/api/2/issue with defect details — summary, description with failure message, priority, component; (3) Attach screenshot to JIRA issue using JIRA attachment API; (4) Log the JIRA ticket number in the ExtentReport. Use Jira Cloud free tier at atlassian.net for practice. This directly mirrors your current job experience.

Project 20: Accessibility Testing Automation

DifficultyIntermediate
Tech StackSelenium, Java, Axe-core, TestNG
Time Needed3–4 days
Resume ValueGrowing requirement in SDET roles

Integrate Axe accessibility testing engine with Selenium. Add axe-selenium-java dependency. After page loads, inject axe JavaScript and run axe.analyze(). Collect accessibility violations — these represent real WCAG 2.1 compliance issues like missing alt text, low contrast, missing ARIA labels. Assert zero critical violations. Generate HTML report showing all violations with element location, impact level, and fix guidance. Run across multiple pages of a website.

Use practice websites built for automation as targets, never live production sites you do not own, and publish each finished project on GitHub with a README explaining how to run it.

FAQs

What projects should a tester with 2 years of experience build?

A POM framework with CI, a Cucumber BDD suite, and a REST Assured API suite with schema validation and reports, ideally against the same demo application.

Note: reqres.in now asks for a free API key sent in an x-api-key header; check its site, or use another practice API such as JSONPlaceholder or Restful Booker.