Cucumber Step Hooks

Profile picture for user devraj

Step hooks invoked before and after a step. The hooks have "invoke around" semantics. Meaning that if a BeforeStep hook is executed the AfterStep hooks will also be executed regardless of the result of the step. If a step did not pass, the following step and its hooks will be skipped.

These 2 hooks are not used so frequently but there can be several application depending upon your usage:

  • collecting data - such as all external links
  • Screenshot if particular steps failed
  • Wait for peers to synchronise (using vector clocks or Lamport timestamps [order of events in a distributed computer system])
  • You to check if there is any javascript error after each step

Scenario 

Feature: Registration, Login and MyAccount
 
  Background: Titllrgdgdgd sgdgdsfg
    Given I am on the home page
    And I follow "Sign in"	  
 	   
  @sanity
  Scenario: Verify Login Functionality
    When I fill "email" with "goswami.tarun77@gmail.com"
    Then I fill "passwd" with "Test1234"  
    And I click on "Sign in"

Hooks

@BeforeStep
public void bfs()
{
    System.out.println("Before Step is Executed");
}
	
@AfterStep
public void afs()
{
    System.out.println("After Step is Executed");
}

Note: if Step "When I fill "email" with..." failed with some error then @BeforeStep and @AfterStep for next 2 steps starting with Then and And will not execute.