I'm trying to get cookie values in the Cucumber step:
Step definitions
When /^I log in$/ do
# code to log in
end
Then /^cookies should be set$/ do
cookies[:author].should_not be_nil
end
Controller
class SessionsController < ApplicationController
def create
cookies[:author] = 'me'
redirect_to authors_path
end
end
But it doesn't work:
Result
expected: not nil
got: nil
In the RSpec examples, all works just fine:
Controller Spec
require 'spec_helper'
describe SessionsController do
describe 'create' do
it 'sets cookies' do
post :create
cookies[:author].should_not be_nil
end
end
end
How can I get cookie values in Cucumber steps using Capybara?
Thanks.
Debian GNU/Linux 6.0.4;
Ruby 1.9.3;
Ruby on Rails 3.2.1;
Cucumber 1.1.4;
Cucumber-Rails 1.2.1;
Capybara 1.1.2;
Rack-Test 0.6.1.
Try the
show_me_the_cookies
gem.https://github.com/nruth/show_me_the_cookies
Step Definitions
This works, however, I'm still looking for a less verbose way. Moreover, I'd like to know how to get the session data in a step definition.
Updated
To get the session data one should do the following:
Step Definitions
This is quite verbose too.
Here is my code of step defenition:
Here is example of output when test fails:
It seems that Selenium API has changed. The suggested solution did not work, but I after spending a bit of time looking around, I found a solution.
To save a cookie:
To read a cookie:
cookie_named returns an array consisting of "name" and "value", so we need an extra reference to extract cookie value.