Mateusz Juraszek wrote:
Balint Erdi wrote:
Ben Mabey wrote:
Couple things I'd like to point out. In your enhanced.rb you don't need
to do the Before hook yourself. You can just require
'database_cleaner/cucumber'. I've updated your gist to use that.
In your plain.rb it seems like you are trying to truncate your database
just once upon startup. If that is the case then the recommended way is
to use the clean_with method like so:
DatabaseCleaner.clean_with :truncation
Again, I have updated the gist to reflect this.
-Ben
Hey Ben, thanks a lot.
The problem I am experiencing now is that information stored in the
session does not seem to be retained between steps (again, only in the
case of selenium sessions, plain sesssion work fine). So the login
function works fine now but when I go to another page afterwards it
throws a big error because the action tries to render something based on
the current user.
Is the session store I am using relevant? I used the default
cookie-based storage and then tried to change to the active-record based
one to no avail. My config is at http://gist.github.com/83635
Thank you,
Balint
hi Ben
I am newbie with cucumber and bdd. I was wondering if you can take a
look on my problems.
I have similar problem like Balint. I test my own and clearance features
with selenium and webrat. I don't have to say that with werbrat
everything is perfect. When I run features with selenium I get error
nil.session what is connected with code from clearance features ie:
<pre>
Then /^I should not be signed in$/ do
assert_nil request.session[:user_id]
end
</pre>
Yuck! I realize that you didn't write this and that Clearance gave you
this step out of the box:
http://github.com/thoughtbot/clearance/blob/fa424b8fe9fd8f151f32a726982a3fd42940b328/generators/clearance_features/templates/features/step_definitions/clearance_steps.rb
It is, IMO, a very bad way to verify if the user is logged in. (I
actually used an example very similar to this in my MWRC
presentation[1]. One of the reasons that makes it bad is that it makes
it difficult to switch from using rails integration session to an
automated browser solution like Selenium.
in clearance_step file
It seems like selenium has problem with access to "request" object
That makes my test fail all the time.
Yep, that object exists in rails integration sessions, which is what
webrat's :rails mode uses. To avoid this error you will need to specify
behaviour, not implementation. I'm guessing that this step is called
after you have logged out. So, the way I would test this is that I
would test it from the point of view of the user. The user doesn't know
about a session, much less how we are implementing our authentication
system. :) When this user logs out they probably see a message
indicating that they have been logged out though. So, something like
this would be better:
Then /^I should not be signed in$/ do
response.should contain("You have been logged out.")
end
(Note: I'm not sure if clearance says this exactly, but you get the idea...)
Using a step like this will allow you to switch between multiple adapters since
you should always have the response object.
Another problem I met is with waiting for response after "press button"
method
All the time I get response with code before button pressed
It's connected with selenium_session.rb code and require me to change a
bit
<pre>
def click_button(button_text_or_regexp = nil, options = {})
if button_text_or_regexp.is_a?(Hash) && options == {}
pattern, options = nil, button_text_or_regexp
elsif button_text_or_regexp
pattern = adjust_if_regexp(button_text_or_regexp)
end
pattern ||= '*'
locator = "button=#{pattern}"
selenium.wait_for_element locator, :timeout_in_seconds => 5
selenium.click locator
selenium.wait_for_page_to_load(5) ## add this line to get correct
response
end
</pre>
I don't know why I have to change it
Hmmm.. Yeah, I don't know about that. You should probably ask the
webrat mailing list or open up a ticket[2].
-Ben
1.
http://mwrc2009.confreaks.com/14-mar-2009-15-00-bdd-with-cucumber-ben-mabey.html
2. http://wiki.github.com/brynary/webrat/get-in-touch
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users