Sha256: de2d799d2b07cec202b41a50b02decd61da08a5e94cd001a7f8adedf98cd0611

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

require 'selenium-webdriver'

module Jasmine
  module Runners
    class Selenium
      def initialize(formatter, jasmine_server_url, driver, result_batch_size)
        @formatter = formatter
        @jasmine_server_url = jasmine_server_url
        @driver = driver
        @result_batch_size = result_batch_size
      end

      def run
        driver.navigate.to jasmine_server_url
        ensure_connection_established
        wait_for_suites_to_finish_running

        formatter.format(get_results)
        formatter.done
      ensure
        driver.quit
      end

      private
      attr_reader :formatter, :config, :driver, :jasmine_server_url, :result_batch_size

      def started?
        driver.execute_script "return jsApiReporter && jsApiReporter.started"
      end

      def finished?
        driver.execute_script "return jsApiReporter && jsApiReporter.finished"
      end

      def ensure_connection_established
        started = Time.now
        until started? do
          raise "couldn't connect to Jasmine after 60 seconds" if (started + 60 < Time.now)
          sleep 0.1
        end
      end

      def wait_for_suites_to_finish_running
        puts "Waiting for suite to finish in browser ..."
        until finished? do
          sleep 0.1
        end
      end

      def get_results
        index = 0
        spec_results = []

        loop do
          slice = driver.execute_script("return jsApiReporter.specResults(#{index}, #{result_batch_size})")
          spec_results << Jasmine::Result.map_raw_results(slice)
          index += result_batch_size
          break if slice.size < result_batch_size
        end
        spec_results.flatten
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jasmine_selenium_runner-0.1.1 lib/jasmine/runners/selenium.rb
jasmine_selenium_runner-0.1.0 lib/jasmine/runners/selenium.rb