Rails | Cucumber | Capybara | click_button generates GET request -
i have cucumber scenario following steps:
def create_admin @admin ||= factorygirl.create(:admin) end def sign_in visit '/admins/sign_in' fill_in "email", with: @admin.email fill_in "password", with: @admin.password save_and_open_page click_button "sign in" end ### given ### given /^i exist admin$/ create_admin end ### when ### when /^i sign in valid credentials$/ sign_in end ### ### /^i see sign out link$/ page.should have_link "sign out" end
this test log these actions:
started "/admins/sign_in" 127.0.0.1 @ 2017-08-23 11:10:14 +0200 processing devise::sessionscontroller#new html rendering devise/sessions/new.html.erb within layouts/application rendered devise/shared/_links.html.erb (1.0ms) rendered devise/sessions/new.html.erb within layouts/application (130.1ms) completed 200 ok in 361ms (views: 348.5ms | activerecord: 0.0ms) started "/admins/sign_in?admin[email]=admin%40ca.coml&admin[password]=[filtered]&admin[remember_me]=0&commit=sign+in" 127.0.0.1 @ 2017-08-23 11:10:14 +0200 processing devise::sessionscontroller#new html parameters: {"admin"=>{"email"=>"admin@ca.com", "password"=>"[filtered]", "remember_me"=>"0"}, "commit"=>"sign in"} rendering devise/sessions/new.html.erb within layouts/application rendered devise/shared/_links.html.erb (0.3ms) rendered devise/sessions/new.html.erb within layouts/application (3.2ms) completed 200 ok in 10ms (views: 6.6ms | activerecord: 0.0ms)
i'm confused fact clicking sign in button seems trigger request. since working in development:
started "/admins/sign_in" 127.0.0.1 @ 2017-08-23 11:08:26 +0200 processing devise::sessionscontroller#new html rendering devise/sessions/new.html.erb within layouts/application rendered devise/shared/_links.html.erb (1.1ms) rendered devise/sessions/new.html.erb within layouts/application (4.2ms) completed 200 ok in 37ms (views: 35.6ms | activerecord: 0.0ms) started post "/admins/sign_in" 127.0.0.1 @ 2017-08-23 11:08:28 +0200 processing devise::sessionscontroller#create html parameters: {"utf8"=>"✓", "authenticity_token"=>"nvsrkgj33ez1pw6fzgqhofis/9/d/ls3cshez4sbzyx2fx/8mmmbfyb1c1vqz84ka48zyhocu3mllkxlad0jla==", "admin"=>{"email"=>"admin@ca.nl", "password"=>"[filtered]", "remember_me"=>"0"}, "commit"=>"sign in"} admin load (0.7ms) select "admins".* "admins" "admins"."email" = $1 order "admins"."id" asc limit $2 [["email", "admin@ca.nl"], ["limit", 1]] (0.3ms) begin sql (0.4ms) update "admins" set "current_sign_in_at" = $1, "sign_in_count" = $2, "updated_at" = $3 "admins"."id" = $4 [["current_sign_in_at", "2017-08-23 09:08:28.326296"], ["sign_in_count", 2], ["updated_at", "2017-08-23 09:08:28.327254"], ["id", 2]] (7.5ms) commit redirected http://localhost:3000/ completed 302 found in 181ms (activerecord: 8.8ms)
where did go wrong?
i'm guessing you're using 'rack_test' driver (as opposed 1 of js enabled drivers run actual browser) , either haven't required 'capybara/rails' tells 'rack_test' driver data-method
attribute , use set post vs get, or form written require js.
if neither of these case please post html of form
wiki
Comments
Post a Comment