Class: Jasmine::SeleniumDriver

Inherits:
Object
  • Object
show all
Defined in:
lib/jasmine/selenium_driver.rb

Instance Method Summary collapse

Constructor Details

#initialize(selenium_host, selenium_port, selenium_browser_start_command, http_address) ⇒ SeleniumDriver

Returns a new instance of SeleniumDriver.



3
4
5
6
7
8
9
10
11
12
# File 'lib/jasmine/selenium_driver.rb', line 3

def initialize(selenium_host, selenium_port, selenium_browser_start_command, http_address)
  require 'selenium/client'
  @driver = Selenium::Client::Driver.new(
    selenium_host,
    selenium_port,
    selenium_browser_start_command,
    http_address
  )
  @http_address = http_address
end

Instance Method Details

#connectObject



18
19
20
21
# File 'lib/jasmine/selenium_driver.rb', line 18

def connect
  @driver.start
  @driver.open("/")
end

#disconnectObject



23
24
25
# File 'lib/jasmine/selenium_driver.rb', line 23

def disconnect
  @driver.stop
end

#eval_js(script) ⇒ Object



37
38
39
40
41
42
# File 'lib/jasmine/selenium_driver.rb', line 37

def eval_js(script)
  escaped_script = "'" + script.gsub(/(['\\])/) { '\\' + $1 } + "'"

  result = @driver.get_eval("try { eval(#{escaped_script}, window); } catch(err) { window.eval(#{escaped_script}); }")
  MultiJson.decode("{\"result\":#{result}}")["result"]
end

#runObject



27
28
29
30
31
32
33
34
35
# File 'lib/jasmine/selenium_driver.rb', line 27

def run
  until tests_have_finished? do
    sleep 0.1
  end

  puts @driver.get_eval("window.results()")
  failed_count = @driver.get_eval("window.jasmine.getEnv().currentRunner.results().failedCount").to_i
  failed_count == 0
end

#tests_have_finished?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/jasmine/selenium_driver.rb', line 14

def tests_have_finished?
  @driver.get_eval("window.jasmine.getEnv().currentRunner.finished") == "true"
end