Hooks are special code blocks that run before and/or after each scenario or step in a feature file. They are used for test setup, cleanup, or any repeated action across scenarios. Hooks help reduce code duplication and improve code maintainability.
Hooks are commonly used for:
Opening and closing a browser
Navigating to a default page
Setting or clearing cookies
Creating or cleaning test data
Connecting or disconnecting from a database
Taking screenshots on failure
Logging or reporting actions
Types of Hooks in Cucumber
Cucumber provides two levels of hooks:
Scenario Hooks
@Before: Runs before each scenario
@After: Runs after each scenario
Step Hooks
@BeforeStep: Runs before each step
@AfterStep: Runs after each step
Typical Use Cases for Hooks
Hook Type |
Common Use Cases |
@Before |
Open browser Setup data Navigate to app |
@After |
Close browser Delete test data Logout |
@BeforeStep |
Log step start Initialize per-step setup |
@AfterStep |
Take screenshots Validate UI status |
Hooks usually places in src > test> java > utils > Hooks.java
Here is the example Hooks.java