How to ignore particular scenario in cucumber?

93,020

Solution 1

Use tag ~@tag_name

To exclude scenarios with a certain tag

cucumber --tags ~@tag_name

Note I used ~ symbol.


One thing to note here is that Cucumber will exit with a status of 1 if your @wip-tagged scenarios pass (it’s a reminder that they’re not works in progress anymore since they pass).

UPDATE 1

Sample Scenario

@billing
Feature: Verify billing

  @important
  Scenario: Missing product description

  Scenario: Several products

Running Tags

cucumber --tags @billing            # Runs both scenarios
cucumber --tags @important          # Runs the first scenario
cucumber --tags ~@important         # Runs the second scenario (Scenarios without @important)

Offical document: https://github.com/cucumber/cucumber/wiki/Tags

Solution 2

According to Cucumber.io there are 2 styles in which a tag expression can be defined. For your specific case, to exclude steps or features marked with @ignore, these 2 styles translate into:

  • old style : cucumber --tags ~@ignore
  • new style : cucumber --tags "not @ignore".

To my surprise, using the same cucumber-js v1.3.1 running on Node.js v6.9.2, I found that the Windows version accepted only the new style, while the Linux one accepted only the old style. Depending on your setup, you may want to try both and see if you succeed with any of them.

Solution 3

*.feature

@skip_scenario
Scenario: Hey i am a scenario
  Given blah blah
  And blah blah blah

CucumberHooks.java

package CucumberHooks;
import cucumber.api.Scenario;
import cucumber.api.java.Before;

public class CucumberHooks {
    @Before("@skip_scenario")
    public void skip_scenario(Scenario scenario){
        System.out.println("SKIP SCENARIO: " + scenario.getName());
        Assume.assumeTrue(false);
    }
}

Solution 4

Using the JUnit runner class and with reference to https://cucumber.io/docs/cucumber/api/#ignoring-a-subset-of-scenarios

You can create your own ignore tag

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(tags = "not @ignore")
public class RunCucumberTest {
}

Then just tag the scenario like so:

  @ignore
  Scenario: Check if all the 3 categories of cats are displayed

    Given I open the Cats App

    When I view the home screen

    Then I should see all three cats categories displayed

Solution 5

@ActivateSegment
Feature: Test for Activate segment

  Scenario: Login
    Given I navigate to M
    And I enter user name 
    And I enter password 
    And I login to MM

  Scenario: Open grid
    Given I choose menu
    And I choose Segments menu

   @avoid
  Scenario: Open segment creation page
    Given I click on New button
    And I click on Segment button

in cucumber options

in runner class, use the tags as shown below that you don't want to run: tags = {"~@avoid"}

Share:
93,020
selvi
Author by

selvi

Updated on November 19, 2021

Comments

  • selvi
    selvi over 2 years
    1. I am using cucumber to feed scenario and java as a language.
    2. I need to ignore particular scenario, while running an automation test.
    3. I have tried with below @ignore syntax, it doesn't work at all.
    4. It doesn't skip particular scenario, it keeps on executing all the test scenario, which I have feed in the feature file.

    Feature File

    @ActivateSegment
    Feature: Test for Activate segment
    
      Scenario: Login
        Given I navigate to M
        And I enter user name 
        And I enter password 
        And I login to MM
    
      Scenario: Open grid
        Given I choose menu
        And I choose Segments menu
    
      Scenario: Open segment creation page
        Given I click on New button
        And I click on Segment button