Last active
May 24, 2018 20:22
-
-
Save hugomaiavieira/269b0a5f5a8a3e532d8a to your computer and use it in GitHub Desktop.
Revisions
-
hugomaiavieira revised this gist
Dec 5, 2016 . 1 changed file with 2 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 @@ -7,15 +7,15 @@ # 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_max_wait_time for the ajax request # to finish before continue the normal tests flow. # require 'timeout' module WaitForAjax def wait_for_ajax(&block) yield if block_given? Timeout.timeout(Capybara.default_max_wait_time) do loop do sleep 0.1 break if finished_all_ajax_requests? -
hugomaiavieira created this gist
Jan 8, 2016 .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 wait_for_ajax(&block) yield if block_given? Timeout.timeout(Capybara.default_wait_time) do loop do sleep 0.1 break if finished_all_ajax_requests? end end end 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 finished_all_ajax_requests? page.evaluate_script('jQuery.active').zero? end end RSpec.configure do |config| config.include WaitForAjax end