Cucumber Tagging Rules

Profile picture for user devraj

In the Cucumber Rule Keyword article, we discussed how we could use Rule to group several scenarios that belong to the same business rule.

In this tutorial, we will discuss how we can execute scenarios based on rule tags. Consider this feature file:

@Feature1
Feature: Feature 1

  Background:
    Given I am on the homepage

  @Rule1
    Rule: This is Rule 1
      - Description Line 1
      - Description Line 2
  
      @Smoke
      Scenario: Scenario 1
        When I click on login link
        Then I should see "Registration" link

      @Regression
      Scenario: Scenario 2
        When I click on login link
        Then I should see "Forgot Password" link

    @Rule2
    Rule: This is Rule 1
      - Description Line 1
      - Description Line 2
  	  
      @Smoke
      Scenario: Scenario 3
        When I click on Ask Doubt link
        Then I should see "Ask Doubt" Heading

In the above example, executing the @Rule1 Tag will run Scenario 1 and 2. And, if you will execute the @Rule2 Tag, it will execute scenario 2.

Also, you can observe in output that Scenario inherited tags from features and Rule.

@Feature1 @Rule1 @Smoke
Scenario: Scenario 1                    # features/first.feature:14
  Given I am on the homepage            # com.pb.cucumbertest.stepdefinitions.FirstSD.homepage1()
  When I click on login link            # com.pb.cucumbertest.stepdefinitions.FirstSD.i_click_on_login_link()
  Then I should see "Registration" link # com.pb.cucumbertest.util.CommonSD.i_should_see_link(java.lang.String)

@Feature1 @Rule1 @Regression
Scenario: Scenario 2                       # features/first.feature:19
  Given I am on the homepage               # com.pb.cucumbertest.stepdefinitions.FirstSD.homepage1()
  When I click on login link               # com.pb.cucumbertest.stepdefinitions.FirstSD.i_click_on_login_link()
  Then I should see "Forgot Password" link # com.pb.cucumbertest.util.CommonSD.i_should_see_link(java.lang.String)

@Feature1 @Rule2 @Smoke
Scenario: Scenario 3                    # features/first.feature:29
  Given I am on the homepage            # com.pb.cucumbertest.stepdefinitions.FirstSD.homepage1()
  When I click on Ask Doubt link        # com.pb.cucumbertest.stepdefinitions.FirstSD.i_click_on_ask_doubt_link()
  Then I should see "Ask Doubt" Heading # com.pb.cucumbertest.stepdefinitions.FirstSD.i_should_see_heading(java.lang.String)

Feature tag is common in all scenario, Scenario 1 and 2 inherited @Rule1 and Scenario 3 inherited tag from Rule 2.

Note: Although this Tag is logically associated with the Rule, if you use the same Tag for any other feature file or Rule or Scenario, that feature file or Scenario linked with the same Tag will also be executed.