lapis_lazuli 3.0.1 → 3.0.2

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.
@@ -6,6 +6,9 @@
6
6
  # All rights reserved.
7
7
  #
8
8
 
9
+ require 'cucumber/core/test/case'
10
+ require 'cucumber/core/test/step'
11
+
9
12
  module LapisLazuli
10
13
  module BrowserModule
11
14
 
@@ -82,10 +85,6 @@ module LapisLazuli
82
85
  end
83
86
  world.log.debug "Screenshot saved: #{fileloc}"
84
87
 
85
- # Try to store the screenshot name
86
- if world.respond_to? :annotate
87
- world.annotate :screenshot => fileloc
88
- end
89
88
  rescue RuntimeError => e
90
89
  world.log.debug "Failed to save screenshot to '#{fileloc}'. Error message #{e.message}"
91
90
  end
@@ -6,5 +6,5 @@
6
6
  # All rights reserved.
7
7
  #
8
8
  module LapisLazuli
9
- VERSION = "3.0.1"
9
+ VERSION = "3.0.2"
10
10
  end
@@ -13,41 +13,42 @@ require "lapis_lazuli/runtime"
13
13
  require "lapis_lazuli/world/config"
14
14
 
15
15
  module LapisLazuli
16
- module WorldModule
17
- ##
18
- # Module for easy logging
19
- #
20
- # Manages the following:
21
- # @log - TeeLogger instances
22
- module Logging
23
- include LapisLazuli::WorldModule::Config
24
-
16
+ module WorldModule
25
17
  ##
26
- # Log "singleton"
27
- def log
28
- return Runtime.instance.set_if(self, :logger) do
29
- # Make log directory
30
- dir = env_or_config('log_dir')
31
- begin
32
- Dir.mkdir dir
33
- rescue SystemCallError => ex
34
- # Swallow this error; it occurs (amongst other situations) when the
35
- # directory exists. Checking for an existing directory beforehand is
36
- # not concurrency safe.
37
- end
18
+ # Module for easy logging
19
+ #
20
+ # Manages the following:
21
+ # @log - TeeLogger instances
22
+ module Logging
23
+ include LapisLazuli::WorldModule::Config
38
24
 
39
- # Start the logger with the config filename
40
- log_file = "#{dir}#{File::SEPARATOR}#{File.basename(Config.config_files[0], ".*")}.log"
41
- # Or a filename from the environment
42
- if has_env_or_config?("log_file")
43
- log_file = env_or_config("log_file")
44
- end
45
- l = TeeLogger::TeeLogger.new(log_file)
46
- l.level = env_or_config("log_level")
25
+ ##
26
+ # Log "singleton"
27
+ def log(msg = nil)
28
+ super(msg) if msg
29
+ return Runtime.instance.set_if(self, :logger) do
30
+ # Make log directory
31
+ dir = env_or_config('log_dir')
32
+ begin
33
+ Dir.mkdir dir
34
+ rescue SystemCallError => ex
35
+ # Swallow this error; it occurs (amongst other situations) when the
36
+ # directory exists. Checking for an existing directory beforehand is
37
+ # not concurrency safe.
38
+ end
47
39
 
48
- l
40
+ # Start the logger with the config filename
41
+ log_file = "#{dir}#{File::SEPARATOR}#{File.basename(Config.config_files[0], ".*")}.log"
42
+ # Or a filename from the environment
43
+ if has_env_or_config?("log_file")
44
+ log_file = env_or_config("log_file")
45
+ end
46
+ l = TeeLogger::TeeLogger.new(log_file)
47
+ l.level = env_or_config("log_level")
48
+
49
+ l
50
+ end
49
51
  end
50
- end
51
- end # module Logging
52
- end # module WorldModule
52
+ end # module Logging
53
+ end # module WorldModule
53
54
  end # module LapisLazuli
data/test/Gemfile CHANGED
@@ -5,7 +5,7 @@ gem "lapis_lazuli", path: './../'
5
5
 
6
6
 
7
7
  # Project specific gems
8
- gem 'watir-scroll'
8
+ gem 'cucumber', '~> 6'
9
9
  gem 'xml-simple'
