Hi John,
Thank you for answer my question. I think I should give code examples to clarify what I mean in the answer. So, let's suggest we have such project structure:
@NamedUrl{name="home", url="{1}/home"}
class HomePage extends PageObject{
@FindBy(id="addToBasket")
private WebElementFacade addToBasketBatton;
@FindBy(css=".continue-nav-del")
private WebElementFacade continueToDeliveryButton;
WebElementFacade getAddToBasketBatton(){
return addToBasketBatton;
}
WebElementFacade getContinueToDeliveryButton() {
return continueToDeliveryButton;
}
}
class HomePageSteps extends ScenarioSteps{
private HomePage onHomePage() {
return getPages().get(HomePage.class);
}
@Step
public void openHomePage() {
onHomePage().go();
}
@Step
public void clickAddToBasketBatton() {
onHomePage().getAddToBasketBatton().click();
}
@Step
public void clickContinueToDeliveryButton() {
onHomePage().getContinueToDeliveryButton().click();
}
}
public class AddProductToBasketTest extends ThucydidesJUnitStory {
@Steps
public HomePageSteps homePageSteps;
@Given("the user opens home page")
public void theUserOpensHomePage(){
homePageSteps.openHomePage();
}
@When("the user clicks add to basket")
public void theUserClicksAddToBasket(){
homePageSteps.clickAddToBasketBatton();
}
}
public class TheUserBuysTheProductTest extends ThucydidesJUnitStory {
@Steps
public HomePageSteps homePageSteps;
@Given("the user opens home page")
public void theUserOpensHomePage(){
homePageSteps.openHomePage();
}
@When("the user clicks add to basket")
public void theUserClicksAddToBasket(){
homePageSteps.clickAddToBasketBatton();
}
@When("the user clicks continue to delivery")
public void theUserClicksContinueToDelivery(){
homePageSteps.clickContinueToDeliveryButton();
}
}
AddProductToBasketTest.storyScenario 1:
Given the user opens home page
When the user clicks add to basket
TheUserBuysTheProductTest.story
Scenario 1:
Given the user opens home page
When the user clicks add to basket
And the user clicks continue to delivery
__________________________________________________________________________________________________________________________________________________So, we have two story files that contain two steps which do the same things. The question is: Is there any way to declare methods theUserOpensHomePage() and theUserClicksAddToBasket() only in class AddProductToBasketTest and then reuse them in TheUserBuysTheProductTest class without declaration here (i.e. declare only method theUserClicksContinueToDelivery() and story TheUserBuysTheProductTest uses the absent steps from AddProductToBasketTest class)? Now if I do that such steps are marked as pending.