Sha256: bd44937a1f937b41f47ac590ba3730a1f539372073d8957e543b59d60b3bbe97

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

module HyperSpec
  module WaitForAjax
    def wait_for_ajax
      Timeout.timeout(Capybara.default_max_wait_time) do
        loop do
          sleep 0.25
          break if finished_all_ajax_requests?
        end
      end
    end

    def running?
      jscode = <<-CODE
      (function() {
        if (typeof Opal !== "undefined" && Opal.Hyperloop !== undefined) {
          try {
            return Opal.Hyperloop.$const_get("HTTP")["$active?"]();
          } catch(err) {
            if (typeof jQuery !== "undefined" && jQuery.active !== undefined) {
              return (jQuery.active > 0);
            } else {
              return false;
            }
          }
        } else if (typeof jQuery !== "undefined" && jQuery.active !== undefined) {
          return (jQuery.active > 0);
        } else {
          return false;
        }
      })();
      CODE
      page.evaluate_script(jscode)
    rescue Exception => e
      puts "wait_for_ajax failed while testing state of ajax requests: #{e}"
    end

    def finished_all_ajax_requests?
      !running?
    rescue Capybara::NotSupportedByDriverError
      true
    rescue Exception => e
      e.message == 'either jQuery or Hyperloop::HTTP is not defined'
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
hyper-spec-0.99.6 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-0.99.5 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-0.99.4 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-0.99.3 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-0.99.2 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-0.99.1 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-0.99.0 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-1.0.0.lap28 lib/hyper-spec/wait_for_ajax.rb