In my project I have 3 feature files named as Login.feature,Home.feature and TransferFund.feature. Each have Background: mentioned in them, in Login.feature's step definition file , I have mentioned @Before and @ After hooks. My understanding of hooks is that, @Before , Background: , Scenario: , @After, in this order the execution should happen , but @After is executed immediately after Backgound, making the execution flow as @Before,Background,@After,@Before, Scenario,Background,@After [@Before, Scenario,Background,@After the order repeats as i have multiple scenarios]
I have included sop statements to understand the flow , google it but not found relevant help
Expected:
Flow to be in this order
@Before,Background,@After,
@Before, Background, Scenario,@After @Before, Background, Scenario,@After
Actual:
@Before, Scenario,Background,@After @Before, Scenario,Background,@After
**Login.feature**
Feature: Validate login page
Background: User navaigates to login page
Given User launch site
Scenario: validate all tabs and logo
Given User should see all tabs
And User should see logo
Scenario: validate error message
Given user entered wrong credentails
When User click login butotn
Then User should see error message
Scenario: validate fotter details
Given user should see all footer details
Scenario: validate successful login
When User click SignIn link
Then User should navigate to SignInPage
Then User should enter username and password
Then User should click LogInBUtton
Then User User should be on Home page
**LoginPageStepDefination.java**
@Before
public void setUp(){
System.out.println("-----Browser created and launched-----");
}
@After
public void tearDown(){
System.out.println("-----Browser is closed-----");
}
@Given("^User launch site$")
public void user_launch_site() throws Throwable {
}
@Given("^User should see all tabs$")
public void user_should_see_all_tabs() throws Throwable {
}
@Given("^User should see logo$")
public void user_should_see_logo() throws Throwable {
}
@Given("^user entered wrong credentails$")
public void user_entered_wrong_credentails() throws Throwable {
}
@When("^User click login butotn$")
public void user_click_login_butotn() throws Throwable {
}
@Then("^User should see error message$")
public void user_should_see_error_message() throws Throwable {
}
@Given("^user should see all footer details$")
public void user_should_see_all_footer_details() throws Throwable {
}
@When("^User click SignIn link$")
public void user_click_SignIn_link() throws Throwable {
}
@Then("^User should navigate to SignInPage$")
public void user_should_navigate_to_SignInPage() throws Throwable {
}
@Then("^User should enter username and password$")
public void user_should_enter_username_and_password() throws Throwable {
}
@Then("^User should click LogInBUtton$")
public void user_should_click_LogInBUtton() throws Throwable {
}
@Then("^User User should be on Home page$")
public void user_User_should_be_on_Home_page() throws Throwable {
}
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
dryRun=true,
strict=false,
features={"src/main/java/com/qa/features/"},
glue={"src/main/java/com/qa/stepdefinations/"},
plugin={"pretty","html:test-output/cucumber.html"}
)
public class TestRunner {}
-------------------------------------------------------------
out put on console
-------------------------------------------------------------
Feature: Validate login page
-----Browser created and launched-----
Background: User navaigates to login page #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:3
Given User launch site #
LoginPageStepDefination.user_launch_site()
-----Browser is closed-----
-----Browser created and launched-----
Scenario: validate all tabs and logo #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:6
Given User should see all tabs #
LoginPageStepDefination.user_should_see_all_tabs()
And User should see logo #
LoginPageStepDefination.user_should_see_logo()
Background: User navaigates to login page #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:3
Given User launch site #
LoginPageStepDefination.user_launch_site()
-----Browser is closed-----
-----Browser created and launched-----
Scenario: validate error message #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:10
Given user entered wrong credentails #
LoginPageStepDefination.user_entered_wrong_credentails()
When User click login butotn #
LoginPageStepDefination.user_click_login_butotn()
Then User should see error message #
LoginPageStepDefination.user_should_see_error_message()
Background: User navaigates to login page #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:3
Given User launch site #
LoginPageStepDefination.user_launch_site()
-----Browser is closed-----
-----Browser created and launched-----
Scenario: validate fotter details #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:15
Given user should see all footer details #
LoginPageStepDefination.user_should_see_all_footer_details()
Background: User navaigates to login page #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:3
Given User launch site #
LoginPageStepDefination.user_launch_site()
-----Browser is closed-----
Scenario: validate successful login #
C:/D/QURATE/CucumberBddHooksFlow/src/main/java/com/qa/
features/Login.feature:18
When User click SignIn link #
LoginPageStepDefination.user_click_SignIn_link()
Then User should navigate to SignInPage #
LoginPageStepDefination.user_should_navigate_to_SignInPage()
Then User should enter username and password #
LoginPageStepDefination.user_should_enter_username_and_password()
Then User should click LogInBUtton #
LoginPageStepDefination.user_should_click_LogInBUtton()
Then User User should be on Home page #
LoginPageStepDefination.user_User_should_be_on_Home_page()
4 Scenarios (4 passed)
15 Steps (15 passed)
0m0.115s
Git path for my dummy project: https://github.com/RajaRaviTeja/DummyCucumberProjectForHooksFlow.git
Any help is highly appreciated