From ab5c9602d8e39659ab2f859be3ba7eb6d9f0e552 Mon Sep 17 00:00:00 2001 From: mvanjiappan Date: Mon, 30 Jul 2018 12:00:47 +0530 Subject: [PATCH 1/2] Minor Enhancements on the logics included apache collections 4 on pom.xml to avoid valuemap4 exception --- pom.xml | 238 ++++++++--------- src/main/java/com/selenium/base/TestBase.java | 228 ++++++++--------- .../java/com/selenium/pages/MainPage.java | 180 +++++++------ .../com/selenium/listeners/ExtentManager.java | 98 +++---- .../com/selenium/listeners/Transformer.java | 42 ++- .../com/selenium/testcases/MainPageTests.java | 239 +++++++++--------- 6 files changed, 510 insertions(+), 515 deletions(-) diff --git a/pom.xml b/pom.xml index 9199e38..1f39b2b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,116 +1,124 @@ - - - 4.0.0 - - com.selenium - selenium - 1.0-SNAPSHOT - - HybridFramework - http://maven.apache.org - - - - - - org.seleniumhq.selenium - selenium-java - 3.12.0 - - - - org.testng - testng - 6.14.3 - test - - - - - log4j - log4j - 1.2.17 - - - - commons-io - commons-io - 2.6 - - - - org.apache.poi - poi - 3.15 - - - - org.apache.poi - poi-ooxml - 3.15 - - - - org.apache.poi - poi-ooxml-schemas - 3.15 - - - - org.apache.poi - poi-scratchpad - 3.15 - - - - org.apache.poi - ooxml-schemas - 1.1 - - - - org.apache.poi - openxml4j - 1.0-beta - - - - - com.aventstack - extentreports - 3.1.5 - provided - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.7.0 - - 1.8 - 1.8 - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.0 - - true - - testng.xml - - - - - - - + + + 4.0.0 + + com.selenium + selenium + 1.0-SNAPSHOT + + HybridFramework + http://maven.apache.org + + + + + + org.seleniumhq.selenium + selenium-java + 3.13.0 + + + + org.testng + testng + 6.14.3 + test + + + + + log4j + log4j + 1.2.17 + + + + commons-io + commons-io + 2.6 + + + + org.apache.poi + poi + 3.15 + + + + org.apache.poi + poi-ooxml + 3.15 + + + + org.apache.poi + poi-ooxml-schemas + 3.15 + + + + org.apache.poi + poi-scratchpad + 3.15 + + + + org.apache.poi + ooxml-schemas + 1.1 + + + + org.apache.poi + openxml4j + 1.0-beta + + + + + com.aventstack + extentreports + 3.1.5 + provided + + + + + org.apache.commons + commons-collections4 + 4.2 + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.0 + + true + + testng.xml + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/selenium/base/TestBase.java b/src/main/java/com/selenium/base/TestBase.java index 39c397b..bcedf41 100644 --- a/src/main/java/com/selenium/base/TestBase.java +++ b/src/main/java/com/selenium/base/TestBase.java @@ -1,114 +1,114 @@ -package com.selenium.base; - -import org.apache.log4j.Logger; -import org.apache.log4j.PropertyConfigurator; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.remote.RemoteWebDriver; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Properties; -import java.util.concurrent.TimeUnit; - -public class TestBase { - - public static WebDriver driver; - public static Properties prop; - static Logger logger; - - static{ - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_hhmmss"); - System.setProperty("current.date", dateFormat.format(new Date())); - } - - public TestBase() { - try { - prop = new Properties(); - FileInputStream inputStream = new FileInputStream(System.getProperty("user.dir") + "/src/main/java/com/selenium/config/config.properties"); - prop.load(inputStream); - - PropertyConfigurator.configure(System.getProperty("user.dir") + "/src/main/resource/log4j.properties"); - logger = Logger.getLogger(TestBase.class.getName()); - - } catch (FileNotFoundException Ex) { - logger.info("File not found: " + Ex.getMessage()); - - } catch (IOException Ex) { - logger.info("Exception occurred: " + Ex.getMessage()); - } - } - - public static void initialization() throws MalformedURLException { - String browserName = prop.getProperty("BROWSER"); - String environment = prop.getProperty("ENVIRONMENT"); - - switch (environment) { - - case "local": - switch (browserName) { - case "chrome": - logger.info("Starting tests on chrome browser."); - System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "//ExternalDrivers//chromedriver.exe"); - ChromeOptions options = new ChromeOptions(); - options.addArguments("--start-maximized"); - options.addArguments("--disable-extensions"); - driver = new ChromeDriver(options); - break; - - case "firefox": - logger.info("Starting tests on firefox browser."); - System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); - driver = new FirefoxDriver(); - break; - - default: - logger.info("Browser not defined."); - break; - } - break; - - case "grid": - switch (browserName) { - case "chrome": - logger.info("Starting tests on chrome browser."); - ChromeOptions options = new ChromeOptions(); - options.addArguments("--start-maximized"); - options.addArguments("--disable-extensions"); - options.setCapability("platform", "LINUX"); - driver = new RemoteWebDriver(new URL(prop.getProperty("SELENIUMSERVER")), options); - logger.info("Setting Up Selenium Grid."); - break; - - case "firefox": - logger.info("Starting tests on firefox browser."); - System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); - driver = new FirefoxDriver(); - break; - - default: - logger.info("Browser not defined."); - break; - } - break; - - default: - logger.info("No environment defined."); - break; - } - - driver.manage().window().maximize(); - driver.manage().timeouts().pageLoadTimeout(Long.parseLong(prop.getProperty("TIMEOUT")), TimeUnit.SECONDS); - driver.get(prop.getProperty("URL")); - - logger.info("Driver initialization completed."); - } - -} +package com.selenium.base; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.remote.RemoteWebDriver; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Properties; +import java.util.concurrent.TimeUnit; + +public class TestBase { + + public static WebDriver driver; + public static Properties prop; + static Logger logger; + + static{ + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_hhmmss"); + System.setProperty("current.date", dateFormat.format(new Date())); + } + + public TestBase() { + try { + prop = new Properties(); + FileInputStream inputStream = new FileInputStream(System.getProperty("user.dir") + "/src/main/java/com/selenium/config/config.properties"); + prop.load(inputStream); + + PropertyConfigurator.configure(System.getProperty("user.dir") + "/src/main/resource/log4j.properties"); + logger = Logger.getLogger(TestBase.class.getName()); + + } catch (FileNotFoundException Ex) { + logger.info("File not found: " + Ex.getMessage()); + + } catch (IOException Ex) { + logger.info("Exception occurred: " + Ex.getMessage()); + } + } + + public static void initialization() throws MalformedURLException { + String browserName = prop.getProperty("BROWSER"); + String environment = prop.getProperty("ENVIRONMENT"); + + switch (environment) { + + case "local": + switch (browserName) { + case "chrome": + logger.info("Starting tests on chrome browser."); + System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "//ExternalDrivers//chromedriver.exe"); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--start-maximized"); + options.addArguments("--disable-extensions"); + driver = new ChromeDriver(options); + break; + + case "firefox": + logger.info("Starting tests on firefox browser."); + System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); + driver = new FirefoxDriver(); + break; + + default: + logger.info("Browser not defined."); + break; + } + break; + + case "grid": + switch (browserName) { + case "chrome": + logger.info("Starting tests on chrome browser."); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--start-maximized"); + options.addArguments("--disable-extensions"); + options.setCapability("platform", "LINUX"); + driver = new RemoteWebDriver(new URL(prop.getProperty("SELENIUMSERVER")), options); + logger.info("Setting Up Selenium Grid."); + break; + + case "firefox": + logger.info("Starting tests on firefox browser."); + System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); + driver = new FirefoxDriver(); + break; + + default: + logger.info("Browser not defined."); + break; + } + break; + + default: + logger.info("No environment defined."); + break; + } + + driver.manage().window().maximize(); + driver.manage().timeouts().pageLoadTimeout(Long.parseLong(prop.getProperty("TIMEOUT")), TimeUnit.SECONDS); + driver.get(prop.getProperty("URL")); + + logger.info("Driver initialization completed."); + } + +} diff --git a/src/main/java/com/selenium/pages/MainPage.java b/src/main/java/com/selenium/pages/MainPage.java index d46ab84..981b84a 100644 --- a/src/main/java/com/selenium/pages/MainPage.java +++ b/src/main/java/com/selenium/pages/MainPage.java @@ -1,93 +1,87 @@ -package com.selenium.pages; - -import com.selenium.base.TestBase; -import com.selenium.util.ReusableFunctions; -import org.apache.log4j.Logger; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; - -import java.util.ArrayList; - -public class MainPage extends TestBase { - - static Logger logger = Logger.getLogger(MainPage.class.getName()); - ReusableFunctions _reusableFunc = new ReusableFunctions(); - - // Web App - - public final By user_message_input = By.xpath("//input[@id='user-message']"); - public final By show_message_button = By.xpath("//button[text()='Show Message']"); - public final By show_message_text = By.xpath("//div[@id='user-message']//following::span[@id='display']"); - public final By enter_first_value = By.xpath("//input[@id='sum1']"); - public final By enter_second_value = By.xpath("//input[@id='sum2']"); - public final By get_total_button = By.xpath("//button[text()='Get Total']"); - public final By show_total_text = By.xpath("//span[@id='displayvalue']"); - - public boolean verifyMainScreenElements(WebDriver driver) { - boolean flag = true; - try{ - logger.info("Verifying Main Page Elements."); - ArrayList locators = new ArrayList(); - - locators.add(user_message_input); - locators.add(show_message_button); - locators.add(enter_first_value); - locators.add(enter_second_value); - locators.add(get_total_button); - - if (_reusableFunc.verifyElementsLocated(driver, locators)){ - logger.info("All Main Page Elements Displayed."); - }else { - flag = false; - logger.error("Main Page Elements Not Displayed."); - } - - }catch(Exception Ex){ - flag = false; - logger.error("Exception Occurred While Verifying Main Page Elements: "+Ex.getMessage()); - } - return flag; - } - - public boolean verifyValidUserInput(WebDriver driver, String userInput){ - boolean flag = false; - - try { - logger.info("Verifying Valid User Input."); - - _reusableFunc.enterText(driver, user_message_input, userInput); - _reusableFunc.click(driver, show_message_button); - String message = _reusableFunc.getTextByInnerText(driver, show_message_text); - - if (_reusableFunc.verifyTextMatch(driver, message, userInput)){ - flag = true; - } - - }catch(Exception Ex){ - logger.error("Exception Occurred While Verifying Valid User Input: "+Ex.getMessage()); - } - return flag; - } - - public boolean verifyAdditionFunctionality(WebDriver driver, String numA, String numB, String expected){ - boolean flag = false; - - try { - logger.info("Verifying Addition Functionality."); - - _reusableFunc.enterText(driver, enter_first_value, numA); - _reusableFunc.enterText(driver, enter_second_value, numB); - _reusableFunc.click(driver, get_total_button); - String addition = _reusableFunc.getTextByInnerText(driver, show_total_text); - - if (_reusableFunc.verifyTextMatch(driver, addition, expected)){ - flag = true; - } - - }catch(Exception Ex){ - logger.error("Exception Occurred While Verifying Addition Functionality: "+Ex.getMessage()); - } - return flag; - } - -} +package com.selenium.pages; + +import com.selenium.base.TestBase; +import com.selenium.util.ReusableFunctions; +import org.apache.log4j.Logger; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +import java.util.ArrayList; + +public class MainPage extends TestBase { + + static Logger logger = Logger.getLogger(MainPage.class.getName()); + ReusableFunctions _reusableFunc = new ReusableFunctions(); + + // Web App + + public final By user_message_input = By.xpath("//input[@id='user-message']"); + public final By show_message_button = By.xpath("//button[text()='Show Message']"); + public final By show_message_text = By.xpath("//div[@id='user-message']//following::span[@id='display']"); + public final By enter_first_value = By.xpath("//input[@id='sum1']"); + public final By enter_second_value = By.xpath("//input[@id='sum2']"); + public final By get_total_button = By.xpath("//button[text()='Get Total']"); + public final By show_total_text = By.xpath("//span[@id='displayvalue']"); + + public boolean verifyMainScreenElements(WebDriver driver) { + boolean flag = true; + try{ + logger.info("Verifying Main Page Elements."); + ArrayList locators = new ArrayList(); + + locators.add(user_message_input); + locators.add(show_message_button); + locators.add(enter_first_value); + locators.add(enter_second_value); + locators.add(get_total_button); + + if (_reusableFunc.verifyElementsLocated(driver, locators)){ + logger.info("All Main Page Elements Displayed."); + }else { + flag = false; + logger.error("Main Page Elements Not Displayed."); + } + + }catch(Exception Ex){ + flag = false; + logger.error("Exception Occurred While Verifying Main Page Elements: "+Ex.getMessage()); + } + return flag; + } + + public boolean verifyValidUserInput(WebDriver driver, String userInput){ + boolean flag = false; + + try { + logger.info("Verifying Valid User Input."); + + _reusableFunc.enterText(driver, user_message_input, userInput); + _reusableFunc.click(driver, show_message_button); + String message = _reusableFunc.getTextByInnerText(driver, show_message_text); + flag = ReusableFunctions.verifyTextMatch(driver, message, userInput); + + }catch(Exception Ex){ + logger.error("Exception Occurred While Verifying Valid User Input: "+Ex.getMessage()); + } + return flag; + } + + public boolean verifyAdditionFunctionality(WebDriver driver, String numA, String numB, String expected){ + boolean flag = false; + + try { + logger.info("Verifying Addition Functionality."); + + _reusableFunc.enterText(driver, enter_first_value, numA); + _reusableFunc.enterText(driver, enter_second_value, numB); + _reusableFunc.click(driver, get_total_button); + String addition = _reusableFunc.getTextByInnerText(driver, show_total_text); + flag = ReusableFunctions.verifyTextMatch(driver, addition, expected); + + }catch(Exception Ex){ + logger.error("Exception Occurred While Verifying Addition Functionality: "+Ex.getMessage()); + } + return flag; + } + +} diff --git a/src/test/java/com/selenium/listeners/ExtentManager.java b/src/test/java/com/selenium/listeners/ExtentManager.java index c0a5f35..8add111 100644 --- a/src/test/java/com/selenium/listeners/ExtentManager.java +++ b/src/test/java/com/selenium/listeners/ExtentManager.java @@ -1,49 +1,49 @@ -package com.selenium.listeners; - -import com.aventstack.extentreports.ExtentReports; -import com.aventstack.extentreports.ExtentTest; -import com.aventstack.extentreports.Status; -import com.aventstack.extentreports.reporter.ExtentHtmlReporter; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -//OB: ExtentReports extent instance created here. That instance can be reachable by getReporter() method. - -public class ExtentManager { - - private static ExtentReports extent; - private static ExtentTest logger; - - public ExtentManager(ExtentReports reports){ - this.extent = reports; - } - - public synchronized static ExtentReports getReporter() throws IOException { - if(extent == null){ - String workingDir = System.getProperty("user.dir"); - - FileInputStream inputStream = new FileInputStream(new File(workingDir+"/src/test/resource/extent-config.xml")); - ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter( workingDir+"/ExtentReports/ExtentReportResults"+System.getProperty("current.date")+".html"); - htmlReporter.loadConfig(inputStream); - - extent = new ExtentReports(); - extent.attachReporter(htmlReporter); - extent.setSystemInfo("Host Name", "Selenium Test Automation"); - extent.setSystemInfo("Environment", "QA Environment"); - extent.setSystemInfo("User Name", "Abhilash Sharma"); - - } - return extent; - } - - public synchronized static ExtentTest getLogger(String testCaseName){ - try{ - logger = getReporter().createTest(testCaseName); - }catch (Exception Ex){ - Ex.printStackTrace(); - } - return logger; - } -} +package com.selenium.listeners; + +import com.aventstack.extentreports.ExtentReports; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; +import com.aventstack.extentreports.reporter.ExtentHtmlReporter; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +//OB: ExtentReports extent instance created here. That instance can be reachable by getReporter() method. + +public class ExtentManager { + + private static ExtentReports extent; + private static ExtentTest logger; + + public ExtentManager(ExtentReports reports){ + extent = reports; + } + + public synchronized static ExtentReports getReporter() throws IOException { + if(extent == null){ + String workingDir = System.getProperty("user.dir"); + + FileInputStream inputStream = new FileInputStream(new File(workingDir+"/src/test/resource/extent-config.xml")); + ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter( workingDir+"/ExtentReports/ExtentReportResults"+System.getProperty("current.date")+".html"); + htmlReporter.loadConfig(inputStream); + + extent = new ExtentReports(); + extent.attachReporter(htmlReporter); + extent.setSystemInfo("Host Name", "Selenium Test Automation"); + extent.setSystemInfo("Environment", "QA Environment"); + extent.setSystemInfo("User Name", "Abhilash Sharma"); + + } + return extent; + } + + public synchronized static ExtentTest getLogger(String testCaseName){ + try{ + logger = getReporter().createTest(testCaseName); + }catch (Exception Ex){ + Ex.printStackTrace(); + } + return logger; + } +} diff --git a/src/test/java/com/selenium/listeners/Transformer.java b/src/test/java/com/selenium/listeners/Transformer.java index c5b54d4..997f7df 100644 --- a/src/test/java/com/selenium/listeners/Transformer.java +++ b/src/test/java/com/selenium/listeners/Transformer.java @@ -1,24 +1,18 @@ -package com.selenium.listeners; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.util.HashMap; - -import com.selenium.base.TestBase; -import com.selenium.testdata.DataReader; -import org.testng.IAnnotationTransformer; -import org.testng.annotations.ITestAnnotation; - -public class Transformer implements IAnnotationTransformer { - public static DataReader reader = new DataReader(); - public static TestBase testBase = new TestBase(); - public static HashMap> runmodeData = reader.testDataMappedToTestName(testBase.prop.getProperty("TestDataExcelFileName"), testBase.prop.getProperty("RunModeSheetName")); - - public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { - if (DataReader.isRunnable(testMethod.getName(), runmodeData)) { - annotation.setEnabled(true); - }else if (! DataReader.isRunnable(testMethod.getName(), runmodeData)) { - annotation.setEnabled(false); - } - } -} +package com.selenium.listeners; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.HashMap; + +import com.selenium.base.TestBase; +import com.selenium.testdata.DataReader; +import org.testng.IAnnotationTransformer; +import org.testng.annotations.ITestAnnotation; + +public class Transformer implements IAnnotationTransformer { + public static HashMap> runmodeData = DataReader.testDataMappedToTestName(TestBase.prop.getProperty("TestDataExcelFileName"), TestBase.prop.getProperty("RunModeSheetName")); + + public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { + annotation.setEnabled(DataReader.isRunnable(testMethod.getName(), runmodeData)); + } +} diff --git a/src/test/java/com/selenium/testcases/MainPageTests.java b/src/test/java/com/selenium/testcases/MainPageTests.java index 6719505..ba452b7 100644 --- a/src/test/java/com/selenium/testcases/MainPageTests.java +++ b/src/test/java/com/selenium/testcases/MainPageTests.java @@ -1,120 +1,119 @@ -package com.selenium.testcases; - -import com.aventstack.extentreports.ExtentReports; -import com.aventstack.extentreports.ExtentTest; -import com.aventstack.extentreports.Status; -import com.aventstack.extentreports.markuputils.ExtentColor; -import com.aventstack.extentreports.markuputils.MarkupHelper; -import com.selenium.base.TestBase; -import com.selenium.listeners.ExtentManager; -import com.selenium.pages.MainPage; -import com.selenium.testdata.DataReader; -import com.selenium.util.ReusableFunctions; -import org.testng.ITestResult; -import org.testng.annotations.*; -import org.testng.asserts.SoftAssert; - -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.HashMap; - -public class MainPageTests extends TestBase { - - public static MainPage _mainPage; - public static SoftAssert _softAssert; - - public static String testCaseName = null; - public static ExtentTest logger = null; - public static ExtentManager extManager = null; - public static ExtentReports extent = null; - - public static DataReader reader = new DataReader(); - - public static HashMap> tcData = reader.testDataMappedToTestName(prop.getProperty("TestDataExcelFileName"), prop.getProperty("TestDataSheetName")); - - public MainPageTests(){ - super(); - } - - @BeforeMethod - public static void setUp(Method method) throws IOException { - initialization(); - _mainPage = new MainPage(); - _softAssert = new SoftAssert(); - - testCaseName = method.getName(); - extManager = new ExtentManager(extent); - extent = extManager.getReporter(); - logger = extManager.getLogger(testCaseName); - } - - @Test(priority = 1) - public void verifyMainScreenElements() { - - if (!_mainPage.verifyMainScreenElements(driver)) { - _softAssert.fail("Element not present on the page"); - } - _softAssert.assertAll(); - } - - @Test(priority = 2) - public void verifyValidUserInput() { - String userInput = tcData.get(testCaseName).get("Text_Message"); - - if (!_mainPage.verifyValidUserInput(driver, userInput)) { - _softAssert.fail("Not a valid user input: " + userInput); - } - _softAssert.assertAll(); - } - - @Test(priority = 3) - public void verifyValidAddition() { - String numA = tcData.get(testCaseName).get("Number_A"); - String numB = tcData.get(testCaseName).get("Number_B"); - String expected = tcData.get(testCaseName).get("Expected"); - - if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { - _softAssert.fail("Not a valid addition: " + expected); - } - _softAssert.assertAll(); - } - - @Test(priority = 4) - public void verifyInvalidAddition() { - String numA = tcData.get(testCaseName).get("Number_A"); - String numB = tcData.get(testCaseName).get("Number_B"); - String expected = tcData.get(testCaseName).get("Expected"); - - if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { - _softAssert.fail("Not a valid addition: " + expected); - } - _softAssert.assertAll(); - } - - @AfterMethod - public void getResult(ITestResult result) throws Exception{ - - if(result.getStatus() == ITestResult.FAILURE){ - String screenShotPath = ReusableFunctions.takeScreenShot(driver, "SeleniumTestScreen"); - logger.log(Status.FAIL, MarkupHelper.createLabel(result.getName()+" Test case FAILED due to below issues:", ExtentColor.RED)); - logger.fail(result.getThrowable()); - logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenShotPath, testCaseName)); - - }else if(result.getStatus() == ITestResult.SKIP){ - logger.log(Status.SKIP, MarkupHelper.createLabel(result.getName()+" Test case SKIPPED due to below issues:", ExtentColor.GREY)); - logger.skip(result.getThrowable()); - - }else if(result.getStatus() == ITestResult.SUCCESS){ - logger.log(Status.PASS, MarkupHelper.createLabel(result.getName()+" Test case PASSED.", ExtentColor.GREEN)); - } - - if (driver != null) { - driver.manage().deleteAllCookies(); - driver.close(); - } - } - @AfterTest - public void tearDown(){ - extent.flush(); - } -} +package com.selenium.testcases; + +import com.aventstack.extentreports.ExtentReports; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; +import com.aventstack.extentreports.markuputils.ExtentColor; +import com.aventstack.extentreports.markuputils.MarkupHelper; +import com.selenium.base.TestBase; +import com.selenium.listeners.ExtentManager; +import com.selenium.pages.MainPage; +import com.selenium.testdata.DataReader; +import com.selenium.util.ReusableFunctions; +import org.testng.ITestResult; +import org.testng.annotations.*; +import org.testng.asserts.SoftAssert; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.HashMap; + +public class MainPageTests extends TestBase { + + public static MainPage _mainPage; + public static SoftAssert _softAssert; + + public static String testCaseName = null; + public static ExtentTest logger = null; + public static ExtentManager extManager = null; + public static ExtentReports extent = null; + + public static DataReader reader = new DataReader(); + + public static HashMap> tcData = DataReader.testDataMappedToTestName(prop.getProperty("TestDataExcelFileName"), prop.getProperty("TestDataSheetName")); + + public MainPageTests(){ + super(); + } + + @BeforeMethod + public static void setUp(Method method) throws IOException { + initialization(); + _mainPage = new MainPage(); + _softAssert = new SoftAssert(); + + testCaseName = method.getName(); + extManager = new ExtentManager(extent); + extent = ExtentManager.getReporter(); + logger = ExtentManager.getLogger(testCaseName); + } + + @Test(priority = 1) + public void verifyMainScreenElements() { + + if (!_mainPage.verifyMainScreenElements(driver)) { + _softAssert.fail("Element not present on the page"); + } + _softAssert.assertAll(); + } + + @Test(priority = 2) + public void verifyValidUserInput() { + String userInput = tcData.get(testCaseName).get("Text_Message"); + + if (!_mainPage.verifyValidUserInput(driver, userInput)) { + _softAssert.fail("Not a valid user input: " + userInput); + } + _softAssert.assertAll(); + } + + @Test(priority = 3) + public void verifyValidAddition() { + String numA = tcData.get(testCaseName).get("Number_A"); + String numB = tcData.get(testCaseName).get("Number_B"); + String expected = tcData.get(testCaseName).get("Expected"); + + if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { + _softAssert.fail("Not a valid addition: " + expected); + } + _softAssert.assertAll(); + } + + @Test(priority = 4) + public void verifyInvalidAddition() { + String numA = tcData.get(testCaseName).get("Number_A"); + String numB = tcData.get(testCaseName).get("Number_B"); + String expected = tcData.get(testCaseName).get("Expected"); + + if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { + _softAssert.fail("Not a valid addition: " + expected); + } + _softAssert.assertAll(); + } + + @AfterMethod + public void getResult(ITestResult result) throws Exception{ + + if(result.getStatus() == ITestResult.FAILURE){ + String screenShotPath = ReusableFunctions.takeScreenShot(driver, "SeleniumTestScreen"); + logger.log(Status.FAIL, MarkupHelper.createLabel(result.getName()+" Test case FAILED due to below issues:", ExtentColor.RED)); + logger.fail(result.getThrowable()); + logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenShotPath, testCaseName)); + + }else if(result.getStatus() == ITestResult.SKIP){ + logger.log(Status.SKIP, MarkupHelper.createLabel(result.getName()+" Test case SKIPPED due to below issues:", ExtentColor.GREY)); + logger.skip(result.getThrowable()); + + }else if(result.getStatus() == ITestResult.SUCCESS){ + logger.log(Status.PASS, MarkupHelper.createLabel(result.getName()+" Test case PASSED.", ExtentColor.GREEN)); + } + + if (driver != null) { + driver.manage().deleteAllCookies(); + driver.close(); + } + } + @AfterTest + public void tearDown(){ + extent.flush(); + } +} From e36eb939fbe388259a9f420ff4b1a8c4020d326b Mon Sep 17 00:00:00 2001 From: mvanjiappan Date: Mon, 30 Jul 2018 12:14:10 +0530 Subject: [PATCH 2/2] Minor Logic fixes warning fixes for Static variables access included Apache commons collection4 to avoid ClassNotFoundException for excel reading --- pom.xml | 246 +++++++++--------- src/main/java/com/selenium/base/TestBase.java | 228 ++++++++-------- .../java/com/selenium/pages/MainPage.java | 174 ++++++------- .../com/selenium/listeners/ExtentManager.java | 98 +++---- .../com/selenium/listeners/Transformer.java | 36 +-- .../com/selenium/testcases/MainPageTests.java | 238 ++++++++--------- 6 files changed, 510 insertions(+), 510 deletions(-) diff --git a/pom.xml b/pom.xml index 1f39b2b..06550bb 100644 --- a/pom.xml +++ b/pom.xml @@ -1,124 +1,124 @@ - - - 4.0.0 - - com.selenium - selenium - 1.0-SNAPSHOT - - HybridFramework - http://maven.apache.org - - - - - - org.seleniumhq.selenium - selenium-java - 3.13.0 - - - - org.testng - testng - 6.14.3 - test - - - - - log4j - log4j - 1.2.17 - - - - commons-io - commons-io - 2.6 - - - - org.apache.poi - poi - 3.15 - - - - org.apache.poi - poi-ooxml - 3.15 - - - - org.apache.poi - poi-ooxml-schemas - 3.15 - - - - org.apache.poi - poi-scratchpad - 3.15 - - - - org.apache.poi - ooxml-schemas - 1.1 - - - - org.apache.poi - openxml4j - 1.0-beta - - - - - com.aventstack - extentreports - 3.1.5 - provided - - - - - org.apache.commons - commons-collections4 - 4.2 - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.7.0 - - 1.8 - 1.8 - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.0 - - true - - testng.xml - - - - - - - + + + 4.0.0 + + com.selenium + selenium + 1.0-SNAPSHOT + + HybridFramework + http://maven.apache.org + + + + + + org.seleniumhq.selenium + selenium-java + 3.13.0 + + + + org.testng + testng + 6.14.3 + test + + + + + log4j + log4j + 1.2.17 + + + + commons-io + commons-io + 2.6 + + + + org.apache.poi + poi + 3.15 + + + + org.apache.poi + poi-ooxml + 3.15 + + + + org.apache.poi + poi-ooxml-schemas + 3.15 + + + + org.apache.poi + poi-scratchpad + 3.15 + + + + org.apache.poi + ooxml-schemas + 1.1 + + + + org.apache.poi + openxml4j + 1.0-beta + + + + + com.aventstack + extentreports + 3.1.5 + provided + + + + + org.apache.commons + commons-collections4 + 4.2 + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.0 + + true + + testng.xml + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/selenium/base/TestBase.java b/src/main/java/com/selenium/base/TestBase.java index bcedf41..39c397b 100644 --- a/src/main/java/com/selenium/base/TestBase.java +++ b/src/main/java/com/selenium/base/TestBase.java @@ -1,114 +1,114 @@ -package com.selenium.base; - -import org.apache.log4j.Logger; -import org.apache.log4j.PropertyConfigurator; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.remote.RemoteWebDriver; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Properties; -import java.util.concurrent.TimeUnit; - -public class TestBase { - - public static WebDriver driver; - public static Properties prop; - static Logger logger; - - static{ - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_hhmmss"); - System.setProperty("current.date", dateFormat.format(new Date())); - } - - public TestBase() { - try { - prop = new Properties(); - FileInputStream inputStream = new FileInputStream(System.getProperty("user.dir") + "/src/main/java/com/selenium/config/config.properties"); - prop.load(inputStream); - - PropertyConfigurator.configure(System.getProperty("user.dir") + "/src/main/resource/log4j.properties"); - logger = Logger.getLogger(TestBase.class.getName()); - - } catch (FileNotFoundException Ex) { - logger.info("File not found: " + Ex.getMessage()); - - } catch (IOException Ex) { - logger.info("Exception occurred: " + Ex.getMessage()); - } - } - - public static void initialization() throws MalformedURLException { - String browserName = prop.getProperty("BROWSER"); - String environment = prop.getProperty("ENVIRONMENT"); - - switch (environment) { - - case "local": - switch (browserName) { - case "chrome": - logger.info("Starting tests on chrome browser."); - System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "//ExternalDrivers//chromedriver.exe"); - ChromeOptions options = new ChromeOptions(); - options.addArguments("--start-maximized"); - options.addArguments("--disable-extensions"); - driver = new ChromeDriver(options); - break; - - case "firefox": - logger.info("Starting tests on firefox browser."); - System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); - driver = new FirefoxDriver(); - break; - - default: - logger.info("Browser not defined."); - break; - } - break; - - case "grid": - switch (browserName) { - case "chrome": - logger.info("Starting tests on chrome browser."); - ChromeOptions options = new ChromeOptions(); - options.addArguments("--start-maximized"); - options.addArguments("--disable-extensions"); - options.setCapability("platform", "LINUX"); - driver = new RemoteWebDriver(new URL(prop.getProperty("SELENIUMSERVER")), options); - logger.info("Setting Up Selenium Grid."); - break; - - case "firefox": - logger.info("Starting tests on firefox browser."); - System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); - driver = new FirefoxDriver(); - break; - - default: - logger.info("Browser not defined."); - break; - } - break; - - default: - logger.info("No environment defined."); - break; - } - - driver.manage().window().maximize(); - driver.manage().timeouts().pageLoadTimeout(Long.parseLong(prop.getProperty("TIMEOUT")), TimeUnit.SECONDS); - driver.get(prop.getProperty("URL")); - - logger.info("Driver initialization completed."); - } - -} +package com.selenium.base; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.remote.RemoteWebDriver; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Properties; +import java.util.concurrent.TimeUnit; + +public class TestBase { + + public static WebDriver driver; + public static Properties prop; + static Logger logger; + + static{ + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_hhmmss"); + System.setProperty("current.date", dateFormat.format(new Date())); + } + + public TestBase() { + try { + prop = new Properties(); + FileInputStream inputStream = new FileInputStream(System.getProperty("user.dir") + "/src/main/java/com/selenium/config/config.properties"); + prop.load(inputStream); + + PropertyConfigurator.configure(System.getProperty("user.dir") + "/src/main/resource/log4j.properties"); + logger = Logger.getLogger(TestBase.class.getName()); + + } catch (FileNotFoundException Ex) { + logger.info("File not found: " + Ex.getMessage()); + + } catch (IOException Ex) { + logger.info("Exception occurred: " + Ex.getMessage()); + } + } + + public static void initialization() throws MalformedURLException { + String browserName = prop.getProperty("BROWSER"); + String environment = prop.getProperty("ENVIRONMENT"); + + switch (environment) { + + case "local": + switch (browserName) { + case "chrome": + logger.info("Starting tests on chrome browser."); + System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "//ExternalDrivers//chromedriver.exe"); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--start-maximized"); + options.addArguments("--disable-extensions"); + driver = new ChromeDriver(options); + break; + + case "firefox": + logger.info("Starting tests on firefox browser."); + System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); + driver = new FirefoxDriver(); + break; + + default: + logger.info("Browser not defined."); + break; + } + break; + + case "grid": + switch (browserName) { + case "chrome": + logger.info("Starting tests on chrome browser."); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--start-maximized"); + options.addArguments("--disable-extensions"); + options.setCapability("platform", "LINUX"); + driver = new RemoteWebDriver(new URL(prop.getProperty("SELENIUMSERVER")), options); + logger.info("Setting Up Selenium Grid."); + break; + + case "firefox": + logger.info("Starting tests on firefox browser."); + System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//ExternalDrivers//geckodriver.exe"); + driver = new FirefoxDriver(); + break; + + default: + logger.info("Browser not defined."); + break; + } + break; + + default: + logger.info("No environment defined."); + break; + } + + driver.manage().window().maximize(); + driver.manage().timeouts().pageLoadTimeout(Long.parseLong(prop.getProperty("TIMEOUT")), TimeUnit.SECONDS); + driver.get(prop.getProperty("URL")); + + logger.info("Driver initialization completed."); + } + +} diff --git a/src/main/java/com/selenium/pages/MainPage.java b/src/main/java/com/selenium/pages/MainPage.java index 981b84a..b96475c 100644 --- a/src/main/java/com/selenium/pages/MainPage.java +++ b/src/main/java/com/selenium/pages/MainPage.java @@ -1,87 +1,87 @@ -package com.selenium.pages; - -import com.selenium.base.TestBase; -import com.selenium.util.ReusableFunctions; -import org.apache.log4j.Logger; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; - -import java.util.ArrayList; - -public class MainPage extends TestBase { - - static Logger logger = Logger.getLogger(MainPage.class.getName()); - ReusableFunctions _reusableFunc = new ReusableFunctions(); - - // Web App - - public final By user_message_input = By.xpath("//input[@id='user-message']"); - public final By show_message_button = By.xpath("//button[text()='Show Message']"); - public final By show_message_text = By.xpath("//div[@id='user-message']//following::span[@id='display']"); - public final By enter_first_value = By.xpath("//input[@id='sum1']"); - public final By enter_second_value = By.xpath("//input[@id='sum2']"); - public final By get_total_button = By.xpath("//button[text()='Get Total']"); - public final By show_total_text = By.xpath("//span[@id='displayvalue']"); - - public boolean verifyMainScreenElements(WebDriver driver) { - boolean flag = true; - try{ - logger.info("Verifying Main Page Elements."); - ArrayList locators = new ArrayList(); - - locators.add(user_message_input); - locators.add(show_message_button); - locators.add(enter_first_value); - locators.add(enter_second_value); - locators.add(get_total_button); - - if (_reusableFunc.verifyElementsLocated(driver, locators)){ - logger.info("All Main Page Elements Displayed."); - }else { - flag = false; - logger.error("Main Page Elements Not Displayed."); - } - - }catch(Exception Ex){ - flag = false; - logger.error("Exception Occurred While Verifying Main Page Elements: "+Ex.getMessage()); - } - return flag; - } - - public boolean verifyValidUserInput(WebDriver driver, String userInput){ - boolean flag = false; - - try { - logger.info("Verifying Valid User Input."); - - _reusableFunc.enterText(driver, user_message_input, userInput); - _reusableFunc.click(driver, show_message_button); - String message = _reusableFunc.getTextByInnerText(driver, show_message_text); - flag = ReusableFunctions.verifyTextMatch(driver, message, userInput); - - }catch(Exception Ex){ - logger.error("Exception Occurred While Verifying Valid User Input: "+Ex.getMessage()); - } - return flag; - } - - public boolean verifyAdditionFunctionality(WebDriver driver, String numA, String numB, String expected){ - boolean flag = false; - - try { - logger.info("Verifying Addition Functionality."); - - _reusableFunc.enterText(driver, enter_first_value, numA); - _reusableFunc.enterText(driver, enter_second_value, numB); - _reusableFunc.click(driver, get_total_button); - String addition = _reusableFunc.getTextByInnerText(driver, show_total_text); - flag = ReusableFunctions.verifyTextMatch(driver, addition, expected); - - }catch(Exception Ex){ - logger.error("Exception Occurred While Verifying Addition Functionality: "+Ex.getMessage()); - } - return flag; - } - -} +package com.selenium.pages; + +import com.selenium.base.TestBase; +import com.selenium.util.ReusableFunctions; +import org.apache.log4j.Logger; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +import java.util.ArrayList; + +public class MainPage extends TestBase { + + static Logger logger = Logger.getLogger(MainPage.class.getName()); + ReusableFunctions _reusableFunc = new ReusableFunctions(); + + // Web App + + public final By user_message_input = By.xpath("//input[@id='user-message']"); + public final By show_message_button = By.xpath("//button[text()='Show Message']"); + public final By show_message_text = By.xpath("//div[@id='user-message']//following::span[@id='display']"); + public final By enter_first_value = By.xpath("//input[@id='sum1']"); + public final By enter_second_value = By.xpath("//input[@id='sum2']"); + public final By get_total_button = By.xpath("//button[text()='Get Total']"); + public final By show_total_text = By.xpath("//span[@id='displayvalue']"); + + public boolean verifyMainScreenElements(WebDriver driver) { + boolean flag = true; + try{ + logger.info("Verifying Main Page Elements."); + ArrayList locators = new ArrayList(); + + locators.add(user_message_input); + locators.add(show_message_button); + locators.add(enter_first_value); + locators.add(enter_second_value); + locators.add(get_total_button); + + if (_reusableFunc.verifyElementsLocated(driver, locators)){ + logger.info("All Main Page Elements Displayed."); + }else { + flag = false; + logger.error("Main Page Elements Not Displayed."); + } + + }catch(Exception Ex){ + flag = false; + logger.error("Exception Occurred While Verifying Main Page Elements: "+Ex.getMessage()); + } + return flag; + } + + public boolean verifyValidUserInput(WebDriver driver, String userInput){ + boolean flag = false; + + try { + logger.info("Verifying Valid User Input."); + + _reusableFunc.enterText(driver, user_message_input, userInput); + _reusableFunc.click(driver, show_message_button); + String message = _reusableFunc.getTextByInnerText(driver, show_message_text); + flag = ReusableFunctions.verifyTextMatch(driver, message, userInput); + + }catch(Exception Ex){ + logger.error("Exception Occurred While Verifying Valid User Input: "+Ex.getMessage()); + } + return flag; + } + + public boolean verifyAdditionFunctionality(WebDriver driver, String numA, String numB, String expected){ + boolean flag = false; + + try { + logger.info("Verifying Addition Functionality."); + + _reusableFunc.enterText(driver, enter_first_value, numA); + _reusableFunc.enterText(driver, enter_second_value, numB); + _reusableFunc.click(driver, get_total_button); + String addition = _reusableFunc.getTextByInnerText(driver, show_total_text); + flag = ReusableFunctions.verifyTextMatch(driver, addition, expected); + + }catch(Exception Ex){ + logger.error("Exception Occurred While Verifying Addition Functionality: "+Ex.getMessage()); + } + return flag; + } + +} diff --git a/src/test/java/com/selenium/listeners/ExtentManager.java b/src/test/java/com/selenium/listeners/ExtentManager.java index 8add111..9c89542 100644 --- a/src/test/java/com/selenium/listeners/ExtentManager.java +++ b/src/test/java/com/selenium/listeners/ExtentManager.java @@ -1,49 +1,49 @@ -package com.selenium.listeners; - -import com.aventstack.extentreports.ExtentReports; -import com.aventstack.extentreports.ExtentTest; -import com.aventstack.extentreports.Status; -import com.aventstack.extentreports.reporter.ExtentHtmlReporter; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -//OB: ExtentReports extent instance created here. That instance can be reachable by getReporter() method. - -public class ExtentManager { - - private static ExtentReports extent; - private static ExtentTest logger; - - public ExtentManager(ExtentReports reports){ - extent = reports; - } - - public synchronized static ExtentReports getReporter() throws IOException { - if(extent == null){ - String workingDir = System.getProperty("user.dir"); - - FileInputStream inputStream = new FileInputStream(new File(workingDir+"/src/test/resource/extent-config.xml")); - ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter( workingDir+"/ExtentReports/ExtentReportResults"+System.getProperty("current.date")+".html"); - htmlReporter.loadConfig(inputStream); - - extent = new ExtentReports(); - extent.attachReporter(htmlReporter); - extent.setSystemInfo("Host Name", "Selenium Test Automation"); - extent.setSystemInfo("Environment", "QA Environment"); - extent.setSystemInfo("User Name", "Abhilash Sharma"); - - } - return extent; - } - - public synchronized static ExtentTest getLogger(String testCaseName){ - try{ - logger = getReporter().createTest(testCaseName); - }catch (Exception Ex){ - Ex.printStackTrace(); - } - return logger; - } -} +package com.selenium.listeners; + +import com.aventstack.extentreports.ExtentReports; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; +import com.aventstack.extentreports.reporter.ExtentHtmlReporter; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +//OB: ExtentReports extent instance created here. That instance can be reachable by getReporter() method. + +public class ExtentManager { + + private static ExtentReports extent; + private static ExtentTest logger; + + public ExtentManager(ExtentReports reports){ + extent = reports; + } + + public synchronized static ExtentReports getReporter() throws IOException { + if(extent == null){ + String workingDir = System.getProperty("user.dir"); + + FileInputStream inputStream = new FileInputStream(new File(workingDir+"/src/test/resource/extent-config.xml")); + ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter( workingDir+"/ExtentReports/ExtentReportResults"+System.getProperty("current.date")+".html"); + htmlReporter.loadConfig(inputStream); + + extent = new ExtentReports(); + extent.attachReporter(htmlReporter); + extent.setSystemInfo("Host Name", "Selenium Test Automation"); + extent.setSystemInfo("Environment", "QA Environment"); + extent.setSystemInfo("User Name", "Abhilash Sharma"); + + } + return extent; + } + + public synchronized static ExtentTest getLogger(String testCaseName){ + try{ + logger = getReporter().createTest(testCaseName); + }catch (Exception Ex){ + Ex.printStackTrace(); + } + return logger; + } +} diff --git a/src/test/java/com/selenium/listeners/Transformer.java b/src/test/java/com/selenium/listeners/Transformer.java index 997f7df..1536301 100644 --- a/src/test/java/com/selenium/listeners/Transformer.java +++ b/src/test/java/com/selenium/listeners/Transformer.java @@ -1,18 +1,18 @@ -package com.selenium.listeners; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.util.HashMap; - -import com.selenium.base.TestBase; -import com.selenium.testdata.DataReader; -import org.testng.IAnnotationTransformer; -import org.testng.annotations.ITestAnnotation; - -public class Transformer implements IAnnotationTransformer { - public static HashMap> runmodeData = DataReader.testDataMappedToTestName(TestBase.prop.getProperty("TestDataExcelFileName"), TestBase.prop.getProperty("RunModeSheetName")); - - public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { - annotation.setEnabled(DataReader.isRunnable(testMethod.getName(), runmodeData)); - } -} +package com.selenium.listeners; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.HashMap; + +import com.selenium.base.TestBase; +import com.selenium.testdata.DataReader; +import org.testng.IAnnotationTransformer; +import org.testng.annotations.ITestAnnotation; + +public class Transformer implements IAnnotationTransformer { + public static HashMap> runmodeData = DataReader.testDataMappedToTestName(TestBase.prop.getProperty("TestDataExcelFileName"), TestBase.prop.getProperty("RunModeSheetName")); + + public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { + annotation.setEnabled(DataReader.isRunnable(testMethod.getName(), runmodeData)); + } +} diff --git a/src/test/java/com/selenium/testcases/MainPageTests.java b/src/test/java/com/selenium/testcases/MainPageTests.java index ba452b7..e2f5e64 100644 --- a/src/test/java/com/selenium/testcases/MainPageTests.java +++ b/src/test/java/com/selenium/testcases/MainPageTests.java @@ -1,119 +1,119 @@ -package com.selenium.testcases; - -import com.aventstack.extentreports.ExtentReports; -import com.aventstack.extentreports.ExtentTest; -import com.aventstack.extentreports.Status; -import com.aventstack.extentreports.markuputils.ExtentColor; -import com.aventstack.extentreports.markuputils.MarkupHelper; -import com.selenium.base.TestBase; -import com.selenium.listeners.ExtentManager; -import com.selenium.pages.MainPage; -import com.selenium.testdata.DataReader; -import com.selenium.util.ReusableFunctions; -import org.testng.ITestResult; -import org.testng.annotations.*; -import org.testng.asserts.SoftAssert; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.HashMap; - -public class MainPageTests extends TestBase { - - public static MainPage _mainPage; - public static SoftAssert _softAssert; - - public static String testCaseName = null; - public static ExtentTest logger = null; - public static ExtentManager extManager = null; - public static ExtentReports extent = null; - - public static DataReader reader = new DataReader(); - - public static HashMap> tcData = DataReader.testDataMappedToTestName(prop.getProperty("TestDataExcelFileName"), prop.getProperty("TestDataSheetName")); - - public MainPageTests(){ - super(); - } - - @BeforeMethod - public static void setUp(Method method) throws IOException { - initialization(); - _mainPage = new MainPage(); - _softAssert = new SoftAssert(); - - testCaseName = method.getName(); - extManager = new ExtentManager(extent); - extent = ExtentManager.getReporter(); - logger = ExtentManager.getLogger(testCaseName); - } - - @Test(priority = 1) - public void verifyMainScreenElements() { - - if (!_mainPage.verifyMainScreenElements(driver)) { - _softAssert.fail("Element not present on the page"); - } - _softAssert.assertAll(); - } - - @Test(priority = 2) - public void verifyValidUserInput() { - String userInput = tcData.get(testCaseName).get("Text_Message"); - - if (!_mainPage.verifyValidUserInput(driver, userInput)) { - _softAssert.fail("Not a valid user input: " + userInput); - } - _softAssert.assertAll(); - } - - @Test(priority = 3) - public void verifyValidAddition() { - String numA = tcData.get(testCaseName).get("Number_A"); - String numB = tcData.get(testCaseName).get("Number_B"); - String expected = tcData.get(testCaseName).get("Expected"); - - if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { - _softAssert.fail("Not a valid addition: " + expected); - } - _softAssert.assertAll(); - } - - @Test(priority = 4) - public void verifyInvalidAddition() { - String numA = tcData.get(testCaseName).get("Number_A"); - String numB = tcData.get(testCaseName).get("Number_B"); - String expected = tcData.get(testCaseName).get("Expected"); - - if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { - _softAssert.fail("Not a valid addition: " + expected); - } - _softAssert.assertAll(); - } - - @AfterMethod - public void getResult(ITestResult result) throws Exception{ - - if(result.getStatus() == ITestResult.FAILURE){ - String screenShotPath = ReusableFunctions.takeScreenShot(driver, "SeleniumTestScreen"); - logger.log(Status.FAIL, MarkupHelper.createLabel(result.getName()+" Test case FAILED due to below issues:", ExtentColor.RED)); - logger.fail(result.getThrowable()); - logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenShotPath, testCaseName)); - - }else if(result.getStatus() == ITestResult.SKIP){ - logger.log(Status.SKIP, MarkupHelper.createLabel(result.getName()+" Test case SKIPPED due to below issues:", ExtentColor.GREY)); - logger.skip(result.getThrowable()); - - }else if(result.getStatus() == ITestResult.SUCCESS){ - logger.log(Status.PASS, MarkupHelper.createLabel(result.getName()+" Test case PASSED.", ExtentColor.GREEN)); - } - - if (driver != null) { - driver.manage().deleteAllCookies(); - driver.close(); - } - } - @AfterTest - public void tearDown(){ - extent.flush(); - } -} +package com.selenium.testcases; + +import com.aventstack.extentreports.ExtentReports; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; +import com.aventstack.extentreports.markuputils.ExtentColor; +import com.aventstack.extentreports.markuputils.MarkupHelper; +import com.selenium.base.TestBase; +import com.selenium.listeners.ExtentManager; +import com.selenium.pages.MainPage; +import com.selenium.testdata.DataReader; +import com.selenium.util.ReusableFunctions; +import org.testng.ITestResult; +import org.testng.annotations.*; +import org.testng.asserts.SoftAssert; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.HashMap; + +public class MainPageTests extends TestBase { + + public static MainPage _mainPage; + public static SoftAssert _softAssert; + + public static String testCaseName = null; + public static ExtentTest logger = null; + public static ExtentManager extManager = null; + public static ExtentReports extent = null; + + public static DataReader reader = new DataReader(); + + public static HashMap> tcData = DataReader.testDataMappedToTestName(prop.getProperty("TestDataExcelFileName"), prop.getProperty("TestDataSheetName")); + + public MainPageTests(){ + super(); + } + + @BeforeMethod + public static void setUp(Method method) throws IOException { + initialization(); + _mainPage = new MainPage(); + _softAssert = new SoftAssert(); + + testCaseName = method.getName(); + extManager = new ExtentManager(extent); + extent = ExtentManager.getReporter(); + logger = ExtentManager.getLogger(testCaseName); + } + + @Test(priority = 1) + public void verifyMainScreenElements() { + + if (!_mainPage.verifyMainScreenElements(driver)) { + _softAssert.fail("Element not present on the page"); + } + _softAssert.assertAll(); + } + + @Test(priority = 2) + public void verifyValidUserInput() { + String userInput = tcData.get(testCaseName).get("Text_Message"); + + if (!_mainPage.verifyValidUserInput(driver, userInput)) { + _softAssert.fail("Not a valid user input: " + userInput); + } + _softAssert.assertAll(); + } + + @Test(priority = 3) + public void verifyValidAddition() { + String numA = tcData.get(testCaseName).get("Number_A"); + String numB = tcData.get(testCaseName).get("Number_B"); + String expected = tcData.get(testCaseName).get("Expected"); + + if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { + _softAssert.fail("Not a valid addition: " + expected); + } + _softAssert.assertAll(); + } + + @Test(priority = 4) + public void verifyInvalidAddition() { + String numA = tcData.get(testCaseName).get("Number_A"); + String numB = tcData.get(testCaseName).get("Number_B"); + String expected = tcData.get(testCaseName).get("Expected"); + + if (!_mainPage.verifyAdditionFunctionality(driver, numA, numB, expected)) { + _softAssert.fail("Not a valid addition: " + expected); + } + _softAssert.assertAll(); + } + + @AfterMethod + public void getResult(ITestResult result) throws Exception{ + + if(result.getStatus() == ITestResult.FAILURE){ + String screenShotPath = ReusableFunctions.takeScreenShot(driver, "SeleniumTestScreen"); + logger.log(Status.FAIL, MarkupHelper.createLabel(result.getName()+" Test case FAILED due to below issues:", ExtentColor.RED)); + logger.fail(result.getThrowable()); + logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenShotPath, testCaseName)); + + }else if(result.getStatus() == ITestResult.SKIP){ + logger.log(Status.SKIP, MarkupHelper.createLabel(result.getName()+" Test case SKIPPED due to below issues:", ExtentColor.GREY)); + logger.skip(result.getThrowable()); + + }else if(result.getStatus() == ITestResult.SUCCESS){ + logger.log(Status.PASS, MarkupHelper.createLabel(result.getName()+" Test case PASSED.", ExtentColor.GREEN)); + } + + if (driver != null) { + driver.manage().deleteAllCookies(); + driver.close(); + } + } + @AfterTest + public void tearDown(){ + extent.flush(); + } +}