Module: WatirWebdriverRails

Defined in:
lib/watir-webdriver-rails.rb,
lib/watir-webdriver-rails/rails.rb,
lib/watir-webdriver-rails/rspec.rb,
lib/watir-webdriver-rails/driver.rb,
lib/watir-webdriver-rails/browser.rb,
lib/watir-webdriver-rails/version.rb,
lib/watir-webdriver-rails/util/timeout.rb

Defined Under Namespace

Modules: RSpec Classes: Identify, TimeoutError, WatirWebdriverRailsError

Constant Summary collapse

VERSION =
"0.0.8"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.appObject

Returns the value of attribute app.



22
23
24
# File 'lib/watir-webdriver-rails/rails.rb', line 22

def app
  @app
end

.browserObject

Returns the value of attribute browser.



3
4
5
# File 'lib/watir-webdriver-rails/browser.rb', line 3

def browser
  @browser
end

.browser_initializedObject

Returns the value of attribute browser_initialized.



3
4
5
# File 'lib/watir-webdriver-rails/browser.rb', line 3

def browser_initialized
  @browser_initialized
end

.close_browser_after_finishObject

Returns the value of attribute close_browser_after_finish.



22
23
24
# File 'lib/watir-webdriver-rails/rails.rb', line 22

def close_browser_after_finish
  @close_browser_after_finish
end

.hostObject

Returns the value of attribute host.



22
23
24
# File 'lib/watir-webdriver-rails/rails.rb', line 22

def host
  @host
end

.portObject

Returns the value of attribute port.



22
23
24
# File 'lib/watir-webdriver-rails/rails.rb', line 22

def port
  @port
end

.server_boot_timeoutObject

Returns the value of attribute server_boot_timeout.



22
23
24
# File 'lib/watir-webdriver-rails/rails.rb', line 22

def server_boot_timeout
  @server_boot_timeout
end

.server_runningObject

Returns the value of attribute server_running.



22
23
24
# File 'lib/watir-webdriver-rails/rails.rb', line 22

def server_running
  @server_running
end

Class Method Details

.close_browserObject



27
28
29
30
# File 'lib/watir-webdriver-rails/browser.rb', line 27

def close_browser
  @browser.close if @browser_initialized == true
  @browser_initialized = false
end

.driverObject



37
38
39
40
41
42
43
# File 'lib/watir-webdriver-rails/driver.rb', line 37

def driver
  profile = Selenium::WebDriver::Firefox::Profile.new
  profile.enable_firebug
  driver = Selenium::WebDriver.for(:firefox, { :profile => profile })
  
  return driver
end

.initialize_browserObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/watir-webdriver-rails/browser.rb', line 5

def initialize_browser
  
  return if @browser_initialized == true
  
  @browser = Watir::Browser.new(WatirWebdriverRails.driver)
  
  @browser.class_eval do
     alias_method :old_goto,:goto
     
     def goto(*args)
       
       if !args[0].match(/^https?:/)
          args[0] = "http://#{WatirWebdriverRails.host}:#{WatirWebdriverRails.port}#{args[0]}"
       end
       
       old_goto(*args)      
     end
  end
  
  @browser_initialized = true
end

.responsive?Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
70
71
72
# File 'lib/watir-webdriver-rails/rails.rb', line 64

def responsive?
  res = Net::HTTP.start("127.0.0.1", @port) { |http| http.get('/__identify__') }

  if res.is_a?(Net::HTTPSuccess) or res.is_a?(Net::HTTPRedirection)
    return res.body == @app.object_id.to_s
  end
rescue Errno::ECONNREFUSED, Errno::EBADF
  return false
end

.run_serverObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/watir-webdriver-rails/rails.rb', line 26

def run_server
  return if @server_running == true
  
  @app = Rack::Builder.new {
    map "/" do
      if Rails.version.to_f >= 3.0
        run Rails.application  
      else # Rails 2
        use Rails::Rack::Static
        run ActionController::Dispatcher.new
      end
    end
  }.to_app
  
  Thread.new do
    begin
      require 'rack/handler/thin'
      Thin::Logging.silent = true
      Rack::Handler::Thin.run(Identify.new(app), :Port => @port)
    rescue LoadError
      require 'rack/handler/webrick'
      Rack::Handler::WEBrick.run(Identify.new(app), :Port => @port, :AccessLog => [], :Logger => WEBrick::Log::new(nil, 0))
    end
  end

  timeout(@server_boot_timeout) do
    if responsive? 
      true 
    else 
      sleep(0.5)
      false 
    end
  end
  
  @server_running = true
end

.timeout(seconds = 1, driver = nil, error_message = nil, &block) ⇒ Object

Copied from Capybara



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/watir-webdriver-rails/util/timeout.rb', line 5

def timeout(seconds = 1, driver = nil, error_message = nil, &block)
  start_time = Time.now

  result = nil

  until result
    return result if result = yield

    delay = seconds - (Time.now - start_time)
    if delay <= 0
      raise TimeoutError, error_message || "timed out"
    end

    driver && driver.wait_until(delay)

    sleep(0.05)
  end
end