sauce 3.5.6 → 3.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad3334a7a1d5f395f753d7cc73b4e97bed7395b9
4
- data.tar.gz: 37127667da25b694701d12811745a00405499012
3
+ metadata.gz: cf1ac30663f0230515af484aa14d2de9a51e0dba
4
+ data.tar.gz: ec92ecb4788c3e81988536e62b6bd3f3048fbc20
5
5
  SHA512:
6
- metadata.gz: e0be3a5702bdd62d855e2fbf577623f5ee68728909f45e78ac5f6cc869cc68619f5480b8397c04edcca6408bf01ead2e780d3371890fcfd00498cdf19518f9e1
7
- data.tar.gz: 990e58494e057db7ab07b66f847b88ca4cd382f17d5cb02c691c613b384a3b1b059a3a6074e9064bad15113e835dd221b17196ee42dd40c2804e509f0a9bd445
6
+ metadata.gz: 2e138b92a567eb111d1e72ed556b1329c190a796f349f5a685be7833031b8ed31d789f6d504008b2474d48f65981f39859c07c338038431839c2b9ed4f57a149
7
+ data.tar.gz: 4cb17bcd1da62503ef940270b0b13820cfed7f039d573fea72878e6af2b21000ea158db970cc68b3fea34b60799d220f159df982ce3a8dd6b2b1ccf6d52caf82
@@ -14,6 +14,7 @@ module ParallelTests
14
14
  run_tests(group, Sauce::TestBroker.group_index(group), num_processes, options)
15
15
  end
16
16
 
17
+ Sauce.logger.debug "Parallel Tests reporting results."
17
18
  report_results(test_results)
18
19
  end
19
20
 
@@ -1,4 +1,5 @@
1
1
  require "parallel_tests/cucumber/runner"
2
+ require "sauce/logging"
2
3
 
3
4
  module ParallelTests
4
5
  module Saucecucumber
@@ -16,6 +17,9 @@ module ParallelTests
16
17
  cucumber_opts(options[:test_options]),
17
18
  *sanitized_test_files
18
19
  ].compact.join(" ")
20
+ Sauce.logger.debug "Starting parallel process #{process_number} of #{num_processes}"
21
+ Sauce.logger.debug " #{cmd}"
22
+ Sauce.logger.debug " #{our_options}"
19
23
  execute_command(cmd, process_number, num_processes, options)
20
24
  end
21
25
 
@@ -1,5 +1,6 @@
1
1
  require "yaml"
2
2
  require "parallel_tests/rspec/runner"
3
+ require "sauce/logging"
3
4
 
4
5
  module ParallelTests
5
6
  module Saucerspec
@@ -13,6 +14,9 @@ module ParallelTests
13
14
  env = Sauce::TestBroker.next_environment(test_files)
14
15
  env << " #{rspec_1_color}" if version == 1
15
16
  our_options.merge!(:env => env)
17
+ Sauce.logger.debug "Starting parallel process #{process_number} of #{num_processes}"
18
+ Sauce.logger.debug " #{cmd}"
19
+ Sauce.logger.debug " #{our_options}"
16
20
  execute_command(cmd, process_number, num_processes, our_options)
17
21
  end
18
22
 
@@ -14,6 +14,7 @@ require 'sauce/selenium'
14
14
  require 'sauce/test_base'
15
15
  require 'sauce/rspec/rspec'
16
16
  require 'sauce/test_unit'
17
+ require 'sauce/logging'
17
18
  require 'parallel_tests/saucerspec/runner'
18
19
  require 'parallel_tests/saucecucumber/runner'
19
20
 
@@ -2,6 +2,7 @@ require 'capybara'
2
2
  require 'sauce/config'
3
3
  require 'sauce/selenium'
4
4
  require 'sauce/version'
5
+ require 'sauce/logging'
5
6
 
6
7
 
7
8
  $sauce_tunnel = nil
@@ -85,6 +86,7 @@ module Sauce
85
86
  # Try to get a driver from the driver pool
86
87
  @browser = rspec_browser
87
88
  unless @browser
89
+ Sauce.logger.debug "Capybara creating new Selenium driver."
88
90
  @browser = Sauce::Selenium2.new
89
91
  at_exit do
90
92
  finish!
@@ -97,6 +99,7 @@ module Sauce
97
99
  # Returns the rspec created browser if it exists
98
100
  def rspec_browser
