find('.btn', text: 'Edit description').click
find('.editable-input textarea').set('I just edited this.')
find('.editable-submit').click
- # Wait for editable popup to go away
- page.assert_no_selector '.editable-submit'
+ wait_for_ajax
end
visit current_path
assert(find?('.panel', text: 'I just edited this.'),
find('.editable', text: 'Now I have a name.').click
find('.editable-input input').set('Now I have a new name.')
find('.glyphicon-ok').click
+ wait_for_ajax
find('.editable', text: 'Now I have a new name.')
end
visit current_path
require 'uri'
require 'yaml'
+module WaitForAjax
+ Capybara.default_wait_time = 5
+ def wait_for_ajax
+ Timeout.timeout(Capybara.default_wait_time) do
+ loop until finished_all_ajax_requests?
+ end
+ end
+
+ def finished_all_ajax_requests?
+ page.evaluate_script('jQuery.active').zero?
+ end
+end
+
class ActionDispatch::IntegrationTest
# Make the Capybara DSL available in all integration tests
include Capybara::DSL
include ApiFixtureLoader
+ include WaitForAjax
@@API_AUTHS = self.api_fixture('api_client_authorizations')