Hooks(Ordering/Priority)

In Cucumber, you can control the execution order of hooks (i.e., prioritizing @Before and @After) by using an optional order parameter.


package testRunner;
import org.openqa.selenium.WebDriver;
import io.cucumber.java.After;
import io.cucumber.java.Before;

public class wq13 {
private WebDriver driver;
@Before(order = 1)
public void openBrowser() {
System.out.println("Opening browser");
}
@Before(order = 2)
public void login() {
System.out.println("Logging in");
}
@After(order = 2)
public void logout() {
System.out.println("Logging out");
}
@After(order = 1)
public void closeBrowser() {
System.out.println("Closing browser");
}
public WebDriver getDriver() {
return driver;
}
}


Opening browser
Logging in
<--- Scenario Runs --->
Logging out
Closing browser


===================================

Tagged Hooks + Order Example


@Before(order = 1)
public void commonSetup() {
System.out.println("Global setup");
}
@Before(value = "@UI", order = 2)
public void uiSetup() {
System.out.println("UI test setup");
}

This lets you run general hooks first, followed by tag-specific hooks.