99
101
  if browser = Sauce.driver_pool[Thread.current.object_id]
102
+ Sauce.logger.debug "Using browser from driver_pool (browser.session_id)."
100
103
  @using_rspec_browser = true
101
104
  else
102
105
  @using_rspec_browser = false
@@ -115,6 +118,7 @@ module Sauce
115
118
  end
116
119
 
117
120
  def finish!
121
+ Sauce.logger.debug "Capybara integration called #finish!"
118
122
  @browser.quit if existing_browser?
119
123
  @browser = nil
120
124
 
@@ -1,6 +1,7 @@
1
1
  require 'json'
2
2
  require 'yaml'
3
3
  require 'uri'
4
+ require 'sauce/logging'
4
5
 
5
6
  module Sauce
6
7
  def self.config
@@ -67,11 +68,15 @@ module Sauce
67
68
  sauce-advisor single-window user-extensions-url firefox-profile-url
68
69
  max-duration idle-timeout build custom-data tunnel-identifier
69
70
  selenium-version command-timeout prerun prerun-args screen-resolution
70
- disable-popup-handler avoid-proxy public name iedriver-version parent-tunnel}
71
+ disable-popup-handler avoid-proxy public name iedriver-version parent-tunnel
72
+ time-zone device-orientation record-logs webdriver-remote-quiet-exceptions
73
+ iedriver-version
74
+ }
71
75
 
72
76
  def self.get_application_port
73
77
  port_index = ENV["TEST_ENV_NUMBER"].to_i
74
- return POTENTIAL_PORTS[port_index]
78
+ port_to_use = POTENTIAL_PORTS[port_index]
79
+ return port_to_use
75
80
  end
76
81
 
77
82
  def self.called_from_integrations?
@@ -79,6 +84,7 @@ module Sauce
79
84
  end
80
85
 
81
86
  def self.called_from_integrations
87
+ Sauce.logger.debug "Sauce config accessed from an integration"
82
88
  @called_from_integrations = true
83
89
  end
84
90
 
@@ -150,6 +156,7 @@ module Sauce
150
156
  end
151
157
 
152
158
  def whitelist capability
159
+ Sauce.logger.info "Whitelisting #{capability}"
153
160
  cap = capability.to_s
154
161
  wl = whitelisted_capabilities || Set.new
155
162
  @whitelisted_capabilities = wl.add cap
@@ -291,7 +298,11 @@ module Sauce
291
298
  end
292
299
 
293
300
  def run_post_job_hooks(job_id, platform, job_name, job_success)
301
+ Sauce.logger.debug "Running post job hook for #{job_id}"
302
+ Sauce.logger.debug " - Job name #{job_name}"
303
+ Sauce.logger.debug " - Successful? #{job_success}"
294
304
  @opts[:after_job_hooks].each do |key, hook|
305
+ Sauce.logger.debug "Running #{hook}"
295
306
  hook.call job_id, platform, job_name, job_success
296
307
  end
297
308
  end
@@ -330,6 +341,7 @@ module Sauce
330
341
  def load_options_from_heroku
331
342
  @@heroku_environment ||= begin
332
343
  if File.exists?(File.expand_path('~/.heroku'))
344
+ Sauce.logger.debug "Heroku config found."
333
345
  heroku_app = ENV['SAUCE_HEROKU_APP']
334
346
  cmd = "heroku config #{heroku_app ? "--app #{heroku_app}": ''}"
335
347
  cmd += "--shell 2>/dev/null"
@@ -363,6 +375,7 @@ module Sauce
363
375
 
364
376
  paths.each do |path|
365
377
  if File.exist? path
378
+ Sauce.debug.info "Loading Sauce config from yaml file at #{path}"
366
379
  conf = YAML.load_file(path)
367
380
  return conf.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
368
381
  end
