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.
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)
| Difficulty | Beginner |
| Tech Stack | Selenium WebDriver, Java, TestNG, ChromeDriver |
| Time Needed | 3–5 days |
| Resume Value | Shows 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
Project 3: Registration Form Validation
| Difficulty | Beginner |
| Tech Stack | Selenium WebDriver, Java, TestNG |
| Time Needed | 3–4 days |
| Resume Value | Form 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
| Difficulty | Beginner-Intermediate |
| Tech Stack | Selenium WebDriver, Java, TestNG, Explicit Waits |
| Time Needed | 4–5 days |
| Resume Value | Real-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
| Difficulty | Beginner |
| Tech Stack | Selenium WebDriver, Java, TestNG |
| Time Needed | 2–3 days |
| Resume Value | Demonstrates 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
| Difficulty | Beginner-Intermediate |
| Tech Stack | Selenium WebDriver, Java, TestNG, ChromeDriver, GeckoDriver |
| Time Needed | 3–4 days |
| Resume Value | Shows 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
| Difficulty | Beginner |
| Tech Stack | Selenium, Java, TestNG, ITestListener |
| Time Needed | 2 days |
| Resume Value | Shows 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
| Difficulty | Beginner |
| Tech Stack | Selenium, Java, TestNG, WebDriverWait |
| Time Needed | 2 days |
| Resume Value | Shows 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
| Difficulty | Beginner |
| Tech Stack | Selenium, Java, TestNG |
| Time Needed | 2–3 days |
| Resume Value | Demonstrates 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
| Difficulty | Beginner |
| Tech Stack | Selenium, Java, TestNG, ExtentReports |
| Time Needed | 3 days |
| Resume Value | Professional 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.