The quickest way to stand out as a fresher is a GitHub profile with real automation projects. These beginner automation testing projects use Selenium, Java and TestNG against practice sites, and each has a clear objective, step-by-step instructions, the expected output and ideas to extend it.

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

These projects are designed for absolute beginners or someone just starting with Selenium and Java. Focus on understanding core concepts: locators, assertions, TestNG annotations, and basic test structure.

Project 1: Static Website Test Automation (Login Page)

DifficultyBeginner
Tech StackSelenium WebDriver, Java, TestNG, ChromeDriver
Time Needed3–5 days
Resume ValueShows basic Selenium and TestNG knowledge

Objective

Automate the login functionality of a publicly available demo website (e.g., https://the-internet.herokuapp.com/login) to validate successful and failed login scenarios.

Step-by-Step Instructions

  • Step 1: Setup Environment
  • Install Java JDK 11+ and set JAVA_HOME environment variable
  • Install Eclipse IDE or IntelliJ IDEA
  • Create a new Maven project in Eclipse
  • Add Selenium WebDriver and TestNG dependencies to pom.xml
  • Download ChromeDriver matching your Chrome browser version and add to system PATH
  • Step 2: Write Your First Test
  • Create a Java class: LoginTest.java
  • Initialize WebDriver: WebDriver driver = new ChromeDriver()
  • Open URL: driver.get("https://the-internet.herokuapp.com/login")
  • Identify locators using Chrome DevTools (F12 → Inspector)
  • Use driver.findElement(By.id("username")).sendKeys("tomsmith")
  • Use driver.findElement(By.id("password")).sendKeys("SuperSecretPassword!")
  • Click login button using driver.findElement(By.cssSelector("button[type='submit']")).click()
  • Step 3: Add Assertions
  • Import org.testng.Assert in your test class
  • Assert success message: Assert.assertTrue(driver.findElement(By.id("flash")).isDisplayed())
  • Add a negative test with wrong credentials and assert error message appears
  • Step 4: Add TestNG Annotations
  • Use @BeforeMethod to open browser before each test
  • Use @AfterMethod to close browser after each test
  • Use @Test for each test method
  • Run tests by right-clicking → Run As → TestNG Test
  • Step 5: Add testng.xml
  • Create testng.xml file in project root
  • Define <suite> and <test> tags with your test class
  • Run via testng.xml to see HTML report in test-output folder

Expected Output

2 test cases pass/fail with TestNG HTML report showing green/red results.

Enhancement Ideas

  • Add @DataProvider to test with multiple usernames and passwords
  • Capture screenshot on failure using TakesScreenshot interface
  • Add explicit waits using WebDriverWait instead of Thread.sleep
Advertisement

Project 3: Registration Form Validation

DifficultyBeginner
Tech StackSelenium WebDriver, Java, TestNG
Time Needed3–4 days
Resume ValueForm handling, dropdowns, checkboxes, radio buttons

Objective

Automate a complete user registration form at https://demoqa.com/automation-practice-form covering all input types including text, dropdowns, date picker, radio buttons, checkboxes, and file upload.

Step-by-Step Instructions

  • Step 1: Identify all form fields using Chrome DevTools — text inputs, dropdowns, date pickers, radio buttons, checkboxes
  • Step 2: Fill First Name and Last Name using sendKeys()
  • Step 3: Handle radio buttons using .click() and verify selection with isSelected()
  • Step 4: Handle multi-select checkboxes for hobbies
  • Step 5: Handle Select dropdown for state/city using Select class — new Select(element).selectByVisibleText()
  • Step 6: Handle date picker by sending date string or clicking calendar elements
  • Step 7: Upload a file using sendKeys() with absolute file path
  • Step 8: Submit form and verify the confirmation modal appears
  • Step 9: Assert values in confirmation modal match inputs

Key Concepts Learned

  • Select class for dropdowns
  • File upload handling
  • Handling JavaScript-based date pickers
  • Modal dialog handling

Project 4: E-Commerce Product Search & Cart

DifficultyBeginner-Intermediate
Tech StackSelenium WebDriver, Java, TestNG, Explicit Waits
Time Needed4–5 days
Resume ValueReal-world e-commerce testing scenario

Objective

Using https://www.saucedemo.com/, automate the full shopping flow: login, browse products, add to cart, checkout, and verify order.

Step-by-Step Instructions

  • Step 1: Login with credentials (standard_user / secret_sauce)
  • Step 2: Verify product catalog page loads with expected items
  • Step 3: Sort products by Price (low to high) using the dropdown
  • Step 4: Add the first product to cart by clicking 'Add to Cart'
  • Step 5: Click cart icon and verify item appears in cart
  • Step 6: Click Checkout, fill First Name, Last Name, Zip Code
  • Step 7: On Overview page, assert product name and price
  • Step 8: Click Finish and assert 'Thank you for your order' message
  • Step 9: Assert cart count resets to 0 after order

Negative Test Scenarios to Add

  • Login with locked_out_user and assert error message
  • Try to checkout with empty cart and verify behavior
  • Leave Zip Code blank and verify validation error

Project 5: TestNG Annotations & Grouping Demo

DifficultyBeginner
Tech StackSelenium WebDriver, Java, TestNG
Time Needed2–3 days
Resume ValueDemonstrates TestNG mastery for interviews

Objective

Create a test suite that demonstrates all major TestNG annotations: @BeforeSuite, @AfterSuite, @BeforeClass, @AfterClass, @BeforeMethod, @AfterMethod, @Test with priority, groups, and dependsOnMethods.

Step-by-Step Instructions

  • Step 1: Create a LoginTests class with @BeforeClass to initialize driver
  • Step 2: Create tests with @Test(priority=1), @Test(priority=2), @Test(priority=3) to control order
  • Step 3: Create groups: @Test(groups={"smoke"}) and @Test(groups={"regression"})
  • Step 4: Use @Test(dependsOnMethods={"testLogin"}) to make checkout depend on login
  • Step 5: Use @DataProvider to run the same test with multiple data sets
  • Step 6: Configure testng.xml to run only 'smoke' group
  • Step 7: Add @Test(enabled=false) to skip a test and observe it in report
  • Step 8: Run parallel execution with parallel='methods' attribute in testng.xml

testng.xml Sample Structure

Configure <groups> tag with <run><include name='smoke'/></run> to filter test execution by group.

Project 6: Cross-Browser Testing Framework

DifficultyBeginner-Intermediate
Tech StackSelenium WebDriver, Java, TestNG, ChromeDriver, GeckoDriver
Time Needed3–4 days
Resume ValueShows cross-browser testing experience

Objective

Create a test framework that can run the same tests on Chrome and Firefox without code duplication, using TestNG parameters.

Step-by-Step Instructions

  • Step 1: Create a BaseTest class with a @BeforeMethod that accepts a 'browser' parameter
  • Step 2: In BaseTest, use if-else or switch to initialize Chrome or Firefox driver based on parameter
  • Step 3: For Firefox, add GeckoDriver to PATH and use new FirefoxDriver()
  • Step 4: Create testng.xml with two <test> blocks — one for Chrome, one for Firefox
  • Step 5: Pass browser parameter: <parameter name='browser' value='chrome'/>
  • Step 6: Write test classes that extend BaseTest — they will run on both browsers automatically
  • Step 7: Run testng.xml and observe tests executing on both browsers
  • Step 8: Add parallel='tests' attribute to run both browsers simultaneously

Key Concepts Learned

  • @Parameters annotation and testng.xml parameter passing
  • Driver factory pattern for multi-browser support
  • Parallel test execution across browsers

Project 7: Screenshot on Failure Utility

DifficultyBeginner
Tech StackSelenium, Java, TestNG, ITestListener
Time Needed2 days
Resume ValueShows TestNG listener implementation

Implement a TestNG ITestListener class that automatically captures and saves screenshots whenever a test fails. The listener captures the screenshot in the onTestFailure() method using TakesScreenshot, saves with timestamp to a screenshots folder, and attaches to TestNG report. Register the listener in testng.xml using <listener class-name='...'/>. This is a critical real-world skill used in all professional frameworks.

Project 8: Wait Strategies Demonstration

DifficultyBeginner
Tech StackSelenium, Java, TestNG, WebDriverWait
Time Needed2 days
Resume ValueShows understanding of synchronization

Create a project demonstrating all 3 types of Selenium waits: (1) ImplicitWait — set once globally, applies to all findElement calls; (2) ExplicitWait — WebDriverWait with ExpectedConditions for specific elements (visibilityOf, elementToBeClickable, titleContains, alertIsPresent); (3) FluentWait — custom polling interval and ignoring exceptions. Use https://the-internet.herokuapp.com/dynamic_loading to practice waits on dynamically loaded elements.

Project 9: Window and Frame Handling

DifficultyBeginner
Tech StackSelenium, Java, TestNG
Time Needed2–3 days
Resume ValueDemonstrates advanced navigation skills

Practice handling multiple browser windows and iFrames. Test 1: Open a link that opens a new window, switch to it using driver.switchTo().window(windowHandle), perform actions, then switch back. Test 2: Switch to an iframe using driver.switchTo().frame() by index/name/WebElement, interact with elements inside it, then driver.switchTo().defaultContent(). Use https://the-internet.herokuapp.com/windows and /iframe for practice. Include alert handling with driver.switchTo().alert().accept()/.dismiss()/.getText().

Project 10: TestNG HTML Report Customization

DifficultyBeginner
Tech StackSelenium, Java, TestNG, ExtentReports
Time Needed3 days
Resume ValueProfessional reporting skills

Integrate ExtentReports library to generate beautiful HTML reports. Add ExtentReports Maven dependency. Create an ExtentReports instance in @BeforeSuite. Create ExtentTest instances in @BeforeMethod. Log test steps using extentTest.log() or extentTest.pass()/fail(). Add screenshots to report on failure. Generate final report in @AfterSuite. Run tests and open the HTML report — it will show test execution timeline, pass/fail pie chart, and detailed step logs.

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

Which automation project is best for a fresher resume?

A small framework that tests login, forms and a checkout flow on a practice site with page objects, TestNG, a data provider and an HTML report, published on GitHub.