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