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..0c5dc5d --- /dev/null +++ b/src/main/java/com/sawyereffect/steps/Hooks.java @@ -0,0 +1,61 @@ +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.openqa.selenium.WebDriverException; +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 (WebDriverException e){ + logger.error("Not able to take screenshot", e); + + } + } + + 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 d4f1859..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,30 +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()); - - final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); - scenario.embed(screenshot, "image/png"); - } - - 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/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