Careeroza
Hooks
Before and After Hooks
Hooks run before and after every scenario: start the browser, quit it, take a screenshot when a scenario fails. They live in a class inside the glue package.
import io.cucumber.java.*;
public class Hooks {
@Before(order = 0)
public void startBrowser() {
DriverFactory.initDriver(ConfigReader.get("browser"), ConfigReader.getBoolean("headless"));
}
@Before(value = "@loggedIn", order = 1) // only for scenarios tagged @loggedIn
public void loginFirst() {
new LoginPage(DriverFactory.getDriver()).open().loginAs("[email protected]", "Secret@123");
}
@After
public void tearDown(Scenario scenario) {
if (scenario.isFailed()) {
byte[] png = ((TakesScreenshot) DriverFactory.getDriver()).getScreenshotAs(OutputType.BYTES);
scenario.attach(png, "image/png", scenario.getName());
}
DriverFactory.quitDriver();
}
}Hook Order
@Before(order=0) startBrowser @Before(order=1) loginFirst (only @loggedIn scenarios) Background steps Scenario steps Given -> When -> Then @AfterStep (optional: screenshot after every step) @After tearDown: attach screenshot if failed, quit browser
Tip: Do not put business steps in hooks except simple setup like login. A reader of the feature file should see what the scenario does.