Как предотвратить потерю сеанса после звонка в гости? - PullRequest
0 голосов
/ 12 января 2019

Довольно плохо знакомы с капибарой и огурцом (и тестированием в целом) здесь.

Я провожу приемочное тестирование черного ящика, и мне нужно протестировать страницу, доступ к которой можно получить только путем ввода URL-адреса.

Эта страница требует проверки подлинности, поэтому, когда страница посещается через вызов visit (), я перенаправляюсь на страницу входа.

Проблема в том, что после входа в систему приложение не перенаправляет меня обратно на эту страницу, а вместо этого переходит на домашнюю страницу, поэтому я не могу просто заполнить форму для входа и двигаться дальше.

Я попытался сначала войти в систему, а затем выполнить вызов этой страницы, но кажется, что сеанс очищается после любого вызова метода visit ().

Как сохранить сеанс после звонка в гости или решить эту проблему любым другим способом?

В идеале я хотел бы войти в систему один раз и посетить несколько страниц, доступ к которым можно получить, только набрав uri, без необходимости повторного входа в систему. Это возможно?

Я использую только хром-селеновый драйвер, но в какой-то момент я буду использовать безголовый драйвер.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Как правильно отвечает ответ @diabolist, visit не сбрасывает ни одного сеанса (пока ваши действия по входу в систему ждут достаточно долго, чтобы вход в систему действительно произошел, и файлы cookie были установлены (ожидание сообщения указав, что вы вошли в систему, или have_current_path(root_path) и т. д.) Скорее сеанс сбрасывается между сценариями.

Если в одном сценарии вы входите в систему, а затем обнаруживаете, что не вошли в систему, когда вы visit страницы, на которую вы ожидали войти, то, возможно, вы действительно входите в неправильный домен. По умолчанию Capybara будет посещать путь на хосте 127.0.0.1 - если это то место, куда вы заходите, но ваше приложение перенаправляется на localhost (или www.example.com и т. Д.) Для входа в систему, тогда будут установлены куки-файлы сеанса в неправильном домене, и когда вы заходите на страницу обратно 127.0.0.1, вы не будете входить в систему. В этом случае вы можете либо изменить Capybara.server_host, либо исправить свое приложение, чтобы оно перенаправляло на правильное место в тесте. окружающая среда.

0 голосов
/ 12 января 2019
Given I am registered
And  I am logged in
When I visit the test page
...

Они могут быть реализованы как Учитывая "я зарегистрирован" сделать # сделать все возможное, чтобы зарегистрироваться конец

Given "I am logged in"
  #visit log in form and fill in id|password
end

When "I visit the test page" do
  visit test_page_url
end

Ваша идея о том, что ваш сеанс очищается после каждого вызова, неверна. Каждый сценарий имеет свой собственный сеанс, и вы можете выполнить несколько посещений в сценарии. Однако вы должны убедиться, что вы входите (и регистрируетесь) в одном сценарии

...