Sha256: 4df9fd13ea57aa4afe2621e15329728c1f3f02df3a9d0e801d1f1436833d96e1

Contents?: true

Size: 1.47 KB

Versions: 9

Compression:

Stored size: 1.47 KB

Contents

# :nocov:
begin
  require "selenium-webdriver"
rescue LoadError
  Teaspoon.abort("Could not find Selenium Webdriver. Install the selenium-webdriver gem.")
end
# :nocov:

require "teaspoon/driver/base"

module Teaspoon
  module Driver
    class Selenium < Base
      def initialize(options = nil)
        options ||= {}
        case options
        when Hash then @options = options
        when String then @options = JSON.parse(options)
        else raise Teaspoon::DriverOptionsError.new(types: "hash or json string")
        end
      rescue JSON::ParserError
        raise Teaspoon::DriverOptionsError.new(types: "hash or json string")
      end

      def run_specs(runner, url)
        driver = ::Selenium::WebDriver.for(driver_options[:client_driver])
        driver.navigate.to(url)

        ::Selenium::WebDriver::Wait.new(driver_options).until do
          done = driver.execute_script("return window.Teaspoon && window.Teaspoon.finished")
          driver.execute_script("return window.Teaspoon && window.Teaspoon.getMessages() || []").each do |line|
            runner.process("#{line}\n")
          end
          done
        end
      ensure
        driver.quit if driver
      end

      protected

      def driver_options
        @driver_options ||= HashWithIndifferentAccess.new(
          client_driver: :firefox,
          timeout: Teaspoon.configuration.driver_timeout.to_i,
          interval: 0.01,
          message: "Timed out"
        ).merge(@options)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
teaspoon-1.1.5 lib/teaspoon/driver/selenium.rb
teaspoon-1.1.4 lib/teaspoon/driver/selenium.rb
teaspoon-1.1.3 lib/teaspoon/driver/selenium.rb
teaspoon-1.1.2 lib/teaspoon/driver/selenium.rb
teaspoon-1.1.1 lib/teaspoon/driver/selenium.rb
teaspoon-1.1.0 lib/teaspoon/driver/selenium.rb
teaspoon-1.0.2 lib/teaspoon/driver/selenium.rb
teaspoon-1.0.1 lib/teaspoon/driver/selenium.rb
teaspoon-1.0.0 lib/teaspoon/driver/selenium.rb