Тестирование Shopware Войти через Behat Mink

Я не могу понять это.

Я определил следующую особенность:

Feature: Login

  Scenario: Test Basic Login
    Given I am on "/account"
    And I login successfully as "demo@demo.de" with password "demodemo"
    Then I should see "Abmelden"

Контекст объекта выглядит следующим образом:

/**
 * @Given I login successfully as :arg1 with password :arg2
 */
public function iLoginSuccessfullyAsWithPassword($arg1, $arg2)
{
    $page = $this->getSession()->getPage();
    $page->fillField('email', $arg1);
    $page->fillField('password', $arg2);
    $page->pressButton('Anmelden');
}

И чтобы дать полную картину здесь мой behat.yml:

default:
  extensions:
  Behat\MinkExtension:
    base_url: "http://192.168.33.10/s5224"
    default_session: 'goutte'
    javascript_session: 'selenium2'
    goutte: ~
    selenium2: ~

Теперь сценарий работает хорошо, пока I should see "Abmelden", Тогда я получаю

The text "Abmelden" was not found anywhere in the text of the current page. (Behat\Mink\Exception\ResponseTextException)

Это очень расстраивает, так как на самом деле я должен увидеть "Абмельден"...

Я пробовал это с несколькими версиями и конфигурациями behat / mink. Я также пытался искать другой текстовый контент на панели пользователя. Но, похоже, мне здесь не хватает очень фундаментальной информации.

Редактировать:

Я сбросил страницу после того, как позволил рутине нажать на "Anmelden", Я получаю следующий дамп xdebug:

Fatal error: Uncaught Shopware\Components\CSRFTokenValidationException: The provided X-CSRF-Token for path "/s5224/account/login/sTarget/account/sTargetAction/index" is invalid. Please go back, reload the page and try again. in /home/vagrant/www/s5224/engine/Shopware/Components/CSRFTokenValidator.php on line

Я предположил, что goutte водитель просто не может справиться с такого рода поведением, поэтому аннотировал сценарий с @javascript,

Сценарий теперь выглядит так:

@javascript
Scenario: Test Basic Login
  Given I am on "/account"
  And I login successfully as "demo@demo.de" with password "demodemo"
  Then I should see "Abmelden"

Это теперь дало мне возможность использовать что-то вроде (как предложил lauda здесь: /questions/36959794/behat-selen-2-zhdut-zagruzki-stranitsyi/36959802#36959802)

$this->getSession()->wait(10000, "document.readyState === 'complete'");

Интересно, что сценарий теперь больше не может повлиять на account стр. Когда я выкидываю страницу, она полностью пуста. Даже когда я жду до 60 секунд.

Так что теперь проблема, похоже, заключается в том, чтобы получить selenium2 водитель на самом деле получить доступ к account страница, или чтобы получить goutte водитель для обработки X-CSRF-Token проблема.

0 ответов

Другие вопросы по тегам