The Rule is an optional keyword in Cucumber that groups a set of Scenarios or communicate agreed restrictions about the coverage of the story.
- Supported in Cucumber: Rule was added in Gherkin v6 in late 2018. In Cucumber, it is an optional keyword available from the Cucumber 6 version. The purpose of the Rule keyword is to represent one business rule that should be implemented.
- Relation with Acceptance Criteria: A single rule is equal to one acceptance criterion. Acceptance criteria are a collection of rules which cover characteristics of a system’s behavior and from which scenarios can be derived.
- Group Scenarios: The Rule keyword is simply a grouping construct. It groups several scenarios that belong to the same business rule. Without its Scenarios, a Rule may be ambiguous. Without a Rule, a scenario lacks context. Together they fully specify the expected behavior of the product and guide the development team’s efforts.
- When to Add Rules: For each Rule, we may need one or more scenarios to explain it. A rule with many Scenarios might be over-complex. A Rule should contain one or more Scenarios that illustrate the particular Rule.
- Supported by IDEs and Tools: Modern IDEs can display scenarios grouped by Rule – and automation results are grouped by Rule as well.
- Tagging Rules: Since scenarios illustrate a rule, it would make sense for them to inherit any tags applied at the rule level. A scenario will inherit any Tags applied to the Rule that it illustrates and any Tags applied to the feature.
- Background in Rules: For each rule, You can have a separate Background section containing the common steps inherited by Scenarios grouped which are part of Rule.
Cucumber Rule Example
@Feature1 Feature: Feature 1 Background: Given I am on the homepage @Rule1 Rule: This is Rule 1 - Description Line 1 - Description Line 2 Background: Rule 1 Background When I click on login link Scenario: Scenario 1 Then I should see "Registration" link Scenario: Scenario 2 Then I should see "Forgot Password" link @Rule2 Rule: This is Rule 1 - Description Line 1 - Description Line 2 Background: Rule 2 background When I click on Ask Doubt link Scenario: Scenario 3 Then I should see "Ask Doubt" Heading
In above example
- Scenario 1 and Scenario 2 belong to Rule 1, and Scenario 3 is part of Rule 2.
- Rule 1 and Rule 2 are tagged and have their separate Background section.