sauce 2.4.2 → 2.4.3

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.
@@ -53,7 +53,6 @@ module Sauce
53
53
  end
54
54
  end
55
55
 
56
- alias :base_find :find
57
56
  alias :base_visit :visit
58
57
  alias :base_current_url :current_url
59
58
  alias :base_reset! :reset!
@@ -63,11 +62,20 @@ module Sauce
63
62
  alias :base_execute_script :execute_script
64
63
  alias :base_evaluate_script :evaluate_script
65
64
 
66
- @methods_to_retry = [ :find, :visit, :current_url, :reset!,
65
+ @methods_to_retry = [:visit, :current_url, :reset!,
67
66
  :within_frame, :within_window, :find_window, :source,
68
67
  :execute_script, :evaluate_script
69
68
  ]
70
69
 
70
+ if method_defined? :find
71
+ alias :base_find :find
72
+ @methods_to_retry += [:find]
73
+ else
74
+ alias :base_find_css :find_css
75
+ alias :base_find_xpath :find_xpath
76
+ @methods_to_retry += [:find_css, :find_xpath]
77
+ end
78
+
71
79
  if Gem::Version.new(::Capybara::VERSION) < Gem::Version.new(2)
72
80
  alias :base_body :body
73
81
  alias :base_source :source
@@ -122,6 +130,11 @@ module Sauce
122
130
  @browser = nil
123
131
  $sauce_tunnel.disconnect if $sauce_tunnel
124
132
  end
133
+
134
+ def render(path)
135
+ browser.save_screenshot path
136
+ end
137
+
125
138
  end
126
139
  end
127
140
  end
data/lib/sauce/config.rb CHANGED
@@ -113,7 +113,8 @@ module Sauce
113
113
  :browserName => BROWSERS[browser] || browser,
114
114
  :version => browser_version,
115
115
  :platform => PLATFORMS[os] || os,
116
- :name => @opts[:job_name]
116
+ :name => @opts[:job_name],
117
+ :client_version => client_version
117
118
  }.update(@opts.reject {|k, v| [:browser, :browser_version, :os, :job_name].include? k})
118
119
  end
119
120
 
@@ -180,8 +181,31 @@ module Sauce
180
181
  @opts[:port]
181
182
  end
182
183
 
184
+ def tools
185
+ tools = []
186
+ tools << "Rspec" if is_defined? "RSpec"
187
+ tools << "Capybara" if is_defined? "Capybara"
188
+ tools << "Cucumber" if is_defined? "Cucumber"
189
+ tools << "Test::Unit" if is_defined?("Test", "Unit")
190
+ tools
191
+ end
192
+
193
+ # Only here to be stubbed for testing. Gross.
194
+ def is_defined? (top_mod, sub_mod = nil)
195
+ return_value = Object.const_defined? top_mod
196
+ unless !return_value || sub_mod.nil?
197
+ return_value = Object.const_get(top_mod).const_defined? sub_mod
198
+ end
199
+
200
+ return_value
201
+ end
202
+
183
203
  private
184
204
 
205
+ def client_version
206
+ "Ruby: #{RUBY_ENGINE} #{RUBY_VERSION} (#{RUBY_PLATFORM}) Sauce gem: #{Sauce.version} Tools: #{tools.to_s}"
207
+ end
208
+
185
209
  def load_options_from_environment
186
210
  return extract_options_from_hash(ENV)
187
211
  end
data/lib/sauce/version.rb CHANGED
@@ -1,4 +1,9 @@
1
-
2
1
  module Sauce
3
2
  MAJOR_VERSION = '2.4'
3
+ PATCH_VERSION = '3'
4
+
5
+ def version
6
+ "#{MAJOR_VERSION}.#{PATCH_VERSION}"
7
+ end
8
+ module_function :version
4
9
  end
@@ -1,2 +1,3 @@
1
1
  require "rspec"
2
2
  require "capybara/rspec"
3
+ require "sauce"
@@ -43,13 +43,13 @@ describe Sauce::Capybara do
43
43
  let(:driver) { Sauce::Capybara::Driver.new(app) }
44
44
 
45
45
  describe "#body" do
46
- context "With Capybara 1.x", :capybara_version => 1 do
46
+ context "With Capybara 1.x", :capybara_version => [1, "1.9.9"] do
47
47
  it "should not exist in version 2" do
48
48
  driver.should respond_to :base_body
49
49
  end
50
50
  end
51
51
 
52
- context "With Capybara 2.x", :capybara_version => 2 do
52
+ context "With Capybara 2.x", :capybara_version => [2, "2.9.9"] do
53
53
  it "should not exist" do
54
54
  driver.should_not respond_to :base_body
55
55
  end
@@ -57,13 +57,13 @@ describe Sauce::Capybara do
57
57
  end
58
58
 
59
59
  describe "#source" do
60
- context "With Capybara 1", :capybara_version => 1 do
60
+ context "With Capybara 1", :capybara_version => [1, "1.9.9"] do
61
61
  it "should exist" do
62
62
  driver.should respond_to :base_source
63
63
  end
