Method: AutoPilot::SeleniumRunner#run

Defined in:
lib/auto_pilot/selenium_runner.rb

#runObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/auto_pilot/selenium_runner.rb', line 65

def run
  server = nil

  FileUtils.rm_r(dir) if self.clean? && File.exist?(dir)
  PassFailFile.clean(dir)

  # Thread that runs the http server
  server_thread = Thread.new do
    server = HTTPServer.new(:Port => @port)
    server.mount("/postResults", SeleniumTestResultsServlet, @dir)
    trap("INT"){ server.shutdown }
    server.start
  end

  # Thread that runs the test processor
  @suites.each do |suite|
    #make sure the server is running
    begin
      puts suite
      res = Net::HTTP.get_response(URI.parse(suite))
      next unless res.code == '200'
    rescue Errno::ECONNREFUSED => error
      puts error
      next
    end
    
    processor_thread = Thread.new do
      ResultsState.waiting = true
      poller = ResultsStatePoller.new
      poller.timeout = @timeout
      poller.interval = @interval
      start_time = Time.now
      trap("INT"){ poller.stop; break }
      poller.start
    end

    # Open the file in the browser.
    # Mac OS
    browser = Browser.new(@browser_name, suite, @port)
    puts "starting browser ", browser.name
    browser.start

    # Join the thread, then quit the browser
    processor_thread.join

    # Quit the browser
    puts "quitting browser #{@browser_name}"
    browser.stop
  end

  server.shutdown
  server_thread.join
end