How to run Cucumber with OR AND Multiple tags

Bala picture Bala · May 28, 2014 · Viewed 12.5k times · Source

I have cucumber scenarios with examples. Examples are split into using multiple tags like below:

Feature: ...
  Scenario Outline: ...
    ...    
    @Admin @INT
      Examples:
      ...    
    @Admin @EXT
      Examples:
      ...
    @User @EXT
      Examples:
      ...
    @User @INT
      Examples:
      ...

To run scenarios with tags @Admin AND @EXT I use

...tags = {"@Admin","@EXT"}...

How do I run scenarios with

{"@Admin","@EXT"} && {"@User","@INT"}, {"@Admin","@EXT"} || {"@User","@INT"}

Answer

MikeJRamsey56 picture MikeJRamsey56 · Aug 8, 2018

This change was introduced into cucumber-jvm 2.0.0 (2017-08-29)

Support Tag Expressions (part of #1035 Björn Rasmusson)

Migrating from old style tags
--tags @dev stays the same
--tags ~@dev becomes --tags 'not @dev'
--tags @foo,@bar becomes --tags '@foo or @bar'
--tags @foo --tags @bar becomes --tags '@foo and bar'
--tags ~@foo --tags @bar,@zap becomes --tags 'not @foo and (@bar or @zap)'

So perhaps something like this:

-Dcucumber.options="--tags '(@Admin and @EXT) or (@User and @INT)'"

EDIT

For @CucumberOptions, the above would look like:

tags = {"@tag"} is unchanged

tags = {"~tag"} becomes tags = {"not tag"}

tags = {"@tag1,@tag2") becomes tags = {"@tag1 or @tag2"}

tags = {"@tag1","@tag2"} becomes tags = {"@tag1 and @tag2"}

tags = {"@tag1","@tag2,@tag3"} becomes tags = {"@tag1 and (@tag2 or @tag3)"}