Last active
April 7, 2017 14:08
-
-
Save passalini/33d26dd1fa00044caa26 to your computer and use it in GitHub Desktop.
Revisions
-
passalini revised this gist
Nov 19, 2014 . 1 changed file with 4 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -31,8 +31,10 @@ def click_ajax_link_or_button(locator, options = {}) wait_for_ajax end def wait_for_ajax(&block) block.call if block Timeout.timeout(Capybara.default_wait_time) do loop do sleep 0.1 -
passalini created this gist
Nov 4, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,51 @@ # Ajax testing with ruby and capybara # # Add this to spec/support # # When a link or button starts an ajax request, instead of use Capybara # click_link, click_button and click_link_or_button methods use click_ajax_link, # click_ajax_button and click_ajax_link_or_button methods. You can still use # capybara methods and right after it, call wait_for_ajax method. # # This methods will wait until Capybara.default_wait_time for the ajax request # to finish before continue the normal tests flow. # require 'timeout' module WaitForAjax def click_ajax_link(locator, options = {}) click_link(locator, options) wait_for_ajax end def click_ajax_button(locator, options = {}) click_button(locator, options) wait_for_ajax end def click_ajax_link_or_button(locator, options = {}) click_link_or_button(locator, options) wait_for_ajax end def wait_for_ajax Timeout.timeout(Capybara.default_wait_time) do loop do sleep 0.1 break if finished_all_ajax_requests? end end end def finished_all_ajax_requests? page.evaluate_script('jQuery.active').zero? end end RSpec.configure do |config| config.include WaitForAjax end