I have 8 cucumber-jvm
scenarios and the very first scenario measures the page load time and environment availability. In order to avoid unnecessary runs, if the first scenario is failed - for instance, the environment is not available, or loading too slowly - all other scenarios should be skipped.
How can I do that?
My CucumberOptions
:
@RunWith(Cucumber.class)
@CucumberOptions(
strict = true,
features = {"src/test/resources/features"},
glue = {"stepDefinitions"},
format = { "progress", "html:target/Results",
"json:target/Results/cucumber.json"},
tags = {"@test"})
public class TestRunner {
}
Thanks!
Instead of trying to do this in Cucumber consider just writing a simple bash script that
cucumber features/first_scenarios.feature
You can probably do this in about 3 lines of shell script.
One of the things about features is that different people will want to run them in different ways depending on their own particular circumstances. Putting this stuff inside your set of features can make things more difficult for other users.
You can make use of
Assume.assumeTrue(false)
to skip tests. But this will require some changes in test runner and code changes.tags
a value of @Smoke. Other option values default to what you have.Add the
@Smoke
tag to the scenario in the feature file that checks the environment etc. Optionally you could look at splitting the feature files.Create a new class to hold a static flag. It is a simple implementation you might look at making this more robust.
After hook
with the value option set to@Smoke
. Thus it will run only for the smoke scenario.tags
value of @MainTests. Other option values default to what you have.Add the
@MainTests
tag to the other scenarios in the feature file. Optionally you could look at splitting the feature files and give the name of the feature file in the features option value.Run this by using maven failsafe plugin. In the configuration of this plugin add the inclusion of these 2 runners in the pom.xml.
The includes part might be optional if you only have 2 runners. The most important point is that the
RunFirstTest
should be the first to run, so alphabetically should be first.Hope it works.