webdrivers 4.4.1 → 4.6.1

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
  SHA256:
3
- metadata.gz: 478610897cf82cc6520b2501b70eddfc75a6cb000d95ec8a451acff865956913
4
- data.tar.gz: ff8db96ce6a0c80df2e12354ace821f755272b385b76b0fa8f60819312132e53
3
+ metadata.gz: 543fb2ae13f36325fe5fc7cfd8a4c890e27d3eabdb239abbe2d816e656db9bda
4
+ data.tar.gz: f2cf830140dde3e9127e556cf46357fa6538b40425636dce02aa020000df8282
5
5
  SHA512:
6
- metadata.gz: f56a8c5f61d30f1beccf5a2094f32069fe6b7c5ace48b3f626f53ea67da172113e6324c3616337637843cdab103c9c7b3a87d15982943444cf596c79194dc977
7
- data.tar.gz: d461bec3bfaa089881e002f63c10e939cbcdfbc6edace671eb3a4bcfecc82f34298dc60d76a22363d48d3cf6f547e124f140fcbfc158e9e14eae6b3743f3e443
6
+ metadata.gz: 5dfa4804f4ec0342dd24df0ecbdddf8d2456e12037e73e72efc88b11b0e4c355159ab5bb818309195ab09c90fcf4a09ede79344b955763ca74c381b6d0cb378c
7
+ data.tar.gz: d5e802872d42a2a8929421872563457263f610cb2f536acded38d28b03ff8986f13094bd0efbdd32223d541cd1245425f57937de7ea262849985c80409f7c89f
data/CHANGELOG.md CHANGED
@@ -1,8 +1,37 @@
1
+ # 4.6.1 (2021-08-19)
2
+ * Fix bug in IEdriver caused by bad formatting in recent release
3
+
4
+ # 4.6.0 (2021-02-26)
5
+ * Update `Edgedriver` naming to support Selenium 4 beta (([#206](https://github.com/titusfortner/webdrivers/pull/206))
6
+
7
+ # 4.5.0 (2021-01-19)
8
+ * Improve format of README usage section. Thanks, [okuramasafumi](https://github.com/okuramasafumi)!
9
+ * `chromedriver` - Add support for Apple M1 specific builds ([#193](https://github.com/titusfortner/webdrivers/pull/193)). Thanks, [MichaelHoste](https://github.com/MichaelHoste)!
10
+ * `msedgedriver` - Add support for Apple M1 specific builds.
11
+ * `msedgedriver` - Added automatic selection of 32-bit vs 64-bit builds on Windows and WSLv1.
12
+ * When using this gem in WSLv2, Chrome installed on the Linux filesystem will be automatically used ([#196](https://github.com/titusfortner/webdrivers/pull/196)).
13
+ WSLv1 continues to automatically use Chrome from the Windows filesystem though. Thanks, [fabioxgn](https://github.com/fabioxgn)!
14
+ * We'll aim to make the behavior consistent in a future release.
15
+
16
+ ### 4.4.2 (2020-12-29)
17
+ * Use new powershell if available to enhance WSL support ([#176](https://github.com/titusfortner/webdrivers/issues/176),
18
+ [#186](https://github.com/titusfortner/webdrivers/pull/186)). Thanks, [G-Rath](https://github.com/G-Rath) and
19
+ [131](https://github.com/131)!
20
+ * Update rubocop version (development dependency only) ([#178](https://github.com/titusfortner/webdrivers/pull/178)).
21
+ Thanks, [utkarsh2102](https://github.com/utkarsh2102)!
22
+ * Replace `git ls-files` with `dir` in the gemspec for better Debian support ([#179](https://github.com/titusfortner/webdrivers/pull/179),
23
+ [#184](https://github.com/titusfortner/webdrivers/issues/184)).
24
+ Thanks again, [utkarsh2102](https://github.com/utkarsh2102)!
25
+ * Update README with `require: false` when adding gem to Gemfile ([#183](https://github.com/titusfortner/webdrivers/pull/183)).
26
+ * Make WSL detection more generic ([#187](https://github.com/titusfortner/webdrivers/pull/187)).
27
+ [rbclark](https://github.com/rbclark)!
28
+
1
29
  ### 4.4.1 (2020-06-01)
2
30
  * Do not include binstubs used for troubleshooting only. Fixes [#174](https://github.com/titusfortner/webdrivers/issues/174).
3
31
 
4
32
  ### 4.4.0 (2020-05-31)
5
- * Implement support for `chromedriver` in Windows Subsystem for Linux (WSL) v1 ([#172](https://github.com/titusfortner/webdrivers/issues/172)). Thanks G-Rath!
33
+ * Implement support for `chromedriver` in Windows Subsystem for Linux (WSL) v1 ([#172](https://github.com/titusfortner/webdrivers/issues/172)).
34
+ Thanks, [G-Rath](https://github.com/G-Rath)!
6
35
  * Chrome/Edgedriver - Fix [#171](https://github.com/titusfortner/webdrivers/issues/171) by making sure the cached
7
36
  driver build version matches the browser build version before using it.
8
37
  * Chrome/Edgedriver - Driver version check now matches the driver and browser `major.minor.build` versions instead of just
data/LICENSE.txt CHANGED
@@ -1,23 +1,23 @@
1
- (The MIT License)
2
-
3
- Copyright (c) 2017-2019: Titus Fortner
4
- Copyright (c) 2019: Lakshya Kapoor, Thomas Walpole
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- 'Software'), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be
15
- included in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2017-2019: Titus Fortner
4
+ Copyright (c) 2019: Lakshya Kapoor, Thomas Walpole
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ 'Software'), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # Webdrivers
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/webdrivers.svg)](https://badge.fury.io/rb/webdrivers)
4
- [![Build status](https://travis-ci.org/titusfortner/webdrivers.svg?branch=master)](https://travis-ci.org/titusfortner/webdrivers)
5
- [![AppVeyor status](https://ci.appveyor.com/api/projects/status/ejh90xqbvkphq4cy/branch/master?svg=true)](https://ci.appveyor.com/project/titusfortner/webdrivers/branch/master)
4
+ ![Tests](https://github.com/titusfortner/webdrivers/workflows/Tests/badge.svg)
6
5
 
7
6
  Run Selenium tests more easily with automatic installation and updates for all supported webdrivers.
8
7
 
@@ -15,13 +14,16 @@ Run Selenium tests more easily with automatic installation and updates for all s
15
14
  * [IEDriverServer](https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver)
16
15
  * [msedgedriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)
17
16
 
18
- Works on macOS, Linux, Windows, and Windows Subsystem for Linux (WSL) v1.
17
+ Works on macOS, Linux, Windows, and Windows Subsystem for Linux (WSL) v1 and v2. And do see the browser and OS specific
18
+ notes at the bottom.
19
19
 
20
20
  ## Usage
21
21
 
22
22
  In your Gemfile:
23
23
 
24
- `gem 'webdrivers', '~> 4.0'`
24
+ ```ruby
25
+ gem 'webdrivers', '~> 4.0', require: false
26
+ ```
25
27
 
26
28
  In your project:
27
29
 
@@ -194,7 +196,7 @@ The logging level can be configured for debugging purpose:
194
196
  Webdrivers.logger.level = :DEBUG
195
197
  ```
196
198
 
197
- ### Browser Specific Notes
199
+ ### Browser & OS Specific Notes
198
200
 
199
201
  #### Chrome/Chromium
200
202
 
@@ -219,7 +221,7 @@ variable.
219
221
  This is also required if Google Chrome is not installed in its
220
222
  [default location](https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver).
221
223
 
222
- ##### Heroku Users
224
+ #### Chrome on Heroku
223
225
 
224
226
  Follow the specific instructions [here](https://github.com/titusfortner/webdrivers/wiki/Heroku-buildpack-google-chrome) if you're using `heroku-buildpack-google-chrome`.
225
227
 
@@ -231,6 +233,27 @@ section apply to this browser as well.
231
233
 
232
234
  Please note that `msedgedriver` requires `selenium-webdriver` v4.
233
235
 
236
+ #### WSLv1 support
237
+
238
+ While WSLv1 is not designed to run headful applications like Chrome, it can run exes; as such when found to be running
239
+ in WSL, `webdrivers` will use Chrome on the Windows filesystem.
240
+
241
+ It's recommended that you install the new PowerShell (PS7) to avoid [a known issue](https://github.com/microsoft/terminal/issues/367)
242
+ with the console font being changed when calling the old PowerShell (PS5).
243
+
244
+ #### WSLv2 support
245
+
246
+ Webdrivers will detect WSLv2 as running on Linux and use Chrome on the Linux filesystem.
247
+
248
+ WSLv2 doesn't support connecting to host ports out of the box, so it isn't possible to connect to Chromedriver on
249
+ Windows without extra configurations, see: https://github.com/microsoft/WSL/issues/4619. The simplest way to use
250
+ Chromedriver with WSLv2 is to run Chrome headless on Linux.
251
+
252
+ #### Chrome and Edge on Apple M1 (`arm64`)
253
+
254
+ If you're switching from Intel to M1, you'll have to manually delete the existing Intel (`mac64`) driver before the
255
+ M1 (`arm64`) build can be downloaded. Otherwise, you'll get an error: `Bad CPU type in executable - ~/.webdrivers/chromedriver (Errno::E086)`
256
+
234
257
  ## Wiki
235
258
 
236
259
  Please see the [wiki](https://github.com/titusfortner/webdrivers/wiki)
@@ -88,7 +88,7 @@ module Webdrivers
88
88
  end
89
89
 
90
90
  def linux_location
91
- return wsl_location if System.wsl?
91
+ return wsl_location if System.wsl_v1?
92
92
 
93
93
  directories = %w[/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin /opt/google/chrome]
94
94
  files = %w[google-chrome chrome chromium chromium-browser]
@@ -104,6 +104,8 @@ module Webdrivers
104
104
  end
105
105
 
106
106
  def win_version(location)
107
+ System.call("pwsh.exe -command \"(Get-ItemProperty '#{location}').VersionInfo.ProductVersion\"")&.strip
108
+ rescue StandardError
107
109
  System.call("powershell.exe \"(Get-ItemProperty '#{location}').VersionInfo.ProductVersion\"")&.strip
108
110
  end
109
111
 
@@ -112,7 +114,7 @@ module Webdrivers
112
114
  end
113
115
 
114
116
  def linux_version(location)
115
- return wsl_version(location) if System.wsl?
117
+ return wsl_version(location) if System.wsl_v1?
116
118
 
117
119
  System.call(location, '--product-version')&.strip
118
120
  end
@@ -73,36 +73,57 @@ module Webdrivers
73
73
  else
74
74
  msg
75
75
  end
76
- rescue NetworkError
77
- "#{msg} A network issue is preventing determination of latest chromedriver release."
76
+ rescue NetworkError
77
+ "#{msg} A network issue is preventing determination of latest chromedriver release."
78
78
  end
79
79
 
80
80
  msg = "#{msg} Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` "\
81
- 'to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html'
82
-
81
+ 'to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html'
83
82
  Webdrivers.logger.debug msg
84
83
  raise VersionError, msg
85
84
  end
86
85
 
87
86
  def file_name
88
- System.platform == 'win' || System.wsl? ? 'chromedriver.exe' : 'chromedriver'
87
+ System.platform == 'win' || System.wsl_v1? ? 'chromedriver.exe' : 'chromedriver'
88
+ end
89
+
90
+ def apple_m1_compatible?(driver_version)
91
+ if System.apple_m1_architecture? && driver_version >= normalize_version('87.0.4280.88')
92
+ Webdrivers.logger.debug 'chromedriver version is Apple M1 compatible.'
93
+ return true
94
+ end
95
+
96
+ Webdrivers.logger.debug 'chromedriver version is NOT Apple M1 compatible. Required >= 87.0.4280.88'
97
+ false
89
98
  end
90
99
 
91
100
  def download_url
92
101
  return @download_url if @download_url
93
102
 
94
- version = if required_version == EMPTY_VERSION
95
- latest_version
96
- else
97
- normalize_version(required_version)
98
- end
99
-
100
- file_name = System.platform == 'win' || System.wsl? ? 'win32' : "#{System.platform}64"
101
- url = "#{base_url}/#{version}/chromedriver_#{file_name}.zip"
103
+ driver_version = if required_version == EMPTY_VERSION
104
+ latest_version
105
+ else
106
+ normalize_version(required_version)
107
+ end
108
+ filename = driver_filename(driver_version)
109
+ url = "#{base_url}/#{driver_version}/chromedriver_#{filename}.zip"
102
110
  Webdrivers.logger.debug "chromedriver URL: #{url}"
103
111
  @download_url = url
104
112
  end
105
113
 
114
+ def driver_filename(driver_version)
115
+ if System.platform == 'win' || System.wsl_v1?
116
+ 'win32'
117
+ elsif System.platform == 'linux'
118
+ 'linux64'
119
+ elsif System.platform == 'mac'
120
+ apple_arch = apple_m1_compatible?(driver_version) ? '_m1' : ''
121
+ "mac64#{apple_arch}"
122
+ else
123
+ raise 'Failed to determine driver filename to download for your OS.'
124
+ end
125
+ end
126
+
106
127
  # Returns major.minor.build version from the currently installed chromedriver version
107
128
  #
108
129
  # @example
@@ -24,15 +24,15 @@ module Webdrivers
24
24
  private
25
25
 
26
26
  def user_defined_location
27
- if Selenium::WebDriver::EdgeChrome.path
28
- Webdrivers.logger.debug "Selenium::WebDriver::EdgeChrome.path: #{Selenium::WebDriver::EdgeChrome.path}"
29
- return Selenium::WebDriver::EdgeChrome.path
27
+ if Selenium::WebDriver::Edge.path
28
+ Webdrivers.logger.debug "Selenium::WebDriver::Edge.path: #{Selenium::WebDriver::Edge.path}"
29
+ return Selenium::WebDriver::Edge.path
30
30
  end
31
31
 
32
- return if ENV['WD_EDGE_CHROME_PATH'].nil?
32
+ return if ENV['WD_EDGE_PATH'].nil?
33
33
 
34
- Webdrivers.logger.debug "WD_EDGE_CHROME_PATH: #{ENV['WD_EDGE_CHROME_PATH']}"
35
- ENV['WD_EDGE_CHROME_PATH']
34
+ Webdrivers.logger.debug "WD_EDGE_PATH: #{ENV['WD_EDGE_PATH']}"
35
+ ENV['WD_EDGE_PATH']
36
36
  end
37
37
 
38
38
  def win_location
@@ -69,6 +69,17 @@ module Webdrivers
69
69
  end
70
70
 
71
71
  def linux_location
72
+ # directories = %w[/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin /opt/google/chrome]
73
+ # files = %w[microsoft-edge] # Based on Microsoft Edge 89.0.760.0 dev
74
+ #
75
+ # directories.each do |dir|
76
+ # files.each do |file|
77
+ # option = "#{dir}/#{file}"
78
+ # return option if File.exist?(option)
79
+ # end
80
+ # end
81
+ #
82
+ # nil
72
83
  raise 'Default location not yet known'
73
84
  end
74
85
 
@@ -26,10 +26,6 @@ module Webdrivers
26
26
  'https://msedgedriver.azureedge.net/'
27
27
  end
28
28
 
29
- def remove
30
- super
31
- end
32
-
33
29
  private
34
30
 
35
31
  def latest_point_release(version)
@@ -58,8 +54,8 @@ module Webdrivers
58
54
  else
59
55
  msg
60
56
  end
61
- rescue NetworkError
62
- "#{msg} A network issue is preventing determination of latest msedgedriver release."
57
+ rescue NetworkError
58
+ "#{msg} A network issue is preventing determination of latest msedgedriver release."
63
59
  end
64
60
 
65
61
  "#{msg} Please set `Webdrivers::Edgedriver.required_version = <desired driver version>` "\
@@ -70,17 +66,44 @@ module Webdrivers
70
66
  System.platform == 'win' ? 'msedgedriver.exe' : 'msedgedriver'
71
67
  end
72
68
 
69
+ def apple_m1_compatible?(driver_version)
70
+ if System.apple_m1_architecture? && driver_version >= normalize_version('87.0.669.0')
71
+ Webdrivers.logger.debug 'msedgedriver version is Apple M1 compatible.'
72
+ return true
73
+ end
74
+
75
+ Webdrivers.logger.debug 'msedgedriver version is NOT Apple M1 compatible. Required >= 87.0.669.0'
76
+ false
77
+ end
78
+
79
+ # def linux_compatible?(driver_version)
80
+ # System.platform == 'linux' && driver_version >= normalize_version('89.0.731.0')
81
+ # end
82
+
83
+ def driver_filename(driver_version)
84
+ if System.platform == 'win' || System.wsl_v1?
85
+ "win#{System.bitsize}" # 32 or 64-bit
86
+ # elsif linux_compatible?(driver_version)
87
+ # 'linux64'
88
+ elsif System.platform == 'mac'
89
+ # Determine M1 or Intel architecture
90
+ apple_arch = apple_m1_compatible?(driver_version) ? 'arm' : 'mac'
91
+ "#{apple_arch}64"
92
+ else
93
+ raise 'Failed to determine driver filename to download for your OS.'
94
+ end
95
+ end
96
+
73
97
  def download_url
74
98
  return @download_url if @download_url
75
99
 
76
- version = if required_version == EMPTY_VERSION
77
- latest_version
78
- else
79
- normalize_version(required_version)
80
- end
81
-
82
- file_name = System.platform == 'win' ? 'win32' : "#{System.platform}64"
83
- url = "#{base_url}/#{version}/edgedriver_#{file_name}.zip"
100
+ driver_version = if required_version == EMPTY_VERSION
101
+ latest_version
102
+ else
103
+ normalize_version(required_version)
104
+ end
105
+ filename = driver_filename(driver_version)
106
+ url = "#{base_url}/#{driver_version}/edgedriver_#{filename}.zip"
84
107
  Webdrivers.logger.debug "msedgedriver URL: #{url}"
85
108
  @download_url = url
86
109
  end
@@ -88,19 +111,4 @@ module Webdrivers
88
111
  end
89
112
  end
90
113
 
91
- if defined? Selenium::WebDriver::EdgeChrome
92
- if ::Selenium::WebDriver::Service.respond_to? :driver_path=
93
- ::Selenium::WebDriver::EdgeChrome::Service.driver_path = proc { ::Webdrivers::Edgedriver.update }
94
- else
95
- # v3.141.0 and lower
96
- module Selenium
97
- module WebDriver
98
- module EdgeChrome
99
- def self.driver_path
100
- @driver_path ||= Webdrivers::Edgedriver.update
101
- end
102
- end
103
- end
104
- end
105
- end
106
- end
114
+ ::Selenium::WebDriver::Edge::Service.driver_path = proc { ::Webdrivers::Edgedriver.update }
@@ -44,16 +44,19 @@ module Webdrivers
44
44
  end
45
45
 
46
46
  def downloads
47
- doc = Nokogiri::XML.parse(Network.get(base_url))
48
- items = doc.css('Key').collect(&:text)
49
- items.select! { |item| item.include?('IEDriverServer_Win32') }
50
- ds = items.each_with_object({}) do |item, hash|
51
- key = normalize_version item[/([^_]+)\.zip/, 1]
52
- hash[key] = "#{base_url}#{item}"
47
+ ds = download_manifest.each_with_object({}) do |item, hash|
48
+ version = normalize_version item[/\.?([^_]+)\.zip/, 1]
49
+ hash[version] = "#{base_url}#{item}"
53
50
  end
54
51
  Webdrivers.logger.debug "Versions now located on downloads site: #{ds.keys}"
55
52
  ds
56
53
  end
54
+
55
+ def download_manifest
56
+ doc = Nokogiri::XML.parse(Network.get(base_url))
57
+ items = doc.css('Key').collect(&:text)
58
+ items.select { |item| item.include?('IEDriverServer_Win32') }
59
+ end
57
60
  end
58
61
  end
59
62
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'net/http'
4
+
3
5
  module Webdrivers
4
6
  #
5
7
  # @api private
@@ -148,8 +148,18 @@ module Webdrivers
148
148
  end
149
149
  end
150
150
 
151
+ def apple_m1_architecture?
152
+ if platform == 'mac' && RUBY_PLATFORM.include?('arm64-darwin')
153
+ Webdrivers.logger.debug 'Apple architecture: M1 (arm64-darwin)'
154
+ return true
155
+ end
156
+
157
+ Webdrivers.logger.debug 'Apple architecture: Intel (mac64)'
158
+ false
159
+ end
160
+
151
161
  # @return [TrueClass, FalseClass]
152
- def wsl?
162
+ def wsl_v1?
153
163
  platform == 'linux' && File.open('/proc/version').read.include?('Microsoft')
154
164
  end
155
165
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Webdrivers
4
- VERSION = '4.4.1'
4
+ VERSION = '4.6.1'
5
5
  end
@@ -52,7 +52,7 @@ describe Webdrivers::ChromeFinder do
52
52
  before do
53
53
  skip "The current platform cannot be WSL, as it's not Linux" unless Selenium::WebDriver::Platform.linux?
54
54
 
55
- allow(Webdrivers::System).to receive(:wsl?).and_return(true)
55
+ allow(Webdrivers::System).to receive(:wsl_v1?).and_return(true)
56
56
  allow(Webdrivers::System).to receive(:to_wsl_path).and_return('')
57
57
  allow(Webdrivers::System).to receive(:to_win32_path).and_return('')
58
58
  end
@@ -6,9 +6,7 @@ describe Webdrivers::EdgeFinder do
6
6
  let(:edge_finder) { described_class }
7
7
 
8
8
  before(:all) do # rubocop:disable RSpec/BeforeAfterAll
9
- # Skip these tests if version of selenium-webdriver being tested with doesn't
10
- # have Chromium based Edge support
11
- unless defined?(Selenium::WebDriver::EdgeChrome)
9
+ if Selenium::WebDriver::VERSION[0].to_i < 4
12
10
  skip "The current selenium-webdriver doesn't include Chromium based Edge support"
13
11
  end
14
12
  end
@@ -20,8 +18,8 @@ describe Webdrivers::EdgeFinder do
20
18
  end
21
19
 
22
20
  context 'when the user provides a path to the Edge binary' do
23
- it 'uses Selenium::WebDriver::EdgeChrome.path when it is defined' do
24
- Selenium::WebDriver::EdgeChrome.path = edge_finder.location
21
+ it 'uses Selenium::WebDriver::Edge.path when it is defined' do
22
+ Selenium::WebDriver::Edge.path = edge_finder.location
25
23
  locations = %i[win_location mac_location linux_location]
26
24
  allow(edge_finder).to receive_messages(locations)
27
25
 
@@ -29,8 +27,8 @@ describe Webdrivers::EdgeFinder do
29
27
  locations.each { |loc| expect(edge_finder).not_to have_received(loc) }
30
28
  end
31
29
 
32
- it "uses ENV['WD_EDGE_CHROME_PATH'] when it is defined" do
33
- allow(ENV).to receive(:[]).with('WD_EDGE_CHROME_PATH').and_return(edge_finder.location)
30
+ it "uses ENV['WD_EDGE_PATH'] when it is defined" do
31
+ allow(ENV).to receive(:[]).with('WD_EDGE_PATH').and_return(edge_finder.location)
34
32
  locations = %i[win_location mac_location linux_location]
35
33
  allow(edge_finder).to receive_messages(locations)
36
34
 
@@ -38,11 +36,11 @@ describe Webdrivers::EdgeFinder do
38
36
  locations.each { |loc| expect(edge_finder).not_to have_received(loc) }
39
37
  end
40
38
 
41
- it 'uses Selenium::WebDriver::EdgeChrome.path over WD_EDGE_CHROME_PATH' do
42
- Selenium::WebDriver::EdgeChrome.path = edge_finder.location
43
- allow(ENV).to receive(:[]).with('WD_EDGE_CHROME_PATH').and_return('my_wd_chrome_path')
39
+ it 'uses Selenium::WebDriver::Edge.path over WD_EDGE_PATH' do
40
+ Selenium::WebDriver::Edge.path = edge_finder.location
41
+ allow(ENV).to receive(:[]).with('WD_EDGE_PATH').and_return('my_wd_chrome_path')
44
42
  expect(edge_finder.version).not_to be_nil
45
- expect(ENV).not_to have_received(:[]).with('WD_EDGE_CHROME_PATH')
43
+ expect(ENV).not_to have_received(:[]).with('WD_EDGE_PATH')
46
44
  end
47
45
  end
48
46
 
@@ -6,9 +6,7 @@ describe Webdrivers::Edgedriver do
6
6
  let(:edgedriver) { described_class }
7
7
 
8
8
  before(:all) do # rubocop:disable RSpec/BeforeAfterAll
9
- # Skip these tests if version of selenium-webdriver being tested with doesn't
10
- # have Chromium based Edge support
11
- unless defined?(Selenium::WebDriver::EdgeChrome)
9
+ if Selenium::WebDriver::VERSION[0].to_i < 4
12
10
  skip "The current selenium-webdriver doesn't include Chromium based Edge support"
13
11
  end
14
12
  end
@@ -2,36 +2,42 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- wsl_proc_contents = [
6
- 'Linux version 4.4.0-18362-Microsoft',
7
- '(Microsoft@Microsoft.com)',
8
- '(gcc version 5.4.0 (GCC) )',
9
- '#836-Microsoft',
10
- 'Mon May 05 16:04:00 PST 2020'
11
- ].join ' '
12
-
13
5
  describe Webdrivers::System do
14
- describe '#wsl?' do
15
- context 'when the current platform is linux' do
16
- before { allow(described_class).to receive(:platform).and_return 'linux' }
6
+ describe '#wsl_v1?' do
7
+ subject { described_class.wsl_v1? }
8
+
9
+ before do
10
+ allow(described_class).to receive(:platform).and_return(platform)
11
+ allow(File).to receive(:open).with('/proc/version').and_return(StringIO.new(wsl_proc_version_contents))
12
+ end
17
13
 
18
- it 'checks /proc/version' do
19
- allow(File).to receive(:open).with('/proc/version').and_return(StringIO.new(wsl_proc_contents))
14
+ let(:platform) { 'linux' }
15
+ let(:wsl_proc_version_contents) { '' }
20
16
 
21
- expect(described_class.wsl?).to eq true
17
+ context 'when the current platform is linux and WSL version is 1' do
18
+ let(:wsl_proc_version_contents) do
19
+ 'Linux version 4.4.0-18362-Microsoft'\
20
+ '(Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) )'\
21
+ '#836-Microsoft Mon May 05 16:04:00 PST 2020'
22
22
  end
23
+
24
+ it { is_expected.to eq true }
23
25
  end
24
26
 
25
- context 'when the current platform is mac' do
26
- before { allow(described_class).to receive(:platform).and_return 'mac' }
27
+ context 'when the current platform is linux and WSL version is 2' do
28
+ let(:wsl_proc_version_contents) do
29
+ 'Linux version 4.19.84-microsoft-standard '\
30
+ '(oe-user@oe-host) (gcc version 8.2.0 (GCC)) '\
31
+ '#1 SMP Wed Nov 13 11:44:37 UTC 2019'
32
+ end
27
33
 
28
- it 'does not bother checking proc' do
29
- allow(File).to receive(:open).and_call_original
34
+ it { is_expected.to eq false }
35
+ end
30
36
 
31
- expect(described_class.wsl?).to eq false
37
+ context 'when the current platform is mac' do
38
+ let(:platform) { 'mac' }
32
39
 
33
- expect(File).not_to have_received(:open).with('/proc/version')
34
- end
40
+ it { is_expected.to eq false }
35
41
  end
36
42
  end
37
43
 
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdrivers
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.1
4
+ version: 4.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Titus Fortner
8
8
  - Lakshya Kapoor
9
9
  - Thomas Walpole
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-06-02 00:00:00.000000000 Z
13
+ date: 2021-08-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ffi
@@ -60,14 +60,28 @@ dependencies:
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '0.66'
63
+ version: '0.89'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '0.66'
70
+ version: '0.89'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rubocop-packaging
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: 0.5.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: 0.5.0
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: rubocop-performance
73
87
  requirement: !ruby/object:Gem::Requirement
@@ -88,14 +102,14 @@ dependencies:
88
102
  requirements:
89
103
  - - "~>"
90
104
  - !ruby/object:Gem::Version
91
- version: '1.32'
105
+ version: '1.42'
92
106
  type: :development
93
107
  prerelease: false
94
108
  version_requirements: !ruby/object:Gem::Requirement
95
109
  requirements:
96
110
  - - "~>"
97
111
  - !ruby/object:Gem::Version
98
- version: '1.32'
112
+ version: '1.42'
99
113
  - !ruby/object:Gem::Dependency
100
114
  name: simplecov
101
115
  requirement: !ruby/object:Gem::Requirement
@@ -167,19 +181,9 @@ executables: []
167
181
  extensions: []
168
182
  extra_rdoc_files: []
169
183
  files:
170
- - ".github/ISSUE_TEMPLATE.md"
171
- - ".gitignore"
172
- - ".rubocop.yml"
173
- - ".travis.yml"
174
184
  - CHANGELOG.md
175
- - Gemfile
176
185
  - LICENSE.txt
177
186
  - README.md
178
- - Rakefile
179
- - appveyor.yml
180
- - bin/console
181
- - bin/setup
182
- - gemfiles/Gemfile.edge
183
187
  - lib/webdrivers.rb
184
188
  - lib/webdrivers/Rakefile
185
189
  - lib/webdrivers/chrome_finder.rb
@@ -208,18 +212,15 @@ files:
208
212
  - spec/webdrivers/system_spec.rb
209
213
  - spec/webdrivers/webdrivers_spec.rb
210
214
  - spec/webdrivers_proxy_support_spec.rb
211
- - support/install_jruby.ps1
212
- - support/install_msedge.ps1
213
- - webdrivers.gemspec
214
215
  homepage: https://github.com/titusfortner/webdrivers
215
216
  licenses:
216
217
  - MIT
217
218
  metadata:
218
219
  bug_tracker_uri: https://github.com/titusfortner/webdrivers/issues
219
220
  changelog_uri: https://github.com/titusfortner/webdrivers/blob/master/CHANGELOG.md
220
- documentation_uri: https://www.rubydoc.info/gems/webdrivers/4.4.1
221
- source_code_uri: https://github.com/titusfortner/webdrivers/tree/v4.4.1
222
- post_install_message:
221
+ documentation_uri: https://www.rubydoc.info/gems/webdrivers/4.6.1
222
+ source_code_uri: https://github.com/titusfortner/webdrivers/tree/v4.6.1
223
+ post_install_message:
223
224
  rdoc_options: []
224
225
  require_paths:
225
226
  - lib
@@ -234,8 +235,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
235
  - !ruby/object:Gem::Version
235
236
  version: '0'
236
237
  requirements: []
237
- rubygems_version: 3.1.2
238
- signing_key:
238
+ rubygems_version: 3.2.22
239
+ signing_key:
239
240
  specification_version: 4
240
241
  summary: Easy download and use of browser drivers.
241
- test_files: []
242
+ test_files:
243
+ - spec/spec_helper.rb
244
+ - spec/webdrivers/chrome_finder_spec.rb
245
+ - spec/webdrivers/chromedriver_spec.rb
246
+ - spec/webdrivers/edge_finder_spec.rb
247
+ - spec/webdrivers/edgedriver_spec.rb
248
+ - spec/webdrivers/geckodriver_spec.rb
249
+ - spec/webdrivers/i_edriver_spec.rb
250
+ - spec/webdrivers/system_spec.rb
251
+ - spec/webdrivers/webdrivers_spec.rb
252
+ - spec/webdrivers_proxy_support_spec.rb
@@ -1,16 +0,0 @@
1
- #### Summary
2
- Short summary of the bug or feature request.
3
-
4
- #### Debug Info
5
- Please provide the following information for bug reports:
6
-
7
- * Webdrivers version:
8
- * Ruby version:
9
- * Operating system / CI Environment:
10
- * Browser and version:
11
-
12
- #### Expected Behavior
13
- What you expect to happen.
14
-
15
- #### Actual Behavior
16
- What is actually happening: Error message, stack trace, DEBUG log if applicable (set `Webdrivers.logger.level = :DEBUG` after you require webdrivers)
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
5
- chromedriver.log
6
- /.idea/
7
- coverage/
8
- gemfiles/Gemfile.*.lock
data/.rubocop.yml DELETED
@@ -1,96 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.4.10
3
-
4
- require:
5
- - rubocop-rspec
6
- - rubocop-performance
7
-
8
- Layout/SpaceInsideHashLiteralBraces:
9
- EnforcedStyle: no_space
10
-
11
- Layout/EndOfLine:
12
- EnforcedStyle: lf
13
-
14
- Layout/LineLength:
15
- Max: 120
16
- IgnoredPatterns:
17
- - '\s+# rubocop:disable'
18
-
19
- Layout/EmptyLinesAroundAttributeAccessor:
20
- Enabled: true
21
-
22
- Layout/SpaceAroundOperators:
23
- Enabled: true
24
-
25
- Layout/SpaceAroundMethodCallOperator:
26
- Enabled: true
27
-
28
- Lint/DeprecatedOpenSSLConstant:
29
- Enabled: true
30
-
31
- Lint/RaiseException:
32
- Enabled: true
33
-
34
- Lint/StructNewOverride:
35
- Enabled: true
36
-
37
- Lint/MixedRegexpCaptureTypes:
38
- Enabled: true
39
-
40
- Lint/ScriptPermission:
41
- Enabled: false
42
-
43
- Metrics/MethodLength:
44
- Max: 20
45
-
46
- Metrics/BlockLength:
47
- Exclude:
48
- - 'spec/**/*'
49
- - 'lib/webdrivers/tasks/*.rake'
50
- - 'webdrivers.gemspec'
51
-
52
- Metrics/ClassLength:
53
- Max: 116
54
- Exclude:
55
- - 'lib/webdrivers/system.rb'
56
-
57
- Metrics/CyclomaticComplexity:
58
- Max: 8
59
-
60
- Metrics/AbcSize:
61
- Max: 16
62
- Exclude:
63
- - 'lib/webdrivers/chromedriver.rb'
64
-
65
- Style/Documentation:
66
- Enabled: false
67
-
68
- Style/FrozenStringLiteralComment:
69
- Enabled: false
70
-
71
- Style/ExponentialNotation:
72
- Enabled: false
73
-
74
- Style/HashEachMethods:
75
- Enabled: true
76
-
77
- Style/HashTransformKeys:
78
- Enabled: false
79
-
80
- Style/HashTransformValues:
81
- Enabled: false
82
-
83
- Style/SlicingWithRange:
84
- Enabled: false
85
-
86
- Style/RedundantRegexpCharacterClass:
87
- Enabled: true
88
-
89
- Style/RedundantRegexpEscape:
90
- Enabled: false
91
-
92
- RSpec/ExampleLength:
93
- Enabled: false
94
-
95
- RSpec/MultipleExpectations:
96
- Enabled: false
data/.travis.yml DELETED
@@ -1,41 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- addons:
4
- apt:
5
- packages:
6
- - chromium-browser
7
- - libgconf-2-4
8
- chrome: stable
9
- script: bundle exec rake $RAKE_TASK
10
- before_install:
11
- - gem update --system -N
12
- - gem install bundler -N
13
- matrix:
14
- include:
15
- - rvm: 2.4
16
- env: RAKE_TASK=spec
17
- - rvm: 2.5
18
- env: RAKE_TASK=spec
19
- - rvm: 2.6
20
- env: RAKE_TASK=spec
21
- - rvm: 2.7
22
- os: osx
23
- env: RAKE_TASK=spec
24
- - rvm: 2.7
25
- env: RAKE_TASK=rubocop
26
- - rvm: jruby-9.2.11.1
27
- jdk: openjdk8
28
- env: RAKE_TASK=spec
29
- - rvm: 2.7
30
- env: RAKE_TASK=spec
31
- gemfile: gemfiles/Gemfile.edge
32
- os: osx
33
- osx_image: xcode11.3
34
- addons:
35
- chrome: stable
36
- homebrew:
37
- taps: homebrew/cask-versions
38
- casks:
39
- - microsoft-edge
40
- allow_failures:
41
- - gemfile: gemfiles/Gemfile.edge
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in webdrivers.gemspec
6
- gemspec
data/Rakefile DELETED
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
- require 'rubocop/rake_task'
6
-
7
- RuboCop::RakeTask.new
8
-
9
- RSpec::Core::RakeTask.new(:spec)
10
-
11
- task default: %i[rubocop spec]
data/appveyor.yml DELETED
@@ -1,45 +0,0 @@
1
- build: off
2
- cache:
3
- - vendor/bundle
4
- image:
5
- - Visual Studio 2019
6
- environment:
7
- matrix:
8
- - RUBY_VERSION: Ruby24-x64
9
- RUBY_BIN: ruby
10
- RAKE_TASK: rubocop
11
- SCRIPT_CONTEXT: bundle exec
12
- - RUBY_VERSION: Ruby24-x64
13
- RUBY_BIN: ruby
14
- RAKE_TASK: spec
15
- SCRIPT_CONTEXT: bundle exec
16
- - RUBY_VERSION: Ruby25-x64
17
- RUBY_BIN: ruby
18
- RAKE_TASK: spec
19
- SCRIPT_CONTEXT: bundle exec
20
- - RUBY_VERSION: Ruby26-x64
21
- RUBY_BIN: ruby
22
- RAKE_TASK: spec
23
- SCRIPT_CONTEXT: bundle exec
24
- - RUBY_VERSION: jruby-9.2.11.1
25
- RUBY_BIN: jruby
26
- RAKE_TASK: spec
27
- SCRIPT_CONTEXT: jruby -G -S
28
- - RUBY_VERSION: Ruby26-x64
29
- RUBY_BIN: ruby
30
- RAKE_TASK: spec
31
- SCRIPT_CONTEXT: bundle exec
32
- BUNDLE_GEMFILE: gemfiles/Gemfile.edge
33
- install:
34
- - ps: if ($env:RUBY_BIN -eq 'jruby') { support\install_jruby.ps1 }
35
- - ps: support\install_msedge.ps1
36
- - set PATH=C:\%RUBY_VERSION%\bin;%PATH%
37
- - '%RUBY_BIN% -S gem update --system -N'
38
- - '%RUBY_BIN% -S gem install bundler -N'
39
- - '%RUBY_BIN% -S bundle install'
40
- before_test:
41
- - '%RUBY_BIN% -v'
42
- - '%RUBY_BIN% -S gem -v'
43
- - '%RUBY_BIN% -S bundle -v'
44
- test_script:
45
- - '%SCRIPT_CONTEXT% rake %RAKE_TASK%'
data/bin/console DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'bundler/setup'
5
- require 'webdrivers'
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require 'irb'
15
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in webdrivers.gemspec
6
- gemspec path: '..'
7
- gem 'selenium-webdriver', github: 'seleniumhq/selenium', glob: 'rb/*.gemspec'
@@ -1,7 +0,0 @@
1
- $downloadLink = "https://repo1.maven.org/maven2/org/jruby/jruby-dist/9.2.11.1/jruby-dist-9.2.11.1-bin.zip"
2
- $zipPath = "c:\jruby-dist-9.2.11.1-bin.zip"
3
-
4
- Write-Host "Installing $($env:RUBY_VERSION)" -ForegroundColor cyan
5
- appveyor DownloadFile "$($downloadLink)" -FileName "$($zipPath)"
6
- 7z x "$($zipPath)" -oc:\ -y # Unzip to c:\
7
- Write-Host "JRuby installed.`n" -ForegroundColor green
@@ -1,11 +0,0 @@
1
- $downloadLink = "https://go.microsoft.com/fwlink/?linkid=2108834&Channel=Stable&language=en"
2
- $installerFile = "C:\MicrosoftEdgeSetup.exe"
3
-
4
- # Note: We're purposely skipping the -Wait flag in Start-Process.
5
- # This is because Edge auto-launches after the setup is done and
6
- # Start-Process continues to indefinitely wait on that process.
7
- Write-Host "Downloading Microsoft Edge (Stable)..." -ForegroundColor cyan
8
- Invoke-WebRequest $downloadLink -OutFile $installerFile
9
- Write-Host "Installing..." -ForegroundColor cyan
10
- Start-Process $installerFile
11
- Write-Host "Microsoft Edge (Stable) installed.`n" -ForegroundColor green
data/webdrivers.gemspec DELETED
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
5
- require 'webdrivers/version'
6
-
7
- Gem::Specification.new do |s|
8
- s.name = 'webdrivers'
9
- s.version = Webdrivers::VERSION
10
- s.required_ruby_version = '>= 2.4.0'
11
- s.authors = ['Titus Fortner', 'Lakshya Kapoor', 'Thomas Walpole']
12
- s.email = %w[titusfortner@gmail.com kapoorlakshya@gmail.com]
13
- s.homepage = 'https://github.com/titusfortner/webdrivers'
14
- s.summary = 'Easy download and use of browser drivers.'
15
- s.description = 'Run Selenium tests more easily with install and updates for all supported webdrivers.'
16
- s.licenses = ['MIT']
17
-
18
- s.metadata = {
19
- 'bug_tracker_uri' => 'https://github.com/titusfortner/webdrivers/issues',
20
- 'changelog_uri' => 'https://github.com/titusfortner/webdrivers/blob/master/CHANGELOG.md',
21
- 'documentation_uri' => "https://www.rubydoc.info/gems/webdrivers/#{Webdrivers::VERSION}",
22
- 'source_code_uri' => "https://github.com/titusfortner/webdrivers/tree/v#{Webdrivers::VERSION}"
23
- }
24
-
25
- s.files = `git ls-files`.split("\n")
26
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
- s.executables = []
28
- s.require_paths = ['lib']
29
-
30
- s.add_development_dependency 'ffi', '~> 1.0' # For selenium-webdriver on Windows
31
- s.add_development_dependency 'rake', '~> 12.0'
32
- s.add_development_dependency 'rspec', '~> 3.0'
33
- s.add_development_dependency 'rubocop', '~>0.66'
34
- s.add_development_dependency 'rubocop-performance'
35
- s.add_development_dependency 'rubocop-rspec', '~>1.32'
36
- s.add_development_dependency 'simplecov', '~>0.16'
37
-
38
- s.add_runtime_dependency 'nokogiri', '~> 1.6'
39
- s.add_runtime_dependency 'rubyzip', '>= 1.3.0'
40
- s.add_runtime_dependency 'selenium-webdriver', '>= 3.0', '< 4.0'
41
- end