Codeception — не может сохранить и загрузить снимок сеанса в Firefox

У меня есть метод входа в систему, который может сохранить снимок сеанса для будущих вызовов.

public function loggedInIntoFrontend($name, $password)
{
$I = $this->driver;
// if snapshot exists - skipping login
if ($I->loadSessionSnapshot('login')) {
return;
}
// logging in
$I->amOnPage(LoginPage::getUrl());
$I->submitForm(
LoginPage::$form,
[
'_username' => $name,
'_password' => $password,
],
LoginPage::$btnLogin
);
$I->see('Autotest');
// saving snapshot
$I->saveSessionSnapshot('login');
}

Я использую это в моих Cests в _before() метод. Как здесь:

class OrderFlowCest
{
public function _before(AcceptanceTester $I)
{
$I->loggedInIntoFrontend(LoginPage::LOGIN, LoginPage::PASSWORD);
}
}

Возможно, я использую это в нескольких Сестах.
В Chrome все работает нормально. Но когда я пытаюсь запустить свои Cests в среде с Firefox — я получаю эту ошибку:

[Facebook \ WebDriver \ Exception \ InvalidCookieDomainException] Вы можете
устанавливать только куки для текущего домена. Информация о сборке: версия: ‘2.53.1’,
редакция: ‘a36b8b1’, время: ‘2016-06-30 17:37:03’ Системная информация: хост:
‘5-255-93-81’, ip: ‘5.255.93.81’, os.name: ‘windows’, os.arch: ‘x86’,
os.version: ’10 .0 ‘, java.version:’ 1.8.0_101 ‘Информация о драйвере:
driver.version: неизвестно

Кто-нибудь сталкивался с этим?

2

Решение

Я получил ответ от Ларс Францен в чате Codeception.

Firefox, может быть более ограничительным с сохранением всех куки, которые в настоящее время там. Вы можете решить эту проблему, просто сохранив файлы cookie, которые вам действительно нужны для сохранения сеанса (а также не все другие файлы cookie, которые могут привести к тому, что Firefox пожалуется на то, что их нет в текущем домене). Поэтому не используйте функцию saveSessionSnapshot, а что-то вроде $ this -> session = $ I-> grabCookie (‘MYSESSION’); и позже $ I-> setCookie (‘MYSESSION’, $ this-> session) ;.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]