@@ -0,0 +1,57 @@
1
+ require "logger"
2
+
3
+ module Sauce
4
+ def self.logger=(logger)
5
+ @logger = logger
6
+ end
7
+
8
+ # Returns the set logger or, if none is set, a default logger
9
+ def self.logger
10
+ @logger ||= default_logger
11
+ end
12
+
13
+ private
14
+
15
+ # Creates a default logger when the user hasn't set one.
16
+ # Default logger with be STDOUT _unless_ the `SAUCE_LOGFILE` environment var
17
+ # has been set, in which case that file will be appended to, until it is
18
+ # 10240 bytes, when it will be rotated. This will happen 10 times.
19
+ #
20
+ # The default logging level is WARN, but can be set with the
21
+ # environment var SAUCE_LOGLEVEL
22
+ def self.default_logger
23
+ log = ::Logger.new(*default_logger_arguments)
24
+ log.level = default_logging_level
25
+ return log
26
+ end
27
+
28
+ def self.default_logger_arguments
29
+ logfile = ENV["SAUCE_LOGFILE"]
30
+ if logfile
31
+
32
+ unless ENV["TEST_ENV_NUMBER"].nil?
33
+ logfile = "#{logfile}#{ENV["TEST_ENV_NUMBER"]}"
34
+
35
+ end
36
+ log = File.open logfile, File::WRONLY | File::APPEND | File::CREAT
37
+ return [log, 10, 10240]
38
+ else
39
+ return [STDOUT]
40
+ end
41
+ end
42
+
43
+ def self.default_logging_level
44
+ case ENV.fetch("SAUCE_LOGLEVEL", "").downcase
45
+ when 'error'
46
+ Logger::ERROR
47
+ when 'warn'
48
+ Logger::WARN
49
+ when 'info'
50
+ Logger::INFO
51
+ when 'debug'
52
+ Logger::DEBUG
53
+ else
54
+ Logger::WARN
55
+ end
56
+ end
57
+ end
@@ -92,6 +92,7 @@ module Sauce
92
92
  error_message << possible_config_files.map { |file_path| " - #{file_path}" }.join("\n")
93
93
  raise error_message
94
94
  end
95
+ Sauce.logger.info "Reading configuration from #{configuration_file}"
95
96
  require configuration_file
96
97
  end
97
98
 
@@ -1,3 +1,5 @@
1
+ require "sauce/logging"
2
+
1
3
  module Sauce
2
4
  class TestGroup
3
5
  def initialize(platforms)
@@ -16,7 +18,7 @@ module Sauce
16
18
  }
17
19
  caps.merge!({:caps => platform[3]}) if platform[3]
18
20
  caps
19
- rescue NoMethodError => e
21
+ rescue NoMethodError
20
22
  puts "I don't have any config"
21
23
  end
22
24
  end
@@ -34,12 +34,15 @@ begin
34
34
  end
35
35
 
36
36
  def self.start_tools_for_sauce_tag
37
+ Sauce.logger.debug "Starting Tooling for 'sauce' tagged tests"
37
38
  config = Sauce::Config.new
38
39
  if config[:start_tunnel]
40
+ Sauce.logger.debug " - Sauce Connect"
39
41
  Sauce::Utilities::Connect.start_from_config(config)
40
42
  end
41
43
 
42
44
  unless self.server
45
+ Sauce.logger.debug " - Rails Server"
43
46
  self.server= Sauce::Utilities::RailsServer.start_if_required(config)
44
47
  end
45
48
  end
