Капибара selenium_chrome собирается на example.com вместо localhost - PullRequest
0 голосов
/ 03 апреля 2019

Я настраиваю тесты Cucumber в проекте Rails.Все отлично работает, когда я использую драйвер по умолчанию;но когда я пытаюсь использовать драйвер :selenium_chrome, браузер пытается загрузить example.com вместо локального сервера Rails.Есть идеи, что мне не хватает?

Мои шаги выглядят так:

Before do |scenario|
  Capybara.current_driver = :selenium_chrome
end

When(/^I visit the posts page$/) do
  visit posts_url
end

Когда я запускаю функции, я вижу, что сервер rails запускается:

Using the default profile...
Feature: Posts

Capybara starting Puma...
* Version 3.12.0 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:62056

Но Chromeвсплывающее окно пытается получить доступ к http://www.example.com/posts вместо http://127.0.0.1:62056/posts

Я где-то пропустил этап настройки?

Примечание: если я хочу запустить все свои тесты с использованием Selenium, должен ли я поместить строку Capybara.current_driver в блок Before?Я попытался просто добавить его в features/support/env.rb, но, похоже, это не дало никаких результатов.

У меня Chrome 73.0.3683.86 и Rails 5.2.2, работающий на MacOS 10.14.4.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Если вы хотите использовать :selenium_chrome в качестве драйвера по умолчанию, вы можете установить Capybara.default_driver = :selenium_chrome.

Что касается проблемы example.com, это связано с тем, что вы посещаете posts_url и в вашей тестовой среде ваше имя хоста Rails по умолчанию установлено на example.com.Вы можете либо посетить posts_path, что позволит Capybara по умолчанию использовать имя хоста для localhost, либо обновить конфигурацию вашей тестовой среды, чтобы помощники URL генерировали ожидаемые вами URL.

0 голосов
/ 03 апреля 2019

Вам необходимо установить конфигурацию Capybara app_host, например, Capybara.app_host = .... Смотрите полные документы здесь

Как правило, вы устанавливаете конфигурацию Capybara внутри spec_helper.rb, чтобы она была включена во всех спецификациях, например:

Capybara.configure do |config|
  config.current_driver = :selenium_chrome
  config.app_host   = ...
end

Надеюсь, что отвечает на ваши вопросы?

...