10
10
  gem 'mechanize'
11
11
  gem 'simplecov'
@@ -7,14 +7,14 @@ And test if I can parse bindings when starting the browsers
7
7
  @bindings_01
8
8
  Scenario: bindings_01 - Custom user-agent firefox
9
9
  Given I use browser bindings "1"
10
- And I navigate to URL "http://whatsmyua.com/"
10
+ And I navigate to URL "https://www.whatsmyua.info/"
11
11
  Then within 2 seconds I should see "CUSTOM-USER-AGENT"
12
12
  And I close the browser
13
13
 
14
14
  @bindings_02
15
15
  Scenario: bindings_02 - Custom user-agent chrome
16
16
  Given I use browser bindings "2"
17
- And I navigate to URL "http://whatsmyua.com/"
17
+ And I navigate to URL "https://www.whatsmyua.info/"
18
18
  Then within 2 seconds I should see "CUSTOM-CHROME-USER-AGENT"
19
19
  And I close the browser
20
20
 
@@ -22,22 +22,22 @@ And test if I can parse bindings when starting the browsers
22
22
  @bindings_03 @maximize_issue
23
23
  Scenario: bindings_03 - Custom user-agent chrome
24
24
  Given I use browser bindings "3"
25
- And I navigate to URL "http://whatsmyua.com/"
25
+ And I navigate to URL "https://www.whatsmyua.info/"
26
26
  Then the browser window size should be "full screen"
27
27
  And I close the browser
28
28
 
29
29
  @bindings_04
30
30
  Scenario: bindings_04 - Using a pre-defined device (iphone5)
31
31
  Given I restart the browser to device setting "iphone5"
32
- When I navigate to URL "http://whatsmyua.com"
33
- Then within 2 seconds I should see "CPU iPhone OS 5_0 like Mac OS X"
32
+ When I navigate to URL "https://www.whatsmyua.info/"
33
+ Then within 2 seconds I should see "AppleWebKit"
34
34
  And the browser window size should be "640x1136"
35
35
  And I close the browser
36
36
 
37
37
  @bindings_05
38
38
  Scenario: bindings_05 - Using a pre-defined device (desktop1080)
39
39
  Given I restart the browser to device setting "desktop1080"
40
- When I navigate to URL "http://whatsmyua.com"
40
+ When I navigate to URL "https://www.whatsmyua.info/"
41
41
  Then within 2 seconds I should see "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" disappear
42
42
  And the browser window size should be "1920x1080"
43
43
  And I close the browser
@@ -1,10 +1,10 @@
1
- @browser @p @ignore_on_remote
2
- Feature: Browsers
3
- When I want to test the Lapis Lazuli library
4
- And test if I can start a browser with options
5
-
6
- @browser_01
7
- Scenario: browser_01 - Firefox with proxy
8
- When I create a firefox browser named "test" with proxy to "localhost:8008"
9
- Then the firefox browser named "test" has a profile
10
- Then I close the browser named "test"
1
+ #@browser @p @ignore_on_remote
2
+ #Feature: Browsers
3
+ #When I want to test the Lapis Lazuli library
4
+ #And test if I can start a browser with options
5
+ #
6
+ #@browser_01
7
+ #Scenario: browser_01 - Firefox with proxy
8
+ # When I create a firefox browser named "test" with proxy to "localhost:8008"
9
+ # Then the firefox browser named "test" has a profile
10
+ # Then I close the browser named "test"
@@ -1,8 +1,8 @@
1
1
  @button @p
2
2
  Feature: Buttons
3
- When I want to test the Lapis Lazuli library
4
- I want to run a webserver with some test files
5
- And execute the each library function that handles buttons.
3
+ When I want to test the Lapis Lazuli library
4
+ I want to run a webserver with some test files
5
+ And execute the each library function that handles buttons.
6
6
 
7
7
  @button_01
8
8
  Scenario: button_01 - Find First
@@ -36,3 +36,4 @@ Feature: Buttons
36
36
  Given I navigate to the button test page
37
37
  And I click the last button
38
38
  Then within 1 seconds I should see "last clicked"
