Feature
keyword in a .feature
file. They apply to all scenarios and scenario outlines within that particular feature file. When you place a tag (e.g.,
@smoke
, @regression
, @login_feature
) at the feature level, it's as if every scenario and scenario outline inside that feature automatically inherits that tag. This provides a convenient way to group and execute a collection of related scenarios without having to tag each one individually.@Loginfeature
Feature: Login Functionality
@Smoke
Scenario: successfully login with valid details
Given user is on login page
When user enters "admin" and "pass1234"
Then user should land on the homepage
@Wip
Scenario: successfully login with invalid details
Given user is on login page
When user enters "wronguser" and "wrongpasswrd"
Then login error sholud be shown
@Sanity
Scenario: Check presense of login elements
Given user login form is displayed
Then username and password fields should be visible
=============
package Steps;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
public class Tag_Steps {
@Given("user is on login page")
public void user_is_on_login_page() {
System.out.println("user in loginpage");
}
@When("user enters {string} and {string}")
public void user_enters_and(String string1, String string2) {
System.out.println("User Entered details " +string1 +","+string2);
}
@Then("user should land on the homepage")
public void user_should_land_on_the_homepage() {
System.out.println("user landed in homepage");
}
@Then("login error sholud be shown")
public void login_error_sholud_be_shown() {
System.out.println("Login Error displayed");
}
@Given("user login form is displayed")
public void user_login_form_is_displayed() {
System.out.println("login form visible");
}
@Then("username and password fields should be visible")
public void login_fields_visible() {
System.out.println("username and password fields are visible");
}
}
===============
package testRunner;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
@CucumberOptions(features="src/test/java/Features", glue="Steps", monochrome=true,
tags ="@Loginfeature", plugin= {"pretty", "html:target/tags-reports.html"})
public class tagTestRunner extends AbstractTestNGCucumberTests {
}
Output:
@Loginfeature @Smoke
Scenario: successfully login with valid details # src/test/java/Features/loginTag.feature:5
user in loginpage
Given user is on login page # Steps.Tag_Steps.user_is_on_login_page()
User Entered details admin,pass1234
When user enters "admin" and "pass1234" # Steps.Tag_Steps.user_enters_and(java.lang.String,java.lang.String)
user landed in homepage
Then user should land on the homepage # Steps.Tag_Steps.user_should_land_on_the_homepage()
@Loginfeature @Wip
Scenario: successfully login with invalid details # src/test/java/Features/loginTag.feature:12
user in loginpage
Given user is on login page # Steps.Tag_Steps.user_is_on_login_page()
User Entered details wronguser,wrongpasswrd
When user enters "wronguser" and "wrongpasswrd" # Steps.Tag_Steps.user_enters_and(java.lang.String,java.lang.String)
Login Error displayed
Then login error sholud be shown # Steps.Tag_Steps.login_error_sholud_be_shown()
@Loginfeature @Sanity
Scenario: Check presense of login elements # src/test/java/Features/loginTag.feature:18
login form visible
Given user login form is displayed # Steps.Tag_Steps.user_login_form_is_displayed()
username and password fields are visible
Then username and password fields should be visible # Steps.Tag_Steps.login_fields_visible()
PASSED: io.cucumber.testng.AbstractTestNGCucumberTests.runScenario("successfully login with valid details", "Login Functionality")
Runs Cucumber Scenarios
PASSED: io.cucumber.testng.AbstractTestNGCucumberTests.runScenario("Check presense of login elements", "Login Functionality")
Runs Cucumber Scenarios
PASSED: io.cucumber.testng.AbstractTestNGCucumberTests.runScenario("successfully login with invalid details", "Login Functionality")
Runs Cucumber Scenarios
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 3, Passes: 3, Failures: 0, Skips: 0
===============================================