From 15cdea29174900d66a46a17e06f003dcce1538cd Mon Sep 17 00:00:00 2001 From: Nadia Paola Garcia Date: Tue, 15 Mar 2016 18:38:55 -0400 Subject: [PATCH 1/5] Moving Runner to test folder --- .../java/com/sawyereffect/runner/regression/SearchRunnerTest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{main => test}/java/com/sawyereffect/runner/regression/SearchRunnerTest.java (100%) diff --git a/src/main/java/com/sawyereffect/runner/regression/SearchRunnerTest.java b/src/test/java/com/sawyereffect/runner/regression/SearchRunnerTest.java similarity index 100% rename from src/main/java/com/sawyereffect/runner/regression/SearchRunnerTest.java rename to src/test/java/com/sawyereffect/runner/regression/SearchRunnerTest.java From dae0e7a184c7e9b7d290215d33eaafdf88c13830 Mon Sep 17 00:00:00 2001 From: Nadia Paola Garcia Date: Tue, 15 Mar 2016 18:40:48 -0400 Subject: [PATCH 2/5] try-catch when taking screenshot --- src/main/java/com/sawyereffect/steps/StartingSteps.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sawyereffect/steps/StartingSteps.java b/src/main/java/com/sawyereffect/steps/StartingSteps.java index d4f1859..3e1af56 100644 --- a/src/main/java/com/sawyereffect/steps/StartingSteps.java +++ b/src/main/java/com/sawyereffect/steps/StartingSteps.java @@ -62,8 +62,12 @@ public void quitDriver(Scenario scenario) throws IOException { logger.debug("Taking screenshot of scenario {}", scenario.getName()); - final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); - scenario.embed(screenshot, "image/png"); + try { + final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); + scenario.embed(screenshot, "image/png"); + } catch (Exception e){ + logger.error("Not able to take screenshot"); + } } if (driverFactory != null) { From 383d6b4a36e4560e2a3a05663cc70cd02e1e8995 Mon Sep 17 00:00:00 2001 From: Nadia Paola Garcia Date: Tue, 15 Mar 2016 18:43:58 -0400 Subject: [PATCH 3/5] Move hooks to Hooks class --- .../java/com/sawyereffect/steps/Hooks.java | 59 +++++++++++++++++++ .../com/sawyereffect/steps/StartingSteps.java | 48 +-------------- 2 files changed, 61 insertions(+), 46 deletions(-) create mode 100644 src/main/java/com/sawyereffect/steps/Hooks.java diff --git a/src/main/java/com/sawyereffect/steps/Hooks.java b/src/main/java/com/sawyereffect/steps/Hooks.java new file mode 100644 index 0000000..6bec032 --- /dev/null +++ b/src/main/java/com/sawyereffect/steps/Hooks.java @@ -0,0 +1,59 @@ +package com.sawyereffect.steps; + +import com.sawyereffect.util.DriverFactory; +import cucumber.api.Scenario; +import cucumber.api.java.After; +import cucumber.api.java.AfterStep; +import cucumber.api.java.Before; +import cucumber.api.java.BeforeStep; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + + +public class Hooks { + private static final String TAKE_SCREENSHOT = "Screenshot"; + private final Logger logger = LoggerFactory.getLogger(Hooks.class); + private DriverFactory driverFactory; + private WebDriver driver; + + @Before + public void setupDriver() throws IOException { + driverFactory = new DriverFactory(); + driver = driverFactory.getDriver(); + } + + @After + public void quitDriver(Scenario scenario) throws IOException { + + if (driver != null && (scenario.isFailed() || scenario.getName().contains(TAKE_SCREENSHOT))) { + + logger.debug("Taking screenshot of scenario {}", scenario.getName()); + + try { + final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); + scenario.embed(screenshot, "image/png"); + } catch (Exception e){ + logger.error("Not able to take screenshot"); + } + } + + if (driverFactory != null) { + driverFactory.destroyDriver(); + } + } + + @BeforeStep + public void beforeStep(Scenario scenario) { + logger.debug("Executing before every step {}", scenario.getName()); + } + + @AfterStep + public void afterStep(Scenario scenario) { + logger.debug("Executing after every step {}", scenario.getName()); + } +} diff --git a/src/main/java/com/sawyereffect/steps/StartingSteps.java b/src/main/java/com/sawyereffect/steps/StartingSteps.java index 3e1af56..bc43440 100644 --- a/src/main/java/com/sawyereffect/steps/StartingSteps.java +++ b/src/main/java/com/sawyereffect/steps/StartingSteps.java @@ -2,11 +2,6 @@ import com.sawyereffect.util.DriverFactory; import com.sawyereffect.util.PropertyReader; -import cucumber.api.Scenario; -import cucumber.api.java.After; -import cucumber.api.java.AfterStep; -import cucumber.api.java.Before; -import cucumber.api.java.BeforeStep; import cucumber.api.java.en.Given; import org.openqa.selenium.*; import org.openqa.selenium.support.ui.ExpectedConditions; @@ -14,22 +9,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; import java.util.concurrent.TimeUnit; -public class StartingSteps { +public class StartingSteps extends DriverFactory{ - private static final String TAKE_SCREENSHOT = "Screenshot"; private final Logger logger = LoggerFactory.getLogger(StartingSteps.class); - private DriverFactory driverFactory; - private WebDriver driver; private final PropertyReader reader = PropertyReader.getPropertyReader(); - - @Before - public void setupDriver() throws IOException { - driverFactory = new DriverFactory(); - driver = driverFactory.getDriver(); - } + private final WebDriver driver = getDriver(); @Given("^User is in google main page$") public void user_is_on_home_page() throws Throwable { @@ -54,34 +40,4 @@ private void waitForPageLogoToLoad() { By.id("hplogo"))); } - - @After - public void quitDriver(Scenario scenario) throws IOException { - - if (driver != null && (scenario.isFailed() || scenario.getName().contains(TAKE_SCREENSHOT))) { - - logger.debug("Taking screenshot of scenario {}", scenario.getName()); - - try { - final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); - scenario.embed(screenshot, "image/png"); - } catch (Exception e){ - logger.error("Not able to take screenshot"); - } - } - - if (driverFactory != null) { - driverFactory.destroyDriver(); - } - } - - @BeforeStep - public void beforeStep(Scenario scenario) { - logger.debug("Executing before every step {}", scenario.getName()); - } - - @AfterStep - public void afterStep(Scenario scenario) { - logger.debug("Executing after every step {}", scenario.getName()); - } } From 05bf2f6e6a7181d870842a8a81922bee39d8874e Mon Sep 17 00:00:00 2001 From: Nadia Paola Garcia Date: Wed, 16 Mar 2016 08:54:20 -0400 Subject: [PATCH 4/5] Catching WebDriverException instead of a generic exception. Printing stack trace. --- src/main/java/com/sawyereffect/steps/Hooks.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sawyereffect/steps/Hooks.java b/src/main/java/com/sawyereffect/steps/Hooks.java index 6bec032..a699ab4 100644 --- a/src/main/java/com/sawyereffect/steps/Hooks.java +++ b/src/main/java/com/sawyereffect/steps/Hooks.java @@ -9,6 +9,7 @@ import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebDriverException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,8 +38,9 @@ public void quitDriver(Scenario scenario) throws IOException { try { final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); scenario.embed(screenshot, "image/png"); - } catch (Exception e){ - logger.error("Not able to take screenshot"); + } catch (WebDriverException e){ + logger.error("Not able to take screenshot: {}", e.getMessage()); + e.printStackTrace(); } } From 3a9ec5b3fea0f25763a57aaddccd0121802de12f Mon Sep 17 00:00:00 2001 From: Nadia Paola Garcia Date: Wed, 16 Mar 2016 09:00:39 -0400 Subject: [PATCH 5/5] Logger to print stacktrace --- src/main/java/com/sawyereffect/steps/Hooks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sawyereffect/steps/Hooks.java b/src/main/java/com/sawyereffect/steps/Hooks.java index a699ab4..0c5dc5d 100644 --- a/src/main/java/com/sawyereffect/steps/Hooks.java +++ b/src/main/java/com/sawyereffect/steps/Hooks.java @@ -39,8 +39,8 @@ public void quitDriver(Scenario scenario) throws IOException { final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); scenario.embed(screenshot, "image/png"); } catch (WebDriverException e){ - logger.error("Not able to take screenshot: {}", e.getMessage()); - e.printStackTrace(); + logger.error("Not able to take screenshot", e); + } }