I am running cucumber features against a Rails 3 branch and I have this step definition (which works fine in Rails-2.3.8): When /should see (?:an|the) authentication request message/ do puts("This is the response: #{response.body}") selector = "#authentication_request" expected = true message = ''Missing authentication_request selector'' assert_select(selector, expected, message) end Running the cucumber feature that invokes this step generates the following error: undefined method `content_type'' for nil:NilClass (NoMethodError) /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/activesupport-3.0.0/ lib/active_support/whiny_nil.rb:48:in `method_missing'' /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/actionpack-3.0.0/ lib/action_dispatch/testing/assertions/selector.rb:605:in `response_from_page_or_rjs'' /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/actionpack-3.0.0/ lib/action_dispatch/testing/assertions/selector.rb:213:in `assert_select'' /home/byrnejb/Software/Development/Projects/proforma.git/ features/app/models/users/step_definitions/ user_authentication_steps.rb:56 The response.body inside the step definition contains exactly what I expect: <h2 class="notice" id="authentication_request"> To Proceed Please Authenticate Your Identity </h2> What do I need to change to get this test to work in Rails-3.0.0? -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
James Byrne wrote:> > Running the cucumber feature that invokes this step generates the > following error: > > undefined method `content_type'' for nil:NilClass (NoMethodError) > /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/activesupport-3.0.0/ > lib/active_support/whiny_nil.rb:48:in `method_missing'' > /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/actionpack-3.0.0/ > lib/action_dispatch/testing/assertions/selector.rb:605:in > `response_from_page_or_rjs'' > /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/actionpack-3.0.0/ > lib/action_dispatch/testing/assertions/selector.rb:213:in > `assert_select'' > /home/byrnejb/Software/Development/Projects/proforma.git/ > features/app/models/users/step_definitions/ > user_authentication_steps.rb:56 > > The response.body inside the step definition contains exactly what I > expect: > > <h2 class="notice" id="authentication_request"> > To Proceed Please Authenticate Your Identity > </h2> > > What do I need to change to get this test to work in Rails-3.0.0?Is there some place that lists the valid syntax for a css selector as used by ActionDispatch? I can only surmise that the argument value is invalid for some reason. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
James Byrne wrote:>> >> The response.body inside the step definition contains exactly what I >> expect: >> >> <h2 class="notice" id="authentication_request"> >> To Proceed Please Authenticate Your Identity >> </h2> >> >> What do I need to change to get this test to work in Rails-3.0.0? > > Is there some place that lists the valid syntax for a css selector as > used by ActionDispatch? I can only surmise that the argument value is > invalid for some reason.I removed webrat-0.7.2-beta and tried again. This eliminated the nil object error, so I infer that webrat caused this issue. However, the test still fails. Given this html: <h2 class="notice" id="authentication_request"> To Proceed Please Authenticate Your Identity</h2> and this assert_selector statement: expected = "#authorization_request" message = ''Missing authentication_request selector'' assert_select(expected, message) I receive this error: Expected at least 1 element matching "#authorization_request", found 0. <false> is not true. (Test::Unit::AssertionFailedError) /home/byrnejb/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/test/unit/assertions.rb:48:in `assert_block'' As far as I can tell from my references, #authorization_request is a valid css selector. So, why is this test failing in Rails-3? -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I have determined that this is indeed a webrat problem. Evidently, webrat overrides assert_select in such a way as to break the Rails-3.0.0 implementation. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.