ruby on rails - Capybara: click on element found by the icon class -


i check that, when click icon link, current_path path of 'show' action.

so, given html:

<a class="btn btn-xs" href="/admin/hotels/1">    <i class="fa fa-eye fa-lg"></i> </a> 

and capybara test:

describe "get /hotels", js:true   before :each     @hotel = create(:hotel)     visit admin.hotels_path   end   "eye icon links show"     find(:css, 'i.fa.fa-eye.fa-lg').find(:xpath,".//..").click     expect(current_path).to eq(admin.hotel_path(@hotel))   end end 

i receive error message:

   1) hotels index hotel creation /hotels eye icon link show       failure/error: expect(current_path).to eq(admin.hotel_path(@hotel))     expected: "/admin/hotels/560bb674467261c7a4000002"         got: "/admin/hotels" 

i deduce find(:css, 'i.fa.fa-eye.fa-lg').find(:xpath,".//..").click not working expect.

the execution of find(:css, 'i.fa.fa-eye.fa-lg').find(:xpath,".//..") returning:

=> #<capybara::element tag="a"> 

am doing wrong?

the reason test fails :js because clicking link that. doesn't wait results of click (loading new page). because of calling current_path after still gets original path. removing :js stops using poltergeist , instead uses rack-test synchronous lacks lot of real browser behavior. in capybara 2.4 have needed check content on show page , once appeared current path, capybara 2.5 has have_current_path matcher utilize capybaras waiting behavior. there no need click on element, clicking on contents user should work fine. so

find(:css, 'i.fa.fa-eye.fa-lg').click expect(page).to have_current_path(admin.hotel_path(@hotel)) 

should work both , without :js


Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -