Amit Dinda Amit Dinda - 2 months ago 6
PHP Question

Error while running behat

The first scenario works but the second one fails

The feature file:

And I click the "#redeem" element
And I wait for the ajax response
And I should see "OPERATOR CONTACT DETAILS AND INFORMATION WILL BE PROVIDED VIA EMAIL ON CONFIRMATION"
And I click the "#place_order" element
And I wait for the ajax response
Then I should see "Woohoo and thanks for booking!"

@javascript
Scenario: For checking mail in inbox of Gmail
Given I am on "https://gmail.com"
And I wait 12 seconds
And I fill in "Email" with "amit.dinda.prdxn@gmail.com"


the minkcontext:

/**
* Fills in form field with specified id|name|label|value.
*
* @When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with "(?P<value>(?:[^"]|\\")*)"$/
* @When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with:$/
* @When /^(?:|I )fill in "(?P<value>(?:[^"]|\\")*)" for "(?P<field>(?:[^"]|\\")*)"$/
*/
public function fillField($field, $value)
{
$field = $this->fixStepArgument($field);
$value = $this->fixStepArgument($value);
$this->getSession()->getPage()->fillField($field, $value);
}


The error message :

And I should see "OPERATOR CONTACT DETAILS AND INFORMATION WILL BE PROVIDED VIA EMAIL ON CONFIRMATION" # FeatureContext::assertPageContainsText()
And I click the "#place_order" element # FeatureContext::iClickTheElement()
And I wait for the ajax response # FeatureContext::iWaitForTheAjaxResponse()
Then I should see "Woohoo and thanks for booking!" # FeatureContext::assertPageContainsText()

@javascript
Scenario: For checking mail in inbox of Gmail # features/Redeem_a_Experience_voucher.feature:45
Given I am on "https://gmail.com" # FeatureContext::visit()
And I wait 12 seconds # FeatureContext::iWaitSeconds()
And I fill in "Email" with "amit.dinda.prdxn@gmail.com" # FeatureContext::fillField()
Form field with id|name|label|value|placeholder "Email" not found. (Behat\Mink\Exception\ElementNotFoundException)
And I click the "#next" element


And if run both scenario differently then it works porperly. Why it not work if both scenario are combined together.

Answer

You should use @insulated tag at the Feature level.
This tag will make sure that you will have a clean session each time.

Add this tag on the first line of your feature file, before Feature key.

You can use @javascript the same way at a feature level and it will apply for each scenario