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;
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
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.