@@ -53,12 +56,18 @@ begin
53
56
  running_selenium_specs = files_to_run.any? {|file| file =~ /spec\/selenium\//}
54
57
  need_tunnel = running_selenium_specs && config[:application_host]
55
58
 
59
+ if running_selenium_specs
60
+ Sauce.logger.debug "Starting Tooling for Selenium directory tests"
61
+ end
62
+
56
63
  if need_tunnel && config[:start_tunnel]
64
+ Sauce.logger.debug " - Sauce Connect"
57
65
  Sauce::Utilities::Connect.start_from_config(config)
58
66
  end
59
67
 
60
68
  if running_selenium_specs
61
69
  unless self.server
70
+ Sauce.logger.debug " - Rails Server"
62
71
  self.server= Sauce::Utilities::RailsServer.start_if_required(config)
63
72
  end
64
73
  end
@@ -118,6 +127,7 @@ begin
118
127
  end
119
128
 
120
129
  def self.included(othermod)
130
+ Sauce.logger.debug "Sauce RSpec module was included by #{othermod.name}"
121
131
  othermod.around do |the_test|
122
132
  config = Sauce::Config.new
123
133
  description = the_test.metadata[:full_description]
@@ -125,6 +135,7 @@ begin
125
135
  exceptions = {}
126
136
  test_each config.caps_for_location(file), description do |selenium, caps|
127
137
 
138
+ Sauce.logger.debug "Running RSpec test for #{file} with #{caps}."
128
139
  example = SeleniumExampleGroup.current_example.call(self)
129
140
  example.instance_variable_set(:@exception, nil)
130
141
 
@@ -133,6 +144,7 @@ begin
133
144
  example.metadata[:sauce_public_link] = SauceWhisk.public_link(@selenium.session_id)
134
145
 
135
146
  begin
147
+ Sauce.logger.debug "About to initiate test #{description}"
136
148
  the_test.run
137
149
  success = example.exception.nil?
138
150
  ensure
@@ -147,8 +159,8 @@ begin
147
159
  platform = {:os => os, :browser => browser, :version => version}
148
160
  config.run_post_job_hooks(@selenium.session_id, platform, description, success)
149
161
  rescue Exception => e
150
- STDERR.puts "Error running post job hooks"
151
- STDERR.puts e
162
+ Sauce.logger.error "Error running post job hooks"
163
+ Sauce.logger.error e
152
164
  end
153
165
  Sauce.driver_pool.delete Thread.current.object_id
154
166
  end
@@ -179,8 +191,9 @@ begin
179
191
  end
180
192
  end
181
193
  rescue LoadError, TypeError
194
+ Sauce.logger.debug "Failed to require #{__FILE__} - Likely RSpec 2+ isn't present."
182
195
  # User doesn't have RSpec 2.x installed
183
196
  rescue => e
184
- STDERR.puts "Exception caught: #{e.to_s}"
197
+ Sauce.logger.debug "Exception caught when including #{__FILE__}: #{e.to_s}"
185
198
  exit 1
186
199
  end
@@ -3,6 +3,9 @@ require "sauce_whisk"
3
3
 
4
4
  begin
5
5
  require 'spec'
6
+ # any gem could export a require as 'spec' so we must explicitly check
7
+ # to see if the expected rspec 1 class has loaded.
8
+ raise LoadError unless defined?(Spec::Example::ExampleGroup)
6
9
  module Sauce
7
10
  module RSpec
8
11
  class SeleniumExampleGroup < Spec::Example::ExampleGroup
@@ -41,7 +44,7 @@ begin
41
44
  @selenium = Sauce::Selenium2.new({:os => os, :browser => browser,
42
45
  :browser_version => version,
43
46
  :job_name => description})
44
-
47
+
45
48
  begin
46
49
  success = super(*args)
47
50
  SauceWhisk::Jobs.change_status @selenium.session_id, success
@@ -63,4 +66,4 @@ rescue LoadError
63
66
  rescue => e
64
67
  STDERR.puts "Exception occured: #{e.to_s}"
65
68
  exit 1
66
- end
69
+ end
@@ -28,12 +28,18 @@ module Selenium
28
28
  end
29
29
  end
30
30
 
31
+ module Sauce
32
+ class << self
33
+ attr_accessor :webdriver_method
34
+ end
35
+ @webdriver_method = lambda { |*args| ::Selenium::WebDriver.for *args }
36
+ end
31
37
 
32
38
  module Sauce
33
39
  class Selenium2
34
40
  extend Forwardable
35
41
 
36
- attr_reader :config, :driver
42
+ attr_reader :config, :driver, :watir, :raw_driver
37
43
 
38
44
  def_delegator :@driver, :execute_script
39
45
 
@@ -50,17 +56,21 @@ module Sauce
50
56
  http_client = ::Selenium::WebDriver::Remote::Http::Persistent.new
51
57
  http_client.timeout = 300 # Browser launch can take a while
52
58
 
53
- @driver = ::Selenium::WebDriver.for(:remote,
59
+ @driver = Sauce.webdriver_method.call(:remote,
54
60
  :url => "http://#{@config.username}:#{@config.access_key}@#{@config.host}:#{@config.port}/wd/hub",
55
61
  :desired_capabilities => @config.to_desired_capabilities,
56
62
  :http_client => http_client)
57
63
  http_client.timeout = 90 # Once the browser is up, commands should time out reasonably
58
64
 
59
- @driver.file_detector = lambda do |args|
65
+ @watir = defined?(Watir::Browser) && @driver.is_a?(Watir::Browser)
66
+ @raw_driver = watir ? @driver.driver : @driver
67
+
68
+ raw_driver.file_detector = lambda do |args|
60
69
  file_path = args.first.to_s
61
70
  File.exist?(file_path) ? file_path : false
62
71
  end
63
72
 
73
+ Sauce.logger.debug "Thread #{Thread.current.object_id} created driver #{raw_driver.session_id}"
64
74
  Sauce::Selenium2.used_at_least_once
65
75
  end
66
76
 
@@ -69,15 +79,17 @@ module Sauce
69
79
  end
70
80
 
71
81
  def session_id
72
- @driver.send(:bridge).session_id
82
+ raw_driver.send(:bridge).session_id
73
83
  end
74
84
 
75
85
  def current_url
76
- @driver.current_url
86
+ raw_driver.current_url
77
87
  end
78
88
 
79
89
  def stop
90
+ Sauce.logger.debug "Thread #{Thread.current.object_id} quitting driver #{@driver.session_id}"
80
91
  @driver.quit
92
+ Sauce.logger.debug "Thread #{Thread.current.object_id} has quit driver #{@driver.session_id}"
81
93
  end
82
94
  end
83
95
  end
@@ -55,7 +55,7 @@ If you are using Capybara and are seeing this message, check the Capybara README
55
55
  tests = 'features'
56
56
  runner = 'Cucumber'
57
57
  tag = '@selenium'
58
- else :rspec
58
+ else
59
59
  tests = 'specs'
60
60
  runner = 'RSpec'
61
61
  tag = ':sauce => true'
@@ -1,36 +1,56 @@
1
1
  module Sauce
2
2
  module Utilities
3
3
  class Connect
4
+ class TunnelNeverStarted < StandardError
5
+ end
6
+
7
+ TIMEOUT = 90 # Magic Numbers!
8
+
4
9
  def self.start_from_config(config)
5
10
  self.start(:host => config[:application_host], :port => config[:application_port], :quiet => true)
6
11
  end
7
12
 
8
13
  def self.start(options={})
9
14
  begin
15
+ Sauce.logger.debug "Requiring Sauce Connect gem."
10
16
  require "sauce/connect"
11
17
  rescue LoadError => e
12
18
  STDERR.puts 'Please install the `sauce-connect` gem if you intend on using Sauce Connect with your tests!'
13
19
  exit(1)
14
20
  end
15
21
 
22
+ options[:timeout] = TIMEOUT unless options[:timeout]
16
23
  if ParallelTests.first_process?
24
+ Sauce.logger.debug "#{Thread.current.object_id} - First parallel process attempting to start Sauce Connect."
17
25
  unless @tunnel
18
26
  @tunnel = Sauce::Connect.new options
19
27
  @tunnel.connect
20
28
  @tunnel.wait_until_ready
29
+ else
30
+ Sauce.logger.warn "#{Thread.current.object_id} - Tunnel already existed somehow."
21
31
  end
22
32
  @tunnel
23
33
  else
24
- while not File.exist? "sauce_connect.ready"
25
- sleep 0.5
34
+ Sauce.logger.debug "#{Thread.current.object_id} - Waiting for a Sauce Connect tunnel to be ready."
35
+ timeout_after = Time.now + options[:timeout]
36
+ # Ensure first process has a change to start up
37
+ sleep 5
38
+ readyfile_found = File.exist? "sauce_connect.ready"
39
+ until (Time.now > timeout_after) || readyfile_found
40
+ readyfile_found = File.exist? "sauce_connect.ready"
41
+ sleep 1
26
42
  end
43
+
44
+ raise(TunnelNeverStarted, "Sauce Connect was not started within #{TIMEOUT} seconds") unless readyfile_found
27
45
  end
28
46
  end
29
47
 
30
48
  def self.close
31
49
  if @tunnel
32
50
  if ParallelTests.first_process?
51
+ Sauce.logger.debug "#{Thread.current.object_id} - First parallel process waiting for other processes before closing Sauce Connect."
33
52
  ParallelTests.wait_for_other_processes_to_finish
53
+ Sauce.logger.debug "#{Thread.current.object_id} - All other parallel processes closed - Closing Sauce Connect tunnel #{@tunnel}."
34
54
  @tunnel.disconnect
35
55
  @tunnel = nil
36
56
  end
@@ -8,6 +8,8 @@ module Sauce
8
8
 
9
9
  def self.start_if_required(config)
10
10
  if config[:start_local_application] && self.is_rails_app?
11
+ Sauce.logger.debug "App is a Rails app and config[:start_local_application] was trueish."
12
+ Sauce.logger.info "#{Thread.current.object_id} - Starting Rails app server."
11
13
  server = new
12
14
  server.start
13
15
 
@@ -75,19 +77,22 @@ module Sauce
75
77
  wait_for_server_on_port(@port)
76
78
 
77
79
  at_exit do
80
+ Sauce.logger.debug "#{Thread.current.object_id} - At exit hook called in Sauce::Utilities::RailsServer."
81
+ Sauce.logger.info "Stopping Rails App Server."
78
82
  @server.stop(3, "INT")
79
83
  RailsServer.server_pool.delete Thread.current.object_id
80
84
  end
81
- STDERR.puts "Rails server running!"
85
+ Sauce.logger.info "Rails server running!"
82
86
 
83
87
  RailsServer.server_pool[Thread.current.object_id] = @server
84
88
  end
85
89
 
86
90
  def stop
91
+ Sauce.logger.debug "#{Thread.current.object_id} - Stopping Rails app server with #stop method."
87
92
  begin
88
93
  @server.stop(3, "INT")
89
94
  rescue
90
- STDERR.puts "Rails server could not be killed. Did it fail to start?"
95
+ Sauce.logger.error "#{Thread.current.object_id} - Rails server could not be killed. Did it fail to start?"
91
96
  end
92
97
  end
93
98
  end
@@ -1,6 +1,6 @@
1
1
  module Sauce
2
2
  MAJOR_VERSION = '3.5'
3
- PATCH_VERSION = '6'
3
+ PATCH_VERSION = '7'
4
4
 
5
5
  def version
6
6
  "#{MAJOR_VERSION}.#{PATCH_VERSION}"
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe "Sauce::Config" do
3
+ describe "Sauce::Config", :sauce => true do
4
4
  it "should start Connect when start_tunnel is set" do
5
5
  tunnel = Sauce::Utilities::Connect.tunnel
6
6
  tunnel.should_not be_nil
@@ -2,9 +2,9 @@ require "spec_helper"
2
2
 
3
3
  describe "Capybara" do
4
4
  describe "Without :sauce tagging", :js => true, :type => :feature do
5
- it "should connect using the port", :js => true do
6
- visit "/"
7
- expect(page).to have_content "Hello Sauce!"
8
- end
5
+ # it "should connect using the port", :js => true do
6
+ # visit "/"
7
+ # expect(page).to have_content "Hello Sauce!"
8
+ # end
9
9
  end
10
10
  end
@@ -3,7 +3,7 @@ require "sauce"
3
3
  require "sauce/connect"
4
4
 
5
5
  Sauce.config do |c|
6
- c.browsers = [
6
+ c[:browsers] = [
7
7
  ["Windows 2008", "iexplore", "9"],
8
8
  ["Linux", "opera", 12]
9
9
  ]
@@ -4,6 +4,7 @@ describe Sauce::Selenium2 do
4
4
  describe "#file_detector" do
5
5
  it "should return the path of files when they exist" do
6
6
  Selenium::WebDriver::Remote::Bridge.any_instance.stub(:create_session).and_return({})
7
+ Selenium::WebDriver::Remote::Bridge.any_instance.stub(:session_id).and_return("FSDSDFSDF")
7
8
 
8
9
  path = __FILE__
9
10
 
@@ -6,6 +6,7 @@ describe Sauce::Selenium2 do
6
6
  before :each do
7
7
  mock_driver = double(::Selenium::WebDriver::Driver)
8
8
  mock_driver.stub(:file_detector=)
9
+ mock_driver.stub(:session_id)
9
10
  ::Selenium::WebDriver.should_receive(:for).and_return(mock_driver)
10
11
  end
11
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sauce
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.6
4
+ version: 3.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Lacey
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2015-04-21 00:00:00.000000000 Z
17
+ date: 2015-09-08 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: rspec
@@ -267,6 +267,7 @@ files:
267
267
  - lib/sauce/driver_pool.rb
268
268
  - lib/sauce/heroku.rb
269
269
  - lib/sauce/job.rb
270
+ - lib/sauce/logging.rb
270
271
  - lib/sauce/parallel.rb
271
272
  - lib/sauce/parallel/test_broker.rb
272
273
  - lib/sauce/parallel/test_group.rb
@@ -344,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
344
345
  version: '0'
345
346
  requirements: []
346
347
  rubyforge_project:
347
- rubygems_version: 2.2.2
348
+ rubygems_version: 2.4.8
348
349
  signing_key:
349
350
  specification_version: 4
350
351
  summary: A Ruby helper for running tests in Sauce Labs