Sha256: fe6fba40fee3381cd3091dbe479901588e58c2d5d4c2aa5d1e6116d73773fd02

Contents?: true

Size: 1.9 KB

Versions: 3

Compression:

Stored size: 1.9 KB

Contents

module Webrat
  module Selenium
    
    class SeleniumRCServer
      
      def self.boot
        new.boot
      end
      
      def boot
        return if selenium_grid?
        
        start
        wait
        stop_at_exit
      end
      
      def start
        silence_stream(STDOUT) do
          remote_control.start :background => true
        end
      end
      
      def stop_at_exit
        at_exit do
          stop
        end
      end
      
      def remote_control
        return @remote_control if @remote_control
        
        @remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5)
        @remote_control.jar_file = jar_path
        
        return @remote_control
      end
      
      def jar_path
        File.expand_path(__FILE__ + "../../../../../vendor/selenium-server.jar")
      end
      
      def selenium_grid?
        Webrat.configuration.selenium_server_address
      end
      
      def wait
        $stderr.print "==> Waiting for Selenium RC server on port #{Webrat.configuration.selenium_server_port}... "
        wait_for_socket
        $stderr.print "Ready!\n"
      rescue SocketError
        fail
      end
      
      def wait_for_socket
        silence_stream(STDOUT) do
          TCPSocket.wait_for_service_with_timeout \
            :host     => (Webrat.configuration.selenium_server_address || "0.0.0.0"),
            :port     => Webrat.configuration.selenium_server_port,
            :timeout  => 15 # seconds
        end
      end
      
      def fail
        $stderr.puts
        $stderr.puts
        $stderr.puts "==> Failed to boot the Selenium RC server... exiting!"
        exit
      end
      
      def stop
        silence_stream(STDOUT) do
          ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5).stop
        end
      end
      
    end
    
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
mattwynne-cucover-0.1.0 examples/self_test/rails/vendor/gems/webrat-0.4.4/lib/webrat/selenium/selenium_rc_server.rb
mattwynne-cucover-0.1.1 examples/self_test/rails/vendor/gems/webrat-0.4.4/lib/webrat/selenium/selenium_rc_server.rb
webrat-0.4.4 lib/webrat/selenium/selenium_rc_server.rb