module Sauce::SeleniumForTestUnit

Attributes

browser[R]
page[R]
s[R]
selenium[R]

Public Instance Methods

run(*args, &blk) click to toggle source
Calls superclass method
# File lib/sauce/test_unit.rb, line 12
def run(*args, &blk)
  if self.respond_to? :name
    my_name = self.name
  else
    my_name = self.__name__
  end
  unless my_name =~ /^default_test/
    config = Sauce::Config.new
    if config[:application_host]
      unless ENV['TEST_ENV_NUMBER'].to_i > 1
        Sauce::Connect.ensure_connected(:host => config[:application_host], :port => config[:application_port] || 80)
      end
    end

    unless defined?(@@server)
      unless ENV['TEST_ENV_NUMBER'].to_i > 1
        if config[:start_local_application] &&
            Sauce::Utilities::RailsServer.is_rails_app?
          @@server = Sauce::Utilities::RailsServer.new
          @@server.start
          at_exit do
            @@server.stop
          end
        end
      end
    end

    config[:browsers].each do |os, browser, version|
      options = self.class.sauce_config
      options.merge!({:os => os, :browser => browser,
                      :browser_version => version,
                      :job_name => my_name.to_s})
      @browser = Sauce::Selenium2.new(options)
      Sauce.driver_pool[Thread.current.object_id] = @browser

      super(*args, &blk)

      SauceWhisk::Jobs.change_status @browser.session_id, passed?
      @browser.stop
      Sauce.driver_pool.delete Thread.current.object_id
    end
  end
end