39
+
@@ -45,7 +45,6 @@ Given(/I click (the|a) (first|last|random|[0-9]+[a-z]+) (.*)$/) do |arg1, index,
45
45
  type_element.click
46
46
  end
47
47
 
48
-
49
48
  Given(/^I create a firefox browser named "(.*?)"(?: with proxy to "(.*?)")?$/) do |name, proxy_url|
50
49
  b = nil
51
50
  if proxy_url
@@ -81,14 +80,14 @@ end
81
80
  When(/^I wait for (class )?"(.*?)" and name it "(.*?)"$/) do |type, id, name|
82
81
  type = 'id' if type.nil? || type.empty?
83
82
  type.strip!
84
- element = browser.wait(:element => {type.to_sym => id})
83
+ element = browser.wait(:element => { type.to_sym => id })
85
84
  scenario.storage.set(name, element)
86
85
  end
87
86
 
88
87
  When(/^no error should be thrown when waiting for "(.*?)"$/) do |id|
89
88
  begin
90
89
  elm = browser.wait(
91
- :element => {:id => id},
90
+ :element => { :id => id },
92
91
  :timeout => 3,
93
92
  :throw => false
94
93
  )
@@ -162,7 +161,6 @@ Then(/^I should be able to click the first button by click type (.*?)$/) do |typ
162
161
  )
163
162
  end
164
163
 
165
-
166
164
  Then(/^I should be able to click the first button by force click$/) do
167
165
  elem = browser.button(:id => 'first')
168
166
  browser.force_click(elem)
@@ -174,7 +172,7 @@ Then(/^I should be able to click the first button by force click$/) do
174
172
  end
175
173
 
176
174
  Given(/^I set environment variable "(.*?)" to "(.*?)"$/) do |var, val|
177
- ENV[var]=val
175
+ ENV[var] = val
178
176
  end
179
177
 
180
178
  Given(/^I annotate a step with (.*?)$/) do |data|
@@ -193,25 +191,16 @@ end
193
191
  Given(/^I use browser bindings "(.*?)"$/) do |bindings|
194
192
  require 'selenium-webdriver'
195
193
  case bindings
196
- when '1'
197
- profile = Selenium::WebDriver::Firefox::Profile.new
198
- profile['general.useragent.override'] = "CUSTOM-USER-AGENT"
199
- browser.restart :firefox, profile: profile
200
- when '2'
201
- switches = %w[--user-agent=CUSTOM-CHROME-USER-AGENT]
202
- browser.restart :chrome, :switches => switches
203
- when '3'
204
- caps = Selenium::WebDriver::Remote::Capabilities.chrome(
205
- "chromeOptions" => {
206
- "args" => [
207
- '--start-maximized'
208
- ]
209
- }
210
- )
211
- browser.restart :chrome, desired_capabilities: caps
212
- browser.window.maximize
213
- else
214
- error "Requested binding setup does not exist. Requested #{bindings}"
194
+ when '1'
195
+ profile = Selenium::WebDriver::Firefox::Profile.new
196
+ profile['general.useragent.override'] = "CUSTOM-USER-AGENT"
197
+ browser.restart :firefox, options: { profile: profile }
198
+ when '2'
199
+ browser.restart :chrome, options: { args: ['--user-agent=CUSTOM-CHROME-USER-AGENT'] }
200
+ when '3'
201
+ browser.restart :chrome, options: { args: ['--start-maximized'] }
202
+ else
203
+ error "Requested binding setup does not exist. Requested #{bindings}"
215
204
  end
216
205
  end
217
206
 
@@ -21,7 +21,7 @@ Given(/^the user expects an error in a multi_find lookup$/) do
21
21
  )
22
22
  err = "Expected an error looking for elements with no results."
23
23
  rescue RuntimeError => e
24
- puts "Caught expected error: #{e.message}"
24
+ log "Caught expected error: #{e.message}"
25
25
  end
26
26
  error err unless err.empty?
27
27
  end
@@ -86,7 +86,7 @@ Given(/^the user expects an error in a multi_find_all lookup$/) do
86
86
  )
