Wait for AJAX requests at the JS level in addition to wait for requests at the middleware level

Hopefully, this can solve transient failures such as
https://gitlab.com/gitlab-org/gitlab-ce/issues/29836.

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2017-04-13 18:31:33 +02:00
parent 3ff8d8020e
commit 60a5273d7d
No known key found for this signature in database
GPG Key ID: 46DF07E5CD9E96AB
1 changed files with 5 additions and 1 deletions

View File

@ -1,11 +1,15 @@
require_relative './wait_for_ajax'
module WaitForRequests
extend self
include WaitForAjax
# This is inspired by http://www.salsify.com/blog/engineering/tearing-capybara-ajax-tests
def wait_for_requests_complete
Gitlab::Testing::RequestBlockerMiddleware.block_requests!
wait_for('pending AJAX requests complete') do
Gitlab::Testing::RequestBlockerMiddleware.num_active_requests.zero?
Gitlab::Testing::RequestBlockerMiddleware.num_active_requests.zero? &&
finished_all_ajax_requests?
end
ensure
Gitlab::Testing::RequestBlockerMiddleware.allow_requests!