Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get current Cucumber feature file name at runtime using Java

I want get current feature file name at runtime using Java. I have scenario info in hook but unable to get feature file

@Before
    public void before(final Scenario scenario) {
               this.scenario = scenario;
      }

Do we have any similar thing to get current Feature file name ?? i am using cucumber version 1.2.4

like image 644
Umesh Kumar Avatar asked Dec 30 '16 10:12

Umesh Kumar


People also ask

How do I find the feature file name in Cucumber?

As a workaround add the feature file name as a tag to the feature file with some kind of identifier. Then you can use scenario. getSourceTagNames() to get all the tags. Using the identifier determine the tag with the feature file name.

How do you find the scenario name in step definition?

Inside the step definition, you can use CucumberHelper. scenario. getName() . Based on this API you can use getID , getSourceTagNames , getStatus and getClass methods.

Can we run feature file in Cucumber?

Run all feature files in a folder If there are other testing frameworks in your project, the IDE will prompt you to select how you want to run your tests: as Cucumber features or as tests of another framework.


2 Answers

UPDATE:

This is my implementation for feature names starting with an uppercase letter like in the example:

private String getFeatureFileNameFromScenarioId(Scenario scenario) {
    String featureName = "Feature ";
    String rawFeatureName = scenario.getId().split(";")[0].replace("-"," ");
    featureName = featureName + rawFeatureName.substring(0, 1).toUpperCase() + rawFeatureName.substring(1);

    return featureName;
}

ORIGINAL:

I don't know if this is useful for you, but I would suggest to use scenario.getId()

This will give you the feature file name and scenario name, for example:

Feature: Login to the app

Scenario: Login to the app with password
Given I am on the login screen
When I enter my passcode
Then I press the ok button

with scenario.getId() you would get the following:

login-to-the-app;login-to-the-app-with-password

Hope this helps you!

like image 108
Carlo Matulessy Avatar answered Oct 12 '22 15:10

Carlo Matulessy


Kotlin 1.5, cucumber-java 6.10.0:

@Before
fun beforeScenario(scenario: Scenario) {
    println(scenario.uri)
}

In my case prints:

file:///C:/Users/K.H/git/JvmClient/src/jvmTest/resources/features/C197544.feature
like image 29
K.H. Avatar answered Oct 12 '22 15:10

K.H.