64
64
  end
65
65
 
66
- context "with Capybara 2.x", :capybara_version => 2 do
66
+ context "with Capybara 2.x", :capybara_version => [2, "2.9.9"] do
67
67
  it "should not exist" do
68
68
  driver.should_not respond_to :base_source
69
69
  end
@@ -71,13 +71,13 @@ describe Sauce::Capybara do
71
71
  end
72
72
 
73
73
  describe "#html" do
74
- context "With Capybara 1.x", :capybara_version => 1 do
74
+ context "With Capybara 1.x", :capybara_version => [1, "1.9.9"] do
75
75
  it "should not exist" do
76
76
  driver.should_not respond_to :base_html
77
77
  end
78
78
  end
79
79
 
80
- context "With Capybara 2.x", :capybara_version => 2 do
80
+ context "With Capybara 2.x", :capybara_version => [2, "2.9.9"] do
81
81
  it "should exist" do
82
82
  driver.should respond_to :base_html
83
83
  end
@@ -201,35 +201,96 @@ describe Sauce::Capybara do
201
201
  describe '#find' do
202
202
  let(:selector) { '#lol' }
203
203
 
204
- context 'with an environment override' do
205
- before :each do
206
- ENV['SAUCE_DISABLE_RETRY'] = '1'
204
+ context "with Capybara < 2.1", :capybara_version => [2, "2.0.9"] do
205
+
206
+ it "should exist" do
207
+ driver.respond_to?(:find).should be_true
208
+ end
209
+
210
+ context 'with an environment override' do
211
+ before :each do
212
+ ENV['SAUCE_DISABLE_RETRY'] = '1'
213
+ end
214
+
215
+ it 'should not retry and raise the error' do
216
+ driver.should_receive(:base_find).with(selector).and_raise(Selenium::WebDriver::Error::UnknownError)
217
+
218
+ expect {
219
+ driver.find(selector)
220
+ }.to raise_error(Selenium::WebDriver::Error::UnknownError)
221
+ end
222
+
223
+ after :each do
224
+ ENV['SAUCE_DISABLE_RETRY'] = nil
225
+ end
226
+ end
227
+
228
+ it 'should route through handle_retry' do
229
+ driver.should_receive(:base_find).with(selector) # BLECH
230
+ driver.find(selector)
207
231
  end
208
232
 
209
- it 'should not retry and raise the error' do
210
- driver.should_receive(:base_find).with(selector).and_raise(Selenium::WebDriver::Error::UnknownError)
233
+ it 'should retry 3 times and then raise' do
234
+ driver.should_receive(:base_find).with(selector).exactly(4).times.and_raise(Selenium::WebDriver::Error::UnknownError)
211
235
 
212
236
  expect {
213
237
  driver.find(selector)
214
238
  }.to raise_error(Selenium::WebDriver::Error::UnknownError)
215
239
  end
240
+ end
241
+
242
+ context "with Capybara => 2.1", :capybara_version => ["2.1", "2.9.9"] do
243
+ it "should not be aliased" do
244
+ driver.respond_to?(:base_find).should be_false
245
+ end
216
246
 
217
- after :each do
218
- ENV['SAUCE_DISABLE_RETRY'] = nil
247
+ it "should not be retried" do
248
+ Sauce::Capybara::Driver.instance_variable_get(:@methods_to_retry).should_not include :find
219
249
  end
220
250
  end
251
+ end
221
252
 
222
- it 'should route through handle_retry' do
223
- driver.should_receive(:base_find).with(selector) # BLECH
224
- driver.find(selector)
253
+ describe "#find_css" do
254
+ context "with Capybara < 2.1", :capybara_version => [0, "2.0.9"] do
255
+ it "should not be aliased" do
256
+ driver.respond_to?(:base_find_css).should be_false
257
+ end
258
+
259
+ it "should not be retried" do
260
+ Sauce::Capybara::Driver.instance_variable_get(:@methods_to_retry).should_not include :find_css
261
+ end
225
262
  end
226
263
 
227
- it 'should retry 3 times and then raise' do
228
- driver.should_receive(:base_find).with(selector).exactly(4).times.and_raise(Selenium::WebDriver::Error::UnknownError)
264
+ context "with Capybara >= 2.1", :capybara_version => ["2.1", "2.9.9"] do
265
+ it "should be aliased" do
266
+ driver.respond_to?(:base_find_css).should be_true
267
+ end
229
268
 
230
- expect {
231
- driver.find(selector)
232
- }.to raise_error(Selenium::WebDriver::Error::UnknownError)
269
+ it "should be retried" do
270
+ Sauce::Capybara::Driver.instance_variable_get(:@methods_to_retry).should include :find_css
271
+ end
272
+ end
273
+ end
274
+
275
+ describe "#find_xpath" do
276
+ context "with Capybara < 2.1", :capybara_version => [0, "2.0.9"] do
277
+ it "should not be aliased" do
278
+ driver.respond_to?(:base_find_xpath).should be_false
279
+ end
280
+
281
+ it "should not be retried" do
282
+ Sauce::Capybara::Driver.instance_variable_get(:@methods_to_retry).should_not include :find_xpath
283
+ end
284
+ end
285
+
286
+ context "with Capybara >= 2.1", :capybara_version => ["2.1", "2.9.9"] do
287
+ it "should be aliased" do
288
+ driver.respond_to?(:base_find_xpath).should be_true
289
+ end
290
+
291
+ it "should be retried" do
292
+ Sauce::Capybara::Driver.instance_variable_get(:@methods_to_retry).should include :find_xpath
293
+ end
233
294
  end