87
87
  err = "Expected an error looking for elements with no results."
88
88
  rescue RuntimeError => e
89
- puts "Caught expected error: #{e.message}"
89
+ log "Caught expected error: #{e.message}"
90
90
  end
91
91
  error err unless err.empty?
92
92
  end
@@ -116,7 +116,7 @@ Given(/^the user expects an error in a multi_find_all lookup matching all elemen
116
116
  )
117
117
  err = "Expected an error matching all elements with results."
118
118
  rescue RuntimeError => e
119
- puts "Caught expected error: #{e.message}"
119
+ log "Caught expected error: #{e.message}"
120
120
  end
121
121
  error err unless err.empty?
122
122
  end
@@ -234,12 +234,12 @@ end
234
234
  Then(/^the firefox browser named "(.*?)" has a profile$/) do |name|
235
235
  if scenario.storage.has? name
236
236
  b = scenario.storage.get name
237
- if b.browser_name == "remote"
237
+ if b.name == "remote"
238
238
  if b.driver.capabilities.firefox_profile.nil?
239
239
  raise "Remote Firefox Profile is not set"
240
240
  end
241
241
  else
242
- if !b.optional_data.has_key? "profile" and !b.optional_data.has_key? :profile
242
+ if !b.options.has_key? "profile" and !b.optional_data.has_key? :profile
243
243
  raise "No profile found in the optional data"
244
244
  end
245
245
  end
data/test/server/start.rb CHANGED
@@ -12,6 +12,6 @@ thread = Thread.new { server.start }
12
12
 
13
13
  # If this file was executed manually, let's wait for input
14
14
  if __FILE__ == $0
15
- puts "Press enter to shut down the server."
15
+ log "Press enter to shut down the server."
16
16
  gets
17
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lapis_lazuli
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Onno Steenbergen
@@ -17,154 +17,154 @@ dependencies:
17
17
  name: bundler
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - "~>"
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2.0'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '2.0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "~>"
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: '12.3'
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '12.3'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: simplecov
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0.17'
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - "~>"
55
+ - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0.17'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: faraday_middleware
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "~>"
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0.13'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - "~>"
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0.13'
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: faraday_json
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - "~>"
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0.1'
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - "~>"
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0.1'
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: multi_xml
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - "~>"
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: '0.6'
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - "~>"
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0.6'
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: teelogger
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
106
  version: '0.5'
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - "~>"
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
113
  version: '0.5'
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: minitest
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - "~>"
118
+ - - ">="
119
119
  - !ruby/object:Gem::Version
120
120
  version: '5.11'
121
121
  type: :runtime
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - "~>"
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: '5.11'
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: thor
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - "~>"
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0.20'
135
135
  type: :runtime
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - "~>"
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0.20'
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: facets
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - "~>"
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
148
  version: '3.1'
149
149
  type: :runtime
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - "~>"
153
+ - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: '3.1'
156
156
  - !ruby/object:Gem::Dependency
157
157
  name: deep_merge
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - "~>"
160
+ - - ">="
161
161
  - !ruby/object:Gem::Version
162
162
  version: '1.2'
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - "~>"
167
+ - - ">="
168
168
  - !ruby/object:Gem::Version
169
169
  version: '1.2'
170
170
  - !ruby/object:Gem::Dependency
@@ -174,9 +174,6 @@ dependencies:
174
174
  - - ">="
175
175
  - !ruby/object:Gem::Version
176
176
  version: '2.0'
177
- - - "<"
178
- - !ruby/object:Gem::Version
179
- version: '4'
180
177
  type: :runtime
181
178
  prerelease: false
182
179
  version_requirements: !ruby/object:Gem::Requirement
@@ -184,35 +181,32 @@ dependencies:
184
181
  - - ">="
185
182
  - !ruby/object:Gem::Version
186
183
  version: '2.0'
187
- - - "<"
188
- - !ruby/object:Gem::Version
189
- version: '4'
190
184
  - !ruby/object:Gem::Dependency
191
185
  name: watir
192
186
  requirement: !ruby/object:Gem::Requirement
193
187
  requirements:
