A framework that incorporates key features of Selenium and TestNG which can be used to create web-based automation scripts.
Key Features
- Supports method wise Parallel test execution
- Screenshots can be taken for Pass/Fail steps
- WebDriver manager based browser initiation
- Platform independent
- Integration with Extent Reports and Excel result updates
- Automatic failure reruns
- Integrated with sonarQube and java code coverage plugin for vulnerability analysis
Note : Utility class is a work in progress
- Installation
- Test Framework Design
- Test Folder Structure
- Running the tests
- Creating new tests
- Generating sonar and jacoco reports
- Built With
- Contributing
- License
- Acknowledgments
- References
Clone the repo from GitHub using below command
git clone https://github.com/naveenchr/AutoFrameWork.git
Clean and compile the maven project using below commands
mvn clean
mvn compile
Start test execution from either command prompt or Jenkins
From Command Prompt
mvn clean test -DtestngXML=testng.xml -P Profile_1
Run with groups tag
mvn clean test -DtestngXML=testng.xml -Dgroups="Smoke Test" -P Profile_1
Manual failed run addition to automatic rerun
mvn test -P Profile_2
From Jenkins
mvn clean test -DparallelRun=$parallelMode -DthreadCount=$threadCount -DdataProviderThread=$dataProviderThread -DbrowserType=$browserType -DheadlessMode=$headlessMode -DtestngXML=$testngXML -Dgroups="Smoke Test" -P Profile_1
Report Location
test-output/ExtentReport.html
Sample Report
package com.test.gui;
import java.util.HashMap;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.annotations.Test;
import com.test.framework.BaseClass;
import com.test.pageobjects.GoogleHomePage;
public class PassFailTest {
private static final Logger logger = LogManager.getLogger(PassFailTest.class);
@Test
public void googleTest_TC001(HashMap<String, String> dataHashMap) {
try {
GoogleHomePage googleHomePage = new GoogleHomePage(dataHashMap);
googleHomePage.searchTextBox();
} catch (Exception e) {
BaseClass.getBaseObj().testFailureException(e);
}
}
package com.test.pageobjects;
import java.util.Map;
import org.openqa.selenium.By;
import com.test.framework.UtilityClass;
public class GoogleHomePage extends UtilityClass {
private Map<String, String> map;
public GoogleHomePage(Map<String, String> map) {
this.map = map;
}
By searchTextBox = By.cssSelector("[type='text']");
public void searchTextBox() {
textField(searchTextBox, map.get("From Location"));
}
}
- Add sonar server URL in POM file
<sonar.host.url>http://localhost:9000</sonar.host.url>
- Execute the below maven command after the test run
mvn sonar:sonar
- Selenium WebDriver
- TestNG
- Maven
- Git
- log4j
- ExtentReport
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update the tests as appropriate.
- Selenium WebDriver with Java -Basics to Advanced+Frameworks udemy