Error While trying to run feature from resource package. Using Cucumber Testng

25 Views Asked by At

Duplicate Step Definition between two feature files.

First Feature File For Registeration:

@smoke
Feature: Register | User enter his data in Registration Form
  Scenario: User Enter Valid Data in Registration Form
    Given Navigate To Registration Form
    When Fill Required Fields With Valid Data
    And Click Register Button
    Then Verify Success Registration

  Scenario: User Enter Invalid Data in Registration Form
      Given Navigate To Registration Form
      When Fill Required Fields With Invalid Data
      And Click Register Button
      Then Verify Unsuccessful Registration

Second Feature File For Login:

@smoke
Feature: Login  |  User enter his data in Login Form
  Scenario: User Enter Valid Data in Login Form
    Given Navigate To Login Form
    When Fill Required Fields With Valid Data
    And Click Login Button
    Then Verify Success Login

  Scenario: User Enter Data in Login Form
    Given Navigate To Login Form
    When Fill Required Fields With Valid Email & Invalid Password
    And Click Login Button
    Then Verify Unsuccessful Login

  Scenario: User Enter Data in Login Form
    Given Navigate To Login Form
    When Fill Required Fields With Invalid Email & Valid Password
    And Click Login Button
    Then Verify Unsuccessful Login

  Scenario: User Enter Data in Login Form
    Given Navigate To Login Form
    When Leave Email & Password Field Empty
    And Click Login Button
    Then Verify Unsuccessful Login Empty

Class Called TestRunner in Runner Package is main class for Running:

@CucumberOptions(
        features ="src/main/resources",
        glue={"org/example/Step_Definition"},
        tags = "@smoke",
        monochrome = true,
        plugin = {"pretty",                    
                "html:target/cucumber.html",
                "json:target/cucumber.json",
                "junit:target/cukes.xml",
                "rerun:target/rerun.txt"},
        dryRun = false
)

    //extends Object. [AbstractTestNGCucumberTests] Runs cucumber every detected feature as separated test.
public class TestRunner extends AbstractTestNGCucumberTests {
}

Registeration and login Test Cases are in package called Step_Definition

Registeration Test Case:

P01_nopRegister Register = new P01_nopRegister();


    //First Scenario

    @Given("Navigate To Registration Form")
    public void RegisterForm(){
        Register.Registerform().click();
    }

    @When("Fill Required Fields With Valid Data")
    public void Valid_Register(){
        Register.GenderMale().click();
        Register.FirstName().sendKeys("Youssef");
        Register.LastName().sendKeys("Benyameen");
        Select DayDrpList = new Select(Register.DayDropDownList());
        DayDrpList.selectByIndex(23);
        Select MonthDrpList = new Select(Register.MonthDropDownList());
        MonthDrpList.selectByVisibleText("October");
        Select YearDrpList = new Select(Register.YearDropDownList());
        YearDrpList.selectByValue("1999");
        Register.Email().sendKeys("[email protected]");
        Register.Password().sendKeys("Beny/000");
        Register.ConfirmPassword().sendKeys("Beny/000");
    }

    @And("Click Register Button")
    public void Register_button(){
        Register.RegisterButton().click();
    }

    @Then("Verify Success Registration")
    public void SuccessRegister(){
        Assert.assertTrue(Register.ContinueButton().isDisplayed());
    }

    //Second Scenario

    @When("Fill Required Fields With Invalid Data")
    public void InvalidData(){
        Register.GenderMale().click();
        Register.FirstName().sendKeys("Youssef");
        Register.LastName().sendKeys("Benyameen");
        Select DayDrpList = new Select(Register.DayDropDownList());
        DayDrpList.selectByIndex(23);
        Select MonthDrpList = new Select(Register.MonthDropDownList());
        MonthDrpList.selectByVisibleText("October");
        Select YearDrpList = new Select(Register.YearDropDownList());
        YearDrpList.selectByValue("1999");
        Register.Email().sendKeys("[email protected]");
        Register.Password().sendKeys("Beny/000");
        Register.ConfirmPassword().sendKeys("Beny/020");
    }

    @Then("Verify Unsuccessful Registration")
    public void Unsuccessful_Register(){
        String PasswordError = Register.ErrorMessage().getText();
        Assert.assertEquals(PasswordError,"The password and confirmation password do not match.");
    }

Login Test Case:

  P02_nopLogin Login = new P02_nopLogin();


    //First Scenario
    @Given("Navigate To Login Form")
    public void Login_form(){
        Login.LoginForm().click();
    }

    @When("Fill Required Fields With Valid Data")
    public void ValidLogin(){
        Login.Email().sendKeys("[email protected]");
        Login.Password().sendKeys("Beny/000");
    }

    @And("Click Login Button")
            public void Loginbutton(){
        Login.LoginButton().click();
    }

   @Then("Verify Success Login")
           public void SuccessLogin(){
       String LogoutText = Login.LogoutButton().getText();
       Assert.assertTrue(LogoutText.contains("Log out"));
   }

        //Second Scenario
    @When("Fill Required Fields With Valid Email & Invalid Password")
    public void Invalid_login_1(){
        Login.Email().sendKeys("[email protected]");
        Login.Password().sendKeys("Beny/77");
    }

    @Then("Verify Unsuccessful Login")
    public void UnsuccessLogin(){
        String ErrorMsg = Login.ErrorMessage().getText();
        Assert.assertTrue(ErrorMsg.contains("Login was unsuccessful."));
    }

    //Third Scenario

   @Then("Fill Required Fields With Invalid Email & Valid Password")
   public void Unsuccess_Login_2(){
       Login.Email().sendKeys("[email protected]");
       Login.Password().sendKeys("Beny/000");
   }


   //Fourth Scenario
    @When("Leave Email & Password Field Empty")
    public void Empty_Login(){
        Login.Email().sendKeys(" ");
        Login.Email().sendKeys(Keys.ENTER);
        Login.Password().sendKeys("");
    }

    @Then("Verify Unsuccessful Login Empty")
    public void AssertEmptyLogin(){
        String errMessage = Login.emptyErrorMessage().getText();
        Assert.assertEquals(errMessage,"Please enter your email");

    }

I have Changed the Methods' names and data used in sendkeys in both test cases but the error still appears.

Does Anyone have a suggestion or recommendation for this issue ?

is this issue could be from version of cucumber testng used or something like that ?

0

There are 0 best solutions below