234
295
  end
235
296
 
@@ -195,6 +195,72 @@ describe Sauce::Config do
195
195
  config.to_desired_capabilities[:platform].should == 'VISTA'
196
196
  end
197
197
  end
198
+
199
+ context 'client_version' do
200
+ let(:config) {Sauce::Config.new()}
201
+
202
+ it 'should include the Ruby engine' do
203
+ config.to_desired_capabilities[:client_version].should include RUBY_ENGINE
204
+ end
205
+
206
+ it "should include the ruby platform" do
207
+ config.to_desired_capabilities[:client_version].should include RUBY_PLATFORM
208
+ end
209
+
210
+ it "should include the ruby version" do
211
+ config.to_desired_capabilities[:client_version].should include RUBY_VERSION
212
+ end
213
+
214
+ it "should include the gem version" do
215
+ config.to_desired_capabilities[:client_version].should include Sauce.version
216
+ end
217
+
218
+ it "should include a bracketed array of tools in use" do
219
+ config.to_desired_capabilities[:client_version].should include config.tools.to_s
220
+ end
221
+ end
222
+
223
+ describe "#tools" do
224
+ let(:config) {Sauce::Config.new}
225
+
226
+ before :each do
227
+ config.stub(:is_defined?).and_call_original
228
+ end
229
+
230
+ it "should include rspec if present" do
231
+ config.tools.should include "Rspec"
232
+ end
233
+
234
+ it "should include capybara" do
235
+ config.stub(:is_defined?).with("Capybara") {true}
236
+ config.tools.should include "Capybara"
237
+ end
238
+
239
+ it "should not include capybara when absent" do
240
+ config.stub(:is_defined?).with("Capybara") {false}
241
+ config.tools.should_not include "Capybara"
242
+ end
243
+
244
+ it "should not include cucumber when not present" do
245
+ config.stub(:is_defined?).with("Cucumber") {false}
246
+ config.tools.should_not include "Cucumber"
247
+ end
248
+
249
+ it "should include cucumber when present" do
250
+ config.stub(:is_defined?).with("Cucumber") {true}
251
+ config.tools.should include "Cucumber"
252
+ end
253
+
254
+ it "should include test::unit if present" do
255
+ config.stub(:is_defined?).with("Test","Unit") {true}
256
+ config.tools.should include "Test::Unit"
257
+ end
258
+
259
+ it "should not include test::unit if absent" do
260
+ config.stub(:is_defined?).with("Test", "Unit") {false}
261
+ config.tools.should_not include "Test::Unit"
262
+ end
263
+ end
198
264
  end
199
265
 
200
266
  context 'configuring Sauce' do
data/spec/spec_helper.rb CHANGED
@@ -8,9 +8,11 @@ require 'sauce'
8
8
  require 'capybara'
9
9
 
10
10
  RSpec.configure do |c|
11
- if Gem::Version.new(Capybara::VERSION) < Gem::Version.new(2)
12
- c.filter_run_excluding :capybara_version => 2
13
- else
14
- c.filter_run_excluding :capybara_version => 1
15
- end
11
+ c.filter_run_excluding :capybara_version => lambda { |capybara_version_range|
12
+ actual_version = Gem::Version.new Capybara::VERSION
13
+ lower_bound = Gem::Version.new capybara_version_range[0]
14
+ upper_bound = Gem::Version.new capybara_version_range[1]
15
+
16
+ !actual_version.between?(lower_bound, upper_bound)
17
+ }
16
18
  end
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: 2.4.2
4
+ version: 2.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,8 +14,24 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2013-04-18 00:00:00.000000000 Z
17
+ date: 2013-04-20 00:00:00.000000000 Z
18
18
  dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: capybara
21
+ requirement: !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.1.0
27
+ type: :development
28
+ prerelease: false
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 2.1.0
19
35
  - !ruby/object:Gem::Dependency
20
36
  name: net-http-persistent
21
37
  requirement: !ruby/object:Gem::Requirement
@@ -210,7 +226,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
226
  version: '0'
211
227
  segments:
212
228
  - 0
213
- hash: -4030040488753924047
229
+ hash: -4599655559509497330
214
230
  required_rubygems_version: !ruby/object:Gem::Requirement
215
231
  none: false
216
232
  requirements:
@@ -219,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
235
  version: '0'
220
236
  segments:
221
237
  - 0
222
- hash: -4030040488753924047
238
+ hash: -4599655559509497330
223
239
  requirements: []
224
240
  rubyforge_project:
225
241
  rubygems_version: 1.8.25