Use And & But keyword in Behat Scenario

Profile picture for user devraj

Our Business requirement does not only consist of single pre-condition, user action or expected outcomes. For few scenarios we have multiple steps where we have to mention Given, When and Then more than one times. 

Behat will not restrict you to use Given, When and Then multiple times one after another but, for readability and expressiveness it is good practice to avoid using same keyword in next line.

To provide more ease to users in reading our Scenarios And and But keyword was introduced.

Use of And keyword in Behat

And keyword is used to add conditions to your steps or add more detail to a step. It's an addition to previous statement. AND is used to add more conditions to Given, When and Then statements. It represent positive statement. 

Use of But Keyword in Behat

But keyword is used to add negative type comments. It is good to use, when your step describe condition which is not expected. For example when you are expecting some text or element should not be present on the page.

Example of Behat Scenario without And & But

 Feature: Registration, Login and MyAccount

  @regression @testing
  Scenario: Verify Login Functionality
    Given I am on the homepage
    Given I should see "Sign in" 
    When I follow "Sign in"
    When I fill in "email address" with "goswami.tarun77@gmail.com"
    When I fill in "password" with "tarun@123"
    When I press "sign in"
    Then I should see "My Account" 
    Then I should see "my account" 
    Then I should not see "Login" 

The problem in above scenario is that Given, When and Then are repeated multiple times and because of that readability is affected.

Example of Behat Scenario with And and But

 Feature: Registration, Login and MyAccount

  @regression @testing
  Scenario: Verify Login Functionality
    Given I am on the homepage
    And I should see "Sign in" 
    When I follow "Sign in"
    And I fill in "email address" with "goswami.tarun77@gmail.com"
    And I fill in "password" with "tarun@123"
    And I press "sign in"
    Then I should see "My Account" 
    And I should see "my account" 
    But I should not see "Login" 
Tags