sauce 3.3.2 → 3.4.0
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 +8 -8
- data/lib/sauce/capybara.rb +9 -7
- data/lib/sauce/parallel/test_broker.rb +5 -1
- data/lib/sauce/rspec.rb +86 -36
- data/lib/sauce/version.rb +2 -2
- data/spec/integration/rspec-capybara/spec/capybara_required_last_spec.rb +18 -0
- data/spec/integration/rspec-capybara/spec/integration_spec.rb +17 -0
- data/spec/integration/rspec-capybara/spec/sauce_config_spec.rb +13 -0
- data/spec/integration/rspec-capybara/spec/sauce_required_last_spec.rb +21 -0
- data/spec/integration/rspec-capybara/spec/selenium/selenium_with_capybara.rb +12 -0
- data/spec/integration/rspec-capybara/spec/spec_helper.rb +36 -0
- data/spec/integration/rspec/spec/spec_helper.rb +0 -1
- metadata +14 -4
- data/spec/integration/rspec/spec/selenium/selenium_with_capybara_spec.rb +0 -36
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OWIzMDNhNjYzZGQ5ZmMyMDY0YmEzYzY4NTE1NjRlYWQxMDk0NGVlMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWVjMDM0NjE2MTQzYmRmMzFmOGNhY2U0MDJmMzI2MmFlNzI3YmRjMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWM4NTFiZDg1MzQ2OTQ1M2E4MzQyNjYzYzlhZjJiZjNmNzQxNTYxNDdhNzRl
|
10
|
+
N2U5MDdiZDY5Mjg5MjQ0ODM0MWQ3MmYyMjk0MDRhNWMyM2U1ZjEyNDY1NzBi
|
11
|
+
N2U2M2E4Y2FjYjA0YjIwMTRjZjA3NmEwMzljMDQ3MzAwNzA2ODE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjhlNmRlNDk5Y2IzMzdhZGJhZTAwYjc3NDU2ZTU1NzEzMmYwN2IwMTlkOGU1
|
14
|
+
MTg0NGVhY2NkYzZjNjEzOWVjZDM1MjUyOWVlNGI5MGRlYjhhMTI0YzY4OGE3
|
15
|
+
MDM4OWZjYWZmMWM1ZmQxODczZDIwYzI2OWE2OTVjZGI0OTlhNjQ=
|
data/lib/sauce/capybara.rb
CHANGED
@@ -129,13 +129,15 @@ module Sauce
|
|
129
129
|
require "rspec/core"
|
130
130
|
::RSpec.configure do |config|
|
131
131
|
config.before :suite do
|
132
|
-
::Capybara.configure do |
|
132
|
+
::Capybara.configure do |capy_config|
|
133
133
|
sauce_config = Sauce::Config.new
|
134
|
-
if
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
134
|
+
if capy_config.app_host.nil?
|
135
|
+
if sauce_config[:start_local_application]
|
136
|
+
host = sauce_config[:application_host] || "127.0.0.1"
|
137
|
+
port = sauce_config[:application_port]
|
138
|
+
capy_config.app_host = "http://#{host}:#{port}"
|
139
|
+
capy_config.run_server = false
|
140
|
+
end
|
139
141
|
end
|
140
142
|
end
|
141
143
|
end
|
@@ -167,4 +169,4 @@ module Sauce
|
|
167
169
|
Sauce::Capybara.configure_capybara_for_rspec
|
168
170
|
end
|
169
171
|
end
|
170
|
-
end
|
172
|
+
end
|
@@ -28,7 +28,11 @@ module Sauce
|
|
28
28
|
browsers[file] << test_groups[file].next_platform
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
on_windows = RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
32
|
+
format_string = on_windows ? "%s" : "'%s'"
|
33
|
+
perfile_browsers = format_string % [JSON.generate(browsers)]
|
34
|
+
|
35
|
+
return {:SAUCE_PERFILE_BROWSERS => perfile_browsers}
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
data/lib/sauce/rspec.rb
CHANGED
@@ -62,20 +62,101 @@ rescue LoadError
|
|
62
62
|
# User doesn't have RSpec 1.x installed
|
63
63
|
rescue => e
|
64
64
|
STDERR.puts "Exception occured: #{e.to_s}"
|
65
|
+
exit 1
|
65
66
|
end
|
66
67
|
|
67
68
|
begin
|
68
69
|
require 'rspec/core'
|
69
70
|
module Sauce
|
70
71
|
module RSpec
|
72
|
+
@@server = nil
|
73
|
+
|
74
|
+
def self.server
|
75
|
+
return @@server
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.server=(s)
|
79
|
+
@@server = s
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.setup_environment
|
83
|
+
::RSpec.configuration.before(:all, :sauce => true) do
|
84
|
+
Sauce::RSpec.start_tools_for_sauce_tag
|
85
|
+
end
|
86
|
+
|
87
|
+
::RSpec.configuration.before :all do
|
88
|
+
Sauce::RSpec.start_tools_for_selenium_directory
|
89
|
+
end
|
90
|
+
::RSpec.configuration.after :suite do
|
91
|
+
Sauce::RSpec.stop_tools
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.start_tools_for_sauce_tag
|
96
|
+
config = Sauce::Config.new
|
97
|
+
if config[:start_tunnel]
|
98
|
+
Sauce::Utilities::Connect.start_from_config(config)
|
99
|
+
end
|
100
|
+
|
101
|
+
unless self.server
|
102
|
+
self.server= Sauce::Utilities::RailsServer.start_if_required(config)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.start_tools_for_selenium_directory
|
107
|
+
config = Sauce::Config.new
|
108
|
+
# TODO: Check which rspec version this changed in -- If < 2, change.
|
109
|
+
files_to_run = ::RSpec.configuration.respond_to?(:files_to_run) ? ::RSpec.configuration.files_to_run :
|
110
|
+
::RSpec.configuration.settings[:files_to_run]
|
111
|
+
|
112
|
+
running_selenium_specs = files_to_run.any? {|file| file =~ /spec\/selenium\//}
|
113
|
+
need_tunnel = running_selenium_specs && config[:application_host]
|
114
|
+
|
115
|
+
if need_tunnel && config[:start_tunnel]
|
116
|
+
Sauce::Utilities::Connect.start_from_config(config)
|
117
|
+
end
|
118
|
+
|
119
|
+
if running_selenium_specs
|
120
|
+
unless self.server
|
121
|
+
self.server= Sauce::Utilities::RailsServer.start_if_required(config)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.stop_tools
|
127
|
+
Sauce::Utilities::Connect.close
|
128
|
+
server.stop if self.server
|
129
|
+
Sauce::Utilities.warn_if_suspect_misconfiguration
|
130
|
+
end
|
131
|
+
|
71
132
|
module SeleniumExampleGroup
|
72
133
|
attr_reader :selenium
|
73
134
|
alias_method :s, :selenium
|
74
135
|
|
136
|
+
def self.rspec_current_example
|
137
|
+
lambda { |context| ::RSpec.current_example }
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.context_example
|
141
|
+
lambda { |context| context.example }
|
142
|
+
end
|
143
|
+
|
144
|
+
def self.find_example_method
|
145
|
+
::RSpec.respond_to?(:current_example) ? rspec_current_example : context_example
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.current_example
|
149
|
+
@@current_example_fetcher ||= find_example_method
|
150
|
+
end
|
151
|
+
|
75
152
|
# TODO V4 -- Remove this entirely
|
76
153
|
def page
|
77
|
-
|
78
|
-
|
154
|
+
if self.class.included_modules.any? {|m| m.name == 'Capybara::DSL'}
|
155
|
+
::Capybara.current_session
|
156
|
+
else
|
157
|
+
warn Sauce::Utilities.page_deprecation_message
|
158
|
+
@selenium
|
159
|
+
end
|
79
160
|
end
|
80
161
|
|
81
162
|
def self.included(othermod)
|
@@ -89,6 +170,7 @@ begin
|
|
89
170
|
:browser_version => version,
|
90
171
|
:job_name => description})
|
91
172
|
Sauce.driver_pool[Thread.current.object_id] = @selenium
|
173
|
+
example = SeleniumExampleGroup.current_example.call(self)
|
92
174
|
example.metadata[:sauce_public_link] = SauceWhisk.public_link(@selenium.session_id)
|
93
175
|
|
94
176
|
begin
|
@@ -107,40 +189,7 @@ begin
|
|
107
189
|
})
|
108
190
|
::RSpec.configuration.include(self, :sauce => true)
|
109
191
|
|
110
|
-
::RSpec.
|
111
|
-
config = Sauce::Config.new
|
112
|
-
if config[:application_host]
|
113
|
-
Sauce::Utilities::Connect.start_from_config(config)
|
114
|
-
end
|
115
|
-
|
116
|
-
@@server = Sauce::Utilities::RailsServer.start_if_required(config)
|
117
|
-
end
|
118
|
-
|
119
|
-
::RSpec.configuration.before :suite do
|
120
|
-
config = Sauce::Config.new
|
121
|
-
# TODO: Check which rspec version this changed in -- If < 2, change.
|
122
|
-
files_to_run = ::RSpec.configuration.respond_to?(:files_to_run) ? ::RSpec.configuration.files_to_run :
|
123
|
-
::RSpec.configuration.settings[:files_to_run]
|
124
|
-
|
125
|
-
running_selenium_specs = files_to_run.any? {|file| file =~ /spec\/selenium\//}
|
126
|
-
need_tunnel = running_selenium_specs && config[:application_host]
|
127
|
-
|
128
|
-
if need_tunnel || config[:start_tunnel]
|
129
|
-
Sauce::Utilities::Connect.start_from_config(config)
|
130
|
-
end
|
131
|
-
|
132
|
-
if running_selenium_specs
|
133
|
-
@@server = Sauce::Utilities::RailsServer.start_if_required(config)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
::RSpec.configuration.after :suite do
|
138
|
-
Sauce::Utilities::Connect.close
|
139
|
-
if (defined? @@server) && @@server
|
140
|
-
@@server.stop
|
141
|
-
end
|
142
|
-
Sauce::Utilities.warn_if_suspect_misconfiguration
|
143
|
-
end
|
192
|
+
Sauce::RSpec.setup_environment
|
144
193
|
end
|
145
194
|
end
|
146
195
|
end
|
@@ -148,6 +197,7 @@ rescue LoadError, TypeError
|
|
148
197
|
# User doesn't have RSpec 2.x installed
|
149
198
|
rescue => e
|
150
199
|
STDERR.puts "Exception caught: #{e.to_s}"
|
200
|
+
exit 1
|
151
201
|
end
|
152
202
|
|
153
203
|
begin
|
data/lib/sauce/version.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Capybara Examples where Capybara is included last", :type => :feature, :sauce => true do
|
4
|
+
context "When calling the #page method" do
|
5
|
+
it "should get access to a Capybara Session object" do
|
6
|
+
page.should be_a_kind_of Capybara::Session
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should not output a deprecation message" do
|
10
|
+
self.should_not_receive(:warn).with(page_deprecation_warning)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should not create a new driver" do
|
15
|
+
::Sauce::Selenium2.should_not_receive(:new)
|
16
|
+
visit "http://wwww.google.com"
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Capybara examples", :js => true, :sauce => true, :type => :feature do
|
4
|
+
it "should not create a new driver" do
|
5
|
+
::Sauce::Selenium2.should_not_receive(:new)
|
6
|
+
visit "http://wwww.google.com"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should get access to a Capybara Session object" do
|
10
|
+
page.should be_a_kind_of Capybara::Session
|
11
|
+
visit "http://www.google.com"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the same driver as stock webdriver" do
|
15
|
+
Capybara.current_session.driver.browser.should eq @selenium
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Sauce::Config", :sauce => true do
|
4
|
+
it "should have rspec in its tool set", :sauce => true do
|
5
|
+
capabilities = Sauce.get_config.to_desired_capabilities
|
6
|
+
capabilities[:client_version].should include "Rspec"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have Capybara in its tool set", :sauce => true do
|
10
|
+
capabilities = Sauce.get_config.to_desired_capabilities
|
11
|
+
capabilities[:client_version].should include "Capybara"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Capybarad Examples where Sauce is included second", :js => true do
|
4
|
+
include Capybara::DSL
|
5
|
+
include Sauce::RSpec::SeleniumExampleGroup
|
6
|
+
|
7
|
+
context "When calling the #page method" do
|
8
|
+
it "should get access to a Capybara Session object" do
|
9
|
+
page.should be_a_kind_of Capybara::Session
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should not output a deprecation message" do
|
13
|
+
self.should_not_receive(:warn).with(page_deprecation_warning)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should not create a new driver" do
|
18
|
+
::Sauce::Selenium2.should_not_receive(:new)
|
19
|
+
visit "http://wwww.google.com"
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "The Selenium Directory with Capybara", :js => true do
|
4
|
+
it "should have the same driver as stock webdriver", :js => true do
|
5
|
+
Capybara.current_session.driver.browser.should eq @selenium
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should not create a new driver" do
|
9
|
+
::Sauce::Selenium2.should_not_receive(:new)
|
10
|
+
visit "http://wwww.google.com"
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "simplecov"
|
2
|
+
|
3
|
+
SimpleCov.start do
|
4
|
+
SimpleCov.root "#{Dir.pwd}/../../../"
|
5
|
+
command_name 'RSpec Integration'
|
6
|
+
use_merging true
|
7
|
+
merge_timeout 6000
|
8
|
+
end
|
9
|
+
|
10
|
+
require "rspec"
|
11
|
+
require "capybara/rspec"
|
12
|
+
require "sauce"
|
13
|
+
require "sauce/capybara"
|
14
|
+
|
15
|
+
class MyRackApp
|
16
|
+
def self.call(env)
|
17
|
+
[200, {}, ["Hello"]]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Capybara.app = MyRackApp
|
22
|
+
|
23
|
+
Sauce.config do |c|
|
24
|
+
c[:browsers] = [
|
25
|
+
["Windows 2008", "iexplore", "9"]
|
26
|
+
]
|
27
|
+
|
28
|
+
c[:application_host] = "localhost"
|
29
|
+
end
|
30
|
+
|
31
|
+
def page_deprecation_warning
|
32
|
+
return <<-MESSAGE
|
33
|
+
[DEPRECATED] Using the #page method is deprecated for RSpec tests without Capybara. Please use the #s or #selenium method instead.
|
34
|
+
If you are using Capybara and are seeing this message, check the Capybara README for information on how to include the Capybara DSL in your tests.
|
35
|
+
MESSAGE
|
36
|
+
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: 3.
|
4
|
+
version: 3.4.0
|
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: 2014-
|
17
|
+
date: 2014-03-16 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: rspec
|
@@ -280,9 +280,14 @@ files:
|
|
280
280
|
- spec/integration/connect/spec/start_tunnel_spec.rb
|
281
281
|
- spec/integration/connect/spec/with_capybara_spec.rb
|
282
282
|
- spec/integration/connect_integration_spec.rb
|
283
|
+
- spec/integration/rspec-capybara/spec/capybara_required_last_spec.rb
|
284
|
+
- spec/integration/rspec-capybara/spec/integration_spec.rb
|
285
|
+
- spec/integration/rspec-capybara/spec/sauce_config_spec.rb
|
286
|
+
- spec/integration/rspec-capybara/spec/sauce_required_last_spec.rb
|
287
|
+
- spec/integration/rspec-capybara/spec/selenium/selenium_with_capybara.rb
|
288
|
+
- spec/integration/rspec-capybara/spec/spec_helper.rb
|
283
289
|
- spec/integration/rspec/spec/integration_spec.rb
|
284
290
|
- spec/integration/rspec/spec/selenium/selenium_directory_spec.rb
|
285
|
-
- spec/integration/rspec/spec/selenium/selenium_with_capybara_spec.rb
|
286
291
|
- spec/integration/rspec/spec/spec_helper.rb
|
287
292
|
- spec/integration/rspec/spec/tagging/selenium_tagging_spec.rb
|
288
293
|
- spec/integration/testunit/test/capybara_integration_test.rb
|
@@ -341,9 +346,14 @@ test_files:
|
|
341
346
|
- spec/integration/connect_integration_spec.rb
|
342
347
|
- spec/integration/rspec/spec/integration_spec.rb
|
343
348
|
- spec/integration/rspec/spec/selenium/selenium_directory_spec.rb
|
344
|
-
- spec/integration/rspec/spec/selenium/selenium_with_capybara_spec.rb
|
345
349
|
- spec/integration/rspec/spec/spec_helper.rb
|
346
350
|
- spec/integration/rspec/spec/tagging/selenium_tagging_spec.rb
|
351
|
+
- spec/integration/rspec-capybara/spec/capybara_required_last_spec.rb
|
352
|
+
- spec/integration/rspec-capybara/spec/integration_spec.rb
|
353
|
+
- spec/integration/rspec-capybara/spec/sauce_config_spec.rb
|
354
|
+
- spec/integration/rspec-capybara/spec/sauce_required_last_spec.rb
|
355
|
+
- spec/integration/rspec-capybara/spec/selenium/selenium_with_capybara.rb
|
356
|
+
- spec/integration/rspec-capybara/spec/spec_helper.rb
|
347
357
|
- spec/integration/testunit/test/capybara_integration_test.rb
|
348
358
|
- spec/integration/testunit/test/integration_test.rb
|
349
359
|
- spec/integration/testunit/test/test_helper.rb
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require "rspec"
|
2
|
-
require "rspec/mocks"
|
3
|
-
require "spec_helper"
|
4
|
-
require "sauce/capybara"
|
5
|
-
|
6
|
-
class MyRackApp
|
7
|
-
def self.call(env)
|
8
|
-
[200, {}, ["Hello"]]
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
Sauce.config do |c|
|
13
|
-
c.browsers = [
|
14
|
-
["Windows 2008", "iexplore", "9"],
|
15
|
-
["Linux", "opera", 12]
|
16
|
-
]
|
17
|
-
end
|
18
|
-
|
19
|
-
Capybara.app = MyRackApp
|
20
|
-
|
21
|
-
describe "The Selenium Directory with Capybara", :js => true do
|
22
|
-
|
23
|
-
include Capybara::DSL
|
24
|
-
it "should get run on every defined browser", :js => true do
|
25
|
-
visit "http://www.google.com"
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should have the same driver as stock webdriver", :js => true do
|
29
|
-
Capybara.current_session.driver.browser.should eq @selenium
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should not create a new driver" do
|
33
|
-
::Sauce::Selenium2.should_not_receive(:new)
|
34
|
-
visit "http://wwww.google.com"
|
35
|
-
end
|
36
|
-
end
|