hooks in cucumber
HOOKS
Cucumber supports hooks, which are blocks of
code that run before or after each scenario.
You can define them anywhere in your project
or step definition layers,
using the methods @Before and @After.
Cucumber Hooks allows us to better manage
the code workflow and helps us to reduce
the code redundancy. We can say that it is an unseen step,
which allows us to perform our scenarios or tests.
Hooks are blocks of code that can run at
various points in the Cucumber execution cycle.
They are typically used for setup and teardown of
the environment before and after each scenario.
@Before and @After annotations has to be
imported from io.cucumber library.
- import io.cucumber.java.After;
- import io.cucumber.java.Before;
Why Cucumber Hooks?
In the world of testing, you must have
encountered the situations where you need
to perform the prerequisite steps before
testing any test scenario. This prerequisite can be anything from:
Launchinh WebDriver
Setting up DB connections
Setting up test data
Setting up browser cookies
Setting up implicit wait
Navigating to certain page
or anything before the test
In the same way there are always after steps as well of the tests like:
Closing WebDriver
Closing DB connections
Clearing the test data
Clearing browser cookies
Logging out from the application
Printing reports or logs
Flushing Logger
Taking screenshots on an error
or anything after the test
To handle these kind of situations,
cucumber hooks are the best choice to use.
Unlike TestNG Annotations, cucumber supports only two hooks
(Before & After) which works at the start
and the end of each test scenario.
As the name suggests, @before hook gets executed
well before each test scenario, and @after hook
gets executed after executing the scenario.