Running Capybara without rack produces errors when using url parameters
17,315
Solution 1
You can set only one of app
and app_host
. So you should remove config.app
from configuration.
Also you should set default_driver
instead of current_driver
.
As it's shown in my answer in linked question working configuration is:
Capybara.configure do |config|
config.run_server = false
config.default_driver = :selenium
config.app_host = 'https://www.google.com' # change url
end
Solution 2
If you're specifying an app_host instead of using rack, you need to specify default_driver instead of current_driver. For example:
Capybara.run_server = false
Capybara.default_driver = :selenium
Capybara.app_host = 'https://www.google.com'
instead of
Capybara.run_server = false
Capybara.current_driver = :selenium
Capybara.app_host = 'https://www.google.com'
Author by
aaandre
Updated on June 12, 2022Comments
-
aaandre almost 2 years
Here's my setup, based on this recommendation: How to get Cucumber/Capybara/Mechanize to work against external non-rails site
It works until I add parameters to the URL. Any advice on addressing this issue?
require 'rspec' require 'capybara/rspec' require 'capybara/dsl' @test_url = "test" RSpec.configure do |config| config.include Capybara::DSL end Capybara.configure do |config| config.run_server = false config.current_driver = :selenium config.app = "fake app name" config.app_host = "http://site.com/#{@test_url}" end
This works fine:
describe "the page, without URL parameters" do it "shows the regular form" do visit "/registration.aspx" page.should have_content "YES" end end
But this:
describe "the page, when not fully pre-filled" do it "shows the regular form if only passed the attendance" do visit "/registration.aspx?r=y" page.should have_content "YES" end it "shows the regular form if only passed the attendance" do visit "/registration.aspx?f=Jim" page.should have_content "YES" end end
results in
....FF Failures: 1) the page, when not fully pre-filled shows the regular form if only passed the attendance Failure/Error: visit "/registration.aspx?r=y" NoMethodError: undefined method `call' for "fake app name":String # ./conf_spec.rb:39:in `block (2 levels) in <top (required)>' 2) the page, when not fully pre-filled shows the regular form if only passed the attendance Failure/Error: visit "/registration.aspx?f=Jim" NoMethodError: undefined method `call' for "fake app name":String # ./conf_spec.rb:44:in `block (2 levels) in <top (required)>'