Sha256: 65f9d1ceda8d14f9906d5158ba7eb79b6efa87521a5e2fe3c5bf1dbcdc757c2f

Contents?: true

Size: 1.21 KB

Versions: 6

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.Hyperstack !== undefined) {
          try {
            return Opal.Hyperstack.$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 Hyperstack::HTTP is not defined'
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hyper-spec-1.0.alpha1.5 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-1.0.alpha1.4 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-1.0.alpha1.3 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-1.0.alpha1.2 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-1.0.alpha1.1 lib/hyper-spec/wait_for_ajax.rb
hyper-spec-1.0.alpha1 lib/hyper-spec/wait_for_ajax.rb