mediawiki_selenium 1.0.2 → 1.1.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 +4 -4
- data/.rubocop.yml +3 -0
- data/README.md +4 -0
- data/lib/mediawiki_selenium/browser_factory/base.rb +13 -7
- data/lib/mediawiki_selenium/browser_factory/chrome.rb +7 -2
- data/lib/mediawiki_selenium/browser_factory/firefox.rb +8 -3
- data/lib/mediawiki_selenium/browser_factory/phantomjs.rb +15 -2
- data/lib/mediawiki_selenium/environment.rb +1 -1
- data/lib/mediawiki_selenium/remote_browser_factory.rb +5 -5
- data/lib/mediawiki_selenium/support/hooks.rb +3 -3
- data/lib/mediawiki_selenium/version.rb +1 -1
- data/mediawiki_selenium.gemspec +1 -1
- data/spec/browser_factory/base_spec.rb +49 -49
- data/spec/browser_factory/chrome_spec.rb +8 -0
- data/spec/browser_factory/firefox_spec.rb +15 -0
- data/spec/browser_factory/phantomjs_spec.rb +9 -0
- metadata +4 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7aa88726278140c10f75311afdd0a7539db96fda
|
4
|
+
data.tar.gz: 78c6c6c468dadd5a49ae3d6dff971b4ffa46dc1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2790c6bafb50c5924b545ee72d1149732a046d45a7833bcc38f6381721b1a683dd099ec95fd9dd9e4f47fabe1b29cd83fcd0560871e0b6387e333a1d0bc56e63
|
7
|
+
data.tar.gz: 62f2281382c96ddc1489bb31cc0d4977b06b3a3bcecde883847fccb90ec713a43394f355a30710376118c4bdd91f6cc78f460eecc1a935df6914ddd237dda4ef
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -199,6 +199,10 @@ See https://www.mediawiki.org/wiki/Gerrit
|
|
199
199
|
|
200
200
|
## Release notes
|
201
201
|
|
202
|
+
### 1.1.0 2015-04-06
|
203
|
+
* Support for `browser_http_proxy` in Firefox, Chrome, and Phantomjs
|
204
|
+
* Renamed browser factory `bind` method to `configure`
|
205
|
+
|
202
206
|
### 1.0.2 2015-03-26
|
203
207
|
* Fixed double yield bug in `PageFactory#on`
|
204
208
|
* Implemented loading of a `default` configuration from `environments.yml`
|
@@ -15,7 +15,7 @@ module MediawikiSelenium
|
|
15
15
|
# @example Always configure Firefox's language according to `:browser_language`
|
16
16
|
# module MediawikiSelenium::BrowserFactory
|
17
17
|
# class Firefox < Base
|
18
|
-
#
|
18
|
+
# configure(:browser_language) do |lang, options|
|
19
19
|
# options[:desired_capabilities][:firefox_profile]["intl.accept_languages"] = lang
|
20
20
|
# end
|
21
21
|
# end
|
@@ -26,7 +26,7 @@ module MediawikiSelenium
|
|
26
26
|
# @yield [values, browser_options] A block that binds the configuration to
|
27
27
|
# the browser options.
|
28
28
|
#
|
29
|
-
def
|
29
|
+
def configure(*names, &blk)
|
30
30
|
raise ArgumentError, 'no block given' unless block_given?
|
31
31
|
|
32
32
|
key = names.length == 1 ? names.first : names
|
@@ -34,6 +34,9 @@ module MediawikiSelenium
|
|
34
34
|
default_bindings[key] << blk
|
35
35
|
end
|
36
36
|
|
37
|
+
# @deprecated Use {.configure} instead.
|
38
|
+
alias bind configure
|
39
|
+
|
37
40
|
# All bindings for this factory class combined with those of super
|
38
41
|
# classes.
|
39
42
|
#
|
@@ -58,7 +61,7 @@ module MediawikiSelenium
|
|
58
61
|
|
59
62
|
attr_reader :browser_name
|
60
63
|
|
61
|
-
|
64
|
+
configure(:browser_timeout) { |value, options| options[:http_client].timeout = value.to_i }
|
62
65
|
|
63
66
|
# Initializes new factory instances.
|
64
67
|
#
|
@@ -83,17 +86,17 @@ module MediawikiSelenium
|
|
83
86
|
#
|
84
87
|
# @example Override the user agent according :browser_user_agent
|
85
88
|
# factory = BrowserFactory.new(:firefox)
|
86
|
-
# factory.
|
89
|
+
# factory.configure(:browser_user_agent) do |agent, options|
|
87
90
|
# options[:desired_capabilities][:firefox_profile]["general.useragent.override"] = agent
|
88
91
|
# end
|
89
92
|
#
|
90
93
|
# @example Annotate the session with our build information
|
91
|
-
# factory.
|
94
|
+
# factory.configure(:job_name, :build_number) do |job, build, options|
|
92
95
|
# options[:desired_capabilities][:name] = "#{job} (#{build})"
|
93
96
|
# end
|
94
97
|
#
|
95
98
|
# @example Bindings aren't invoked unless all given options are configured
|
96
|
-
# factory.
|
99
|
+
# factory.configure(:foo, :bar) do |foo, bar, options|
|
97
100
|
# # this never happens!
|
98
101
|
# options[:desired_capabilities][:name] = "#{foo} #{bar}"
|
99
102
|
# end
|
@@ -104,12 +107,15 @@ module MediawikiSelenium
|
|
104
107
|
# @yield [values, browser_options] A block that binds the configuration to
|
105
108
|
# the browser options.
|
106
109
|
#
|
107
|
-
def
|
110
|
+
def configure(*names, &blk)
|
108
111
|
key = names.length == 1 ? names.first : names
|
109
112
|
@bindings[key] ||= []
|
110
113
|
@bindings[key] << (blk || proc {})
|
111
114
|
end
|
112
115
|
|
116
|
+
# @deprecated Use {#configure} instead.
|
117
|
+
alias bind configure
|
118
|
+
|
113
119
|
# Effective bindings for this factory, those defined at the class level
|
114
120
|
# and those defined for this instance.
|
115
121
|
#
|
@@ -3,17 +3,22 @@ module MediawikiSelenium
|
|
3
3
|
# Constructs new Chrome browser instances. The following configuration is
|
4
4
|
# supported.
|
5
5
|
#
|
6
|
+
# - browser_http_proxy
|
6
7
|
# - browser_language
|
7
8
|
# - browser_user_agent
|
8
9
|
#
|
9
10
|
# @see Base
|
10
11
|
#
|
11
12
|
class Chrome < Base
|
12
|
-
|
13
|
+
configure(:browser_http_proxy) do |http_proxy, options|
|
14
|
+
options[:args] << "--proxy-server=#{http_proxy}"
|
15
|
+
end
|
16
|
+
|
17
|
+
configure(:browser_language) do |language, options|
|
13
18
|
options[:prefs]['intl.accept_languages'] = language
|
14
19
|
end
|
15
20
|
|
16
|
-
|
21
|
+
configure(:browser_user_agent) do |user_agent, options|
|
17
22
|
options[:args] << "--user-agent=#{user_agent}"
|
18
23
|
end
|
19
24
|
|
@@ -3,6 +3,7 @@ module MediawikiSelenium
|
|
3
3
|
# Constructs new Firefox browser instances. The following configuration is
|
4
4
|
# supported.
|
5
5
|
#
|
6
|
+
# - browser_http_proxy
|
6
7
|
# - browser_language
|
7
8
|
# - browser_timeout
|
8
9
|
# - browser_user_agent
|
@@ -10,17 +11,21 @@ module MediawikiSelenium
|
|
10
11
|
# @see Base
|
11
12
|
#
|
12
13
|
class Firefox < Base
|
13
|
-
|
14
|
+
configure(:browser_http_proxy) do |http_proxy, options|
|
15
|
+
options[:profile].proxy = Selenium::WebDriver::Proxy.new(http: http_proxy, ssl: http_proxy)
|
16
|
+
end
|
17
|
+
|
18
|
+
configure(:browser_timeout) do |timeout, options|
|
14
19
|
timeout = timeout.to_i
|
15
20
|
options[:profile]['dom.max_script_run_time'] = timeout
|
16
21
|
options[:profile]['dom.max_chrome_script_run_time'] = timeout
|
17
22
|
end
|
18
23
|
|
19
|
-
|
24
|
+
configure(:browser_language) do |language, options|
|
20
25
|
options[:profile]['intl.accept_languages'] = language
|
21
26
|
end
|
22
27
|
|
23
|
-
|
28
|
+
configure(:browser_user_agent) do |user_agent, options|
|
24
29
|
options[:profile]['general.useragent.override'] = user_agent
|
25
30
|
end
|
26
31
|
|
@@ -3,19 +3,32 @@ module MediawikiSelenium
|
|
3
3
|
# Constructs new Phantomjs browser instances. The following configuration is
|
4
4
|
# supported.
|
5
5
|
#
|
6
|
+
# - browser_http_proxy
|
6
7
|
# - browser_language
|
7
8
|
# - browser_user_agent
|
8
9
|
#
|
9
10
|
# @see Base
|
10
11
|
#
|
11
12
|
class Phantomjs < Base
|
12
|
-
|
13
|
+
configure(:browser_http_proxy) do |http_proxy, options|
|
14
|
+
options[:desired_capabilities]['phantomjs.cli.args'] << "--proxy=#{http_proxy}"
|
15
|
+
end
|
16
|
+
|
17
|
+
configure(:browser_language) do |language, options|
|
13
18
|
options[:desired_capabilities]['phantomjs.page.customHeaders.Accept-Language'] = language
|
14
19
|
end
|
15
20
|
|
16
|
-
|
21
|
+
configure(:browser_user_agent) do |user_agent, options|
|
17
22
|
options[:desired_capabilities]['phantomjs.page.settings.userAgent'] = user_agent
|
18
23
|
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def default_browser_options
|
28
|
+
super.tap do |options|
|
29
|
+
options[:desired_capabilities]['phantomjs.cli.args'] = []
|
30
|
+
end
|
31
|
+
end
|
19
32
|
end
|
20
33
|
end
|
21
34
|
end
|
@@ -167,7 +167,7 @@ module MediawikiSelenium
|
|
167
167
|
browser = browser.to_s.downcase.to_sym
|
168
168
|
|
169
169
|
@_factory_cache[[remote?, browser]] ||= BrowserFactory.new(browser).tap do |factory|
|
170
|
-
factory.
|
170
|
+
factory.configure(:_browser_session)
|
171
171
|
factory.extend(RemoteBrowserFactory) if remote?
|
172
172
|
end
|
173
173
|
end
|
@@ -17,23 +17,23 @@ module MediawikiSelenium
|
|
17
17
|
URL = 'http://ondemand.saucelabs.com/wd/hub'
|
18
18
|
|
19
19
|
class << self
|
20
|
-
def extend_object(
|
21
|
-
return if
|
20
|
+
def extend_object(base)
|
21
|
+
return if base.is_a?(self)
|
22
22
|
|
23
23
|
super
|
24
24
|
|
25
|
-
|
25
|
+
base.configure(:sauce_ondemand_username, :sauce_ondemand_access_key) do |user, key, options|
|
26
26
|
options[:url] = URI.parse(URL)
|
27
27
|
|
28
28
|
options[:url].user = user
|
29
29
|
options[:url].password = key
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
base.configure(:platform) do |platform, options|
|
33
33
|
options[:desired_capabilities].platform = platform
|
34
34
|
end
|
35
35
|
|
36
|
-
|
36
|
+
base.configure(:version) do |version, options|
|
37
37
|
options[:desired_capabilities].version = version
|
38
38
|
end
|
39
39
|
end
|
@@ -55,15 +55,15 @@ Before do |scenario|
|
|
55
55
|
@random_string = Random.new.rand.to_s
|
56
56
|
|
57
57
|
# Annotate sessions with the scenario name and Jenkins build info
|
58
|
-
browser_factory.
|
58
|
+
browser_factory.configure do |options|
|
59
59
|
options[:desired_capabilities][:name] = test_name(scenario)
|
60
60
|
end
|
61
61
|
|
62
|
-
browser_factory.
|
62
|
+
browser_factory.configure(:job_name) do |job, options|
|
63
63
|
options[:desired_capabilities][:name] += " #{job}"
|
64
64
|
end
|
65
65
|
|
66
|
-
browser_factory.
|
66
|
+
browser_factory.configure(:build_number) do |build, options|
|
67
67
|
options[:desired_capabilities][:name] += "##{build}"
|
68
68
|
end
|
69
69
|
end
|
data/mediawiki_selenium.gemspec
CHANGED
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.add_development_dependency 'bundler', '~> 1.6', '>= 1.6.3'
|
41
41
|
spec.add_development_dependency 'yard', '~> 0.8', '>= 0.8.7.4'
|
42
42
|
spec.add_development_dependency 'redcarpet', '~> 3.2', '>= 3.2.0'
|
43
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
43
|
+
spec.add_development_dependency 'rubocop', '~> 0.29.1'
|
44
44
|
spec.add_development_dependency 'rspec-core', '~> 2.14', '>= 2.14.4'
|
45
45
|
spec.add_development_dependency 'rspec-mocks', '~> 2.14', '>= 2.14.4'
|
46
46
|
end
|
@@ -6,8 +6,24 @@ module MediawikiSelenium::BrowserFactory
|
|
6
6
|
let(:factory) { factory_class.new(browser_name) }
|
7
7
|
let(:browser_name) { :lynx }
|
8
8
|
|
9
|
-
describe '.
|
10
|
-
subject { factory_class.
|
9
|
+
describe '.bindings' do
|
10
|
+
subject { factory_class.bindings }
|
11
|
+
|
12
|
+
before do
|
13
|
+
factory_class.configure(:foo) {}
|
14
|
+
end
|
15
|
+
|
16
|
+
it "includes the base class's default bindings" do
|
17
|
+
expect(subject).to include(Base.default_bindings)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'includes its own bindings' do
|
21
|
+
expect(subject).to include(factory_class.default_bindings)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.configure' do
|
26
|
+
subject { factory_class.configure(option_name, &block) }
|
11
27
|
|
12
28
|
let(:option_name) { :foo }
|
13
29
|
let(:block) { proc { } }
|
@@ -19,7 +35,7 @@ module MediawikiSelenium::BrowserFactory
|
|
19
35
|
end
|
20
36
|
|
21
37
|
context 'given no block' do
|
22
|
-
subject { factory_class.
|
38
|
+
subject { factory_class.configure(option_name) }
|
23
39
|
|
24
40
|
it 'raises an ArgumentError' do
|
25
41
|
expect { subject }.to raise_error(ArgumentError)
|
@@ -27,22 +43,6 @@ module MediawikiSelenium::BrowserFactory
|
|
27
43
|
end
|
28
44
|
end
|
29
45
|
|
30
|
-
describe '.bindings' do
|
31
|
-
subject { factory_class.bindings }
|
32
|
-
|
33
|
-
before do
|
34
|
-
factory_class.bind(:foo) {}
|
35
|
-
end
|
36
|
-
|
37
|
-
it "includes the base class's default bindings" do
|
38
|
-
expect(subject).to include(Base.default_bindings)
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'includes its own bindings' do
|
42
|
-
expect(subject).to include(factory_class.default_bindings)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
46
|
describe '.default_bindings' do
|
47
47
|
subject { factory_class.default_bindings }
|
48
48
|
|
@@ -54,9 +54,9 @@ module MediawikiSelenium::BrowserFactory
|
|
54
54
|
|
55
55
|
context 'when bindings are defined' do
|
56
56
|
before do
|
57
|
-
factory_class.
|
58
|
-
factory_class.
|
59
|
-
factory_class.
|
57
|
+
factory_class.configure(:foo) {}
|
58
|
+
factory_class.configure(:bar) {}
|
59
|
+
factory_class.configure(:bar) {}
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'includes all defined bindings' do
|
@@ -69,33 +69,12 @@ module MediawikiSelenium::BrowserFactory
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
describe '#bind' do
|
73
|
-
subject { factory.bind(option_name, &block) }
|
74
|
-
before { subject }
|
75
|
-
|
76
|
-
let(:option_name) { :foo }
|
77
|
-
let(:block) { proc { } }
|
78
|
-
|
79
|
-
it 'adds a new binding for the given option' do
|
80
|
-
expect(factory.bindings).to include(option_name)
|
81
|
-
expect(factory.bindings[option_name]).to include(block)
|
82
|
-
end
|
83
|
-
|
84
|
-
context 'given no block' do
|
85
|
-
subject { factory.bind(option_name) }
|
86
|
-
|
87
|
-
it 'will default to an empty block' do
|
88
|
-
expect(factory.bindings[option_name]).not_to include(nil)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
72
|
describe '#bindings' do
|
94
73
|
subject { factory.bindings }
|
95
74
|
|
96
75
|
before do
|
97
|
-
factory_class.
|
98
|
-
factory.
|
76
|
+
factory_class.configure(:foo) {}
|
77
|
+
factory.configure(:bar)
|
99
78
|
end
|
100
79
|
|
101
80
|
it 'includes the class-level bindings' do
|
@@ -176,7 +155,7 @@ module MediawikiSelenium::BrowserFactory
|
|
176
155
|
let(:config) { { foo: 'x' } }
|
177
156
|
|
178
157
|
it 'invokes the binding with the configured value' do
|
179
|
-
expect { |block| factory.
|
158
|
+
expect { |block| factory.configure(:foo, &block) && subject }.
|
180
159
|
to yield_with_args('x', options)
|
181
160
|
end
|
182
161
|
end
|
@@ -185,7 +164,7 @@ module MediawikiSelenium::BrowserFactory
|
|
185
164
|
let(:config) { {} }
|
186
165
|
|
187
166
|
it 'never invokes the binding' do
|
188
|
-
expect { |block| factory.
|
167
|
+
expect { |block| factory.configure(:foo, &block) && subject }.
|
189
168
|
to_not yield_control
|
190
169
|
end
|
191
170
|
end
|
@@ -196,7 +175,7 @@ module MediawikiSelenium::BrowserFactory
|
|
196
175
|
let(:config) { { foo: 'x', bar: 'y' } }
|
197
176
|
|
198
177
|
it 'invokes the binding with the configured values' do
|
199
|
-
expect { |block| factory.
|
178
|
+
expect { |block| factory.configure(:foo, :bar, &block) && subject }.
|
200
179
|
to yield_with_args('x', 'y', options)
|
201
180
|
end
|
202
181
|
end
|
@@ -205,11 +184,32 @@ module MediawikiSelenium::BrowserFactory
|
|
205
184
|
let(:config) { { foo: 'x' } }
|
206
185
|
|
207
186
|
it 'never invokes the binding' do
|
208
|
-
expect { |block| factory.
|
187
|
+
expect { |block| factory.configure(:foo, :bar, &block) && subject }.
|
209
188
|
to_not yield_control
|
210
189
|
end
|
211
190
|
end
|
212
191
|
end
|
213
192
|
end
|
193
|
+
|
194
|
+
describe '#configure' do
|
195
|
+
subject { factory.configure(option_name, &block) }
|
196
|
+
before { subject }
|
197
|
+
|
198
|
+
let(:option_name) { :foo }
|
199
|
+
let(:block) { proc { } }
|
200
|
+
|
201
|
+
it 'adds a new binding for the given option' do
|
202
|
+
expect(factory.bindings).to include(option_name)
|
203
|
+
expect(factory.bindings[option_name]).to include(block)
|
204
|
+
end
|
205
|
+
|
206
|
+
context 'given no block' do
|
207
|
+
subject { factory.configure(option_name) }
|
208
|
+
|
209
|
+
it 'will default to an empty block' do
|
210
|
+
expect(factory.bindings[option_name]).not_to include(nil)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
214
|
end
|
215
215
|
end
|
@@ -16,6 +16,14 @@ module MediawikiSelenium::BrowserFactory
|
|
16
16
|
describe '#browser_options' do
|
17
17
|
subject { factory.browser_options(config) }
|
18
18
|
|
19
|
+
context 'given a browser proxy' do
|
20
|
+
let(:config) { { browser_http_proxy: 'proxy.example:8080' } }
|
21
|
+
|
22
|
+
it 'includes it as --proxy-server in the chrome arguments' do
|
23
|
+
expect(subject[:args]).to include('--proxy-server=proxy.example:8080')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
19
27
|
context 'given a custom browser_language' do
|
20
28
|
let(:config) { { browser_language: 'eo' } }
|
21
29
|
|
@@ -22,6 +22,21 @@ module MediawikiSelenium::BrowserFactory
|
|
22
22
|
expect(Selenium::WebDriver::Firefox::Profile).to receive(:new).and_return(profile)
|
23
23
|
end
|
24
24
|
|
25
|
+
context 'given a browser proxy' do
|
26
|
+
let(:config) { { browser_http_proxy: 'proxy.example:8080' } }
|
27
|
+
|
28
|
+
it 'sets up the profile to use a proxy for both http and https' do
|
29
|
+
selenium_proxy = double('Selenium::WebDriver::Proxy')
|
30
|
+
|
31
|
+
expect(Selenium::WebDriver::Proxy).to receive(:new).
|
32
|
+
with(http: 'proxy.example:8080', ssl: 'proxy.example:8080').
|
33
|
+
and_return(selenium_proxy)
|
34
|
+
expect(profile).to receive(:proxy=).with(selenium_proxy)
|
35
|
+
|
36
|
+
subject
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
25
40
|
context 'given a custom browser_timeout' do
|
26
41
|
let(:config) { { browser_timeout: '30' } }
|
27
42
|
|
@@ -16,6 +16,15 @@ module MediawikiSelenium::BrowserFactory
|
|
16
16
|
describe '#browser_options' do
|
17
17
|
subject { factory.browser_options(config) }
|
18
18
|
|
19
|
+
context 'given a browser proxy' do
|
20
|
+
let(:config) { { browser_http_proxy: 'proxy.example:8080' } }
|
21
|
+
|
22
|
+
it 'includes it as --proxy in the cli arguments' do
|
23
|
+
capabilities = subject[:desired_capabilities]
|
24
|
+
expect(capabilities['phantomjs.cli.args']).to include('--proxy=proxy.example:8080')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
19
28
|
context 'given a custom browser_language' do
|
20
29
|
let(:config) { { browser_language: 'eo' } }
|
21
30
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki_selenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris McMahon
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2015-
|
16
|
+
date: 2015-04-06 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: cucumber
|
@@ -255,20 +255,14 @@ dependencies:
|
|
255
255
|
requirements:
|
256
256
|
- - "~>"
|
257
257
|
- !ruby/object:Gem::Version
|
258
|
-
version:
|
259
|
-
- - ">="
|
260
|
-
- !ruby/object:Gem::Version
|
261
|
-
version: 0.26.1
|
258
|
+
version: 0.29.1
|
262
259
|
type: :development
|
263
260
|
prerelease: false
|
264
261
|
version_requirements: !ruby/object:Gem::Requirement
|
265
262
|
requirements:
|
266
263
|
- - "~>"
|
267
264
|
- !ruby/object:Gem::Version
|
268
|
-
version:
|
269
|
-
- - ">="
|
270
|
-
- !ruby/object:Gem::Version
|
271
|
-
version: 0.26.1
|
265
|
+
version: 0.29.1
|
272
266
|
- !ruby/object:Gem::Dependency
|
273
267
|
name: rspec-core
|
274
268
|
requirement: !ruby/object:Gem::Requirement
|