194
- - - "~>"
188
+ - - ">="
195
189
  - !ruby/object:Gem::Version
196
190
  version: '6'
197
191
  type: :runtime
198
192
  prerelease: false
199
193
  version_requirements: !ruby/object:Gem::Requirement
200
194
  requirements:
201
- - - "~>"
195
+ - - ">="
202
196
  - !ruby/object:Gem::Version
203
197
  version: '6'
204
198
  - !ruby/object:Gem::Dependency
205
199
  name: ffi
206
200
  requirement: !ruby/object:Gem::Requirement
207
201
  requirements:
208
- - - "~>"
202
+ - - ">="
209
203
  - !ruby/object:Gem::Version
210
204
  version: '1.11'
211
205
  type: :runtime
212
206
  prerelease: false
213
207
  version_requirements: !ruby/object:Gem::Requirement
214
208
  requirements:
215
- - - "~>"
209
+ - - ">="
216
210
  - !ruby/object:Gem::Version
217
211
  version: '1.11'
218
212
  - !ruby/object:Gem::Dependency
@@ -220,9 +214,6 @@ dependencies:
220
214
  requirement: !ruby/object:Gem::Requirement
221
215
  requirements:
222
216
  - - ">="
223
- - !ruby/object:Gem::Version
224
- version: '2.0'
225
- - - "<"
226
217
  - !ruby/object:Gem::Version
227
218
  version: '4.0'
228
219
  type: :runtime
@@ -230,9 +221,6 @@ dependencies:
230
221
  version_requirements: !ruby/object:Gem::Requirement
231
222
  requirements:
232
223
  - - ">="
233
- - !ruby/object:Gem::Version
234
- version: '2.0'
235
- - - "<"
236
224
  - !ruby/object:Gem::Version
237
225
  version: '4.0'
238
226
  description: "\n LapisLazuli provides cucumber helper functions and scaffolding
@@ -248,6 +236,7 @@ extensions: []
248
236
  extra_rdoc_files: []
249
237
  files:
250
238
  - ".gitignore"
239
+ - CHANGELOG.md
251
240
  - Gemfile
252
241
  - LICENSE
253
242
  - README.md
@@ -263,7 +252,6 @@ files:
263
252
  - lib/lapis_lazuli/browser/error.rb
264
253
  - lib/lapis_lazuli/browser/find.rb
265
254
  - lib/lapis_lazuli/browser/interaction.rb
266
- - lib/lapis_lazuli/browser/remote.rb
267
255
  - lib/lapis_lazuli/browser/screenshots.rb
268
256
  - lib/lapis_lazuli/browser/wait.rb
269
257
  - lib/lapis_lazuli/cli.rb
@@ -297,7 +285,6 @@ files:
297
285
  - lib/lapis_lazuli/storage.rb
298
286
  - lib/lapis_lazuli/version.rb
299
287
  - lib/lapis_lazuli/versions.rb
300
- - lib/lapis_lazuli/world/annotate.rb
301
288
  - lib/lapis_lazuli/world/api.rb
302
289
  - lib/lapis_lazuli/world/browser.rb
303
290
  - lib/lapis_lazuli/world/config.rb
@@ -312,7 +299,6 @@ files:
312
299
  - test/config/config.yml
313
300
  - test/config/cucumber.yml
314
301
  - test/config/devices.yml
315
- - test/features/annotation.feature
316
302
  - test/features/bindings.feature
317
303
  - test/features/browser.feature
318
304
  - test/features/button.feature
@@ -352,7 +338,7 @@ require_paths:
352
338
  - lib
353
339
  required_ruby_version: !ruby/object:Gem::Requirement
354
340
  requirements:
355
- - - "~>"
341
+ - - ">="
356
342
  - !ruby/object:Gem::Version
357
343
  version: '2'
358
344
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -373,7 +359,6 @@ test_files:
373
359
  - test/config/config.yml
374
360
  - test/config/cucumber.yml
375
361
  - test/config/devices.yml
376
- - test/features/annotation.feature
377
362
  - test/features/bindings.feature
378
363
  - test/features/browser.feature
379
364
  - test/features/button.feature