How to set cookie from Capibara default Rack :: Test driver?
1 answer
I decided.
headers = {}
Rack::Utils.set_cookie_header!(headers, name, value)
cookie_string = headers["Set-Cookie"]
Capybara.current_session.driver.browser.set_cookie cookie_string
Based on this .
If you need to support both Rack :: Test and Poltergeist:
def set_cookie(name, value)
if Capybara.current_session.driver.respond_to?(:set_cookie)
# Poltergeist driver (JS)
Capybara.current_session.driver.set_cookie(name, value)
else
# Rack::Test driver (non-JS)
headers = {}
Rack::Utils.set_cookie_header!(headers, name, value)
cookie_string = headers["Set-Cookie"]
Capybara.current_session.driver.browser.set_cookie cookie_string
end
end
There may be problems with escaping as it is simply interpolated; worked great for my needs.
+7
source to share