Class: Teaspoon::Driver::Selenium

Inherits:
Base
  • Object
show all
Defined in:
lib/teaspoon/driver/selenium.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = nil) ⇒ Selenium

Returns a new instance of Selenium.



14
15
16
17
18
19
20
21
22
23
# File 'lib/teaspoon/driver/selenium.rb', line 14

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

Instance Method Details

#run_specs(runner, url) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/teaspoon/driver/selenium.rb', line 25

def run_specs(runner, url)
  driver = ::Selenium::WebDriver.for(
    driver_options[:client_driver],
    **driver_options[:selenium_options].to_hash.to_options
  )
  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