What is Scenario Outline in Cucumber

  

What is Scenario Outline in Cucumber?

Scenario Outline in Cucumber is used when you want to run the same scenario multiple times with different sets of data. This is extremely useful for data-driven testing.

It avoids repeating the same scenario logic and makes the feature file clean, readable, and maintainable.


Why Use Scenario Outline?

  • To avoid writing multiple similar scenarios.

  • To test the same logic with different data inputs.

  • To improve test coverage.


How It Works

  • Scenario Outline is written like a normal scenario.
  • Examples keyword is used to provide the input data in a tabular format.
  • Each row in the Examples table is treated as a new execution of the scenario.
  • The placeholders (example: <username><password>) are replaced with values from the Examples table during execution.



Syntax of Scenario Outline

Scenario Outline: Scenario title
  Given some step with <parameter1>
  When action with <parameter2>
  Then expected result

Examples:
  | parameter1 | parameter2 |
  | value1     | value2     |
  | value3     | value4     |



Example: Login Functionality

Feature File: login.feature


Feature: Login Feature

  Scenario Outline: Valid login with different users
    Given User is on Login page
    When User enters username "<username>" and password "<password>"
    Then Login should be successful

    Examples:
      | username | password  |
      | user1    | pass123   |
      | user2    | pass456   |
      | admin    | admin@123 |




Step Definition File (Java)

package stepdefinitions;

import io.cucumber.java.en.*;

public class LoginSteps {

    @Given("User is on Login page")
    public void user_is_on_login_page() {
        System.out.println("User is on Login page");
    }

    @When("User enters username {string} and password {string}")
    public void user_enters_credentials(String username, String password) {
        System.out.println("Username: " + username);
        System.out.println("Password: " + password);
    }

    @Then("Login should be successful")
    public void login_should_be_successful() {
        System.out.println("Login successful!");
    }
}


How It Runs

Cucumber will run the scenario 3 times, once for each row in the Examples table:

  • user1 / pass123
  • user2 / pass456
  • admin / admin@123


Benefits of Scenario Outline

  • Reusability of test steps.

  • Better test coverage for multiple inputs.

  • Easy to maintain and extend.