Capybara Selenium с извлечением Javascript терпит неудачу с несанкционированным - PullRequest
0 голосов
/ 19 июня 2019

Настройка

Rspec с капибарой и драйвером удаленного селена (автономный образ отладки Chrome). Использование StimulusJS в качестве основы Javascript.

Задача

В обычном браузере все работает как положено. Когда я пытаюсь протестировать события javascript с селеном капибары - сбой запроса POST с неавторизованным . Такое ощущение, что это очередной сеанс браузера. Например, обычные формы входа также работают - это просто вызовы javascript 'ajax', которые не работают.

Конфигурация Capybara

Capybara.app_host = "http://#{ENV['TEST_APP_HOST']}:#{ENV['TEST_PORT']}"
Capybara.run_server = false
Capybara.javascript_driver = :selenium

args = ['--no-default-browser-check', '--start-maximized']
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => args})
Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(
    app,
    browser: :remote,
    url: "http://#{ENV['SELENIUM_HOST']}:#{ENV['SELENIUM_PORT']}/wd/hub",
    desired_capabilities: caps
  )
end

HTML-фрагмент

<a data-action="click->checkout-special-category#toggle" id="checkout-special-category-0" href="/dashboard/websites/db9cfdc39a7e251859f525b911466fd7/toggle_special_category?c=special-category-0">Click</a>

Тестовый фрагмент

first('#checkout-special-category-0').click
expect(first('#checkout-special-category-0')).to have_selector('.checkout-special-categories--is-active')

Вход

Started POST "/dashboard/websites/db9cfdc39a7e251859f525b911466fd7/toggle_special_category?c=database-research" for 172.21.0.3 at 2019-06-19 15:14:53 +0000
Processing by Dashboard::WebsitesController#toggle_special_category as */*
  Parameters: {"c"=>"database-research", "id"=>"db9cfdc39a7e251859f525b911466fd7", "website"=>{}}
Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms)

1 Ответ

0 голосов
/ 20 июня 2019

Наиболее вероятной причиной этого является имя домена, для которого производится выборка, не совпадает с именем домена, на котором были установлены файлы cookie сеанса - т.е. localhost vs 127.0.0.1 и т. Д.

...