webdrivers 4.1.3 → 4.4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +34 -0
- data/README.md +17 -7
- data/lib/webdrivers/chrome_finder.rb +34 -2
- data/lib/webdrivers/chromedriver.rb +33 -14
- data/lib/webdrivers/common.rb +10 -4
- data/lib/webdrivers/edge_finder.rb +5 -1
- data/lib/webdrivers/edgedriver.rb +2 -6
- data/lib/webdrivers/iedriver.rb +9 -6
- data/lib/webdrivers/network.rb +2 -0
- data/lib/webdrivers/system.rb +19 -0
- data/lib/webdrivers/version.rb +1 -1
- data/spec/webdrivers/chrome_finder_spec.rb +53 -0
- data/spec/webdrivers/chromedriver_spec.rb +14 -9
- data/spec/webdrivers/edgedriver_spec.rb +16 -12
- data/spec/webdrivers/geckodriver_spec.rb +2 -1
- data/spec/webdrivers/i_edriver_spec.rb +2 -1
- data/spec/webdrivers/system_spec.rb +73 -0
- metadata +37 -33
- data/.github/ISSUE_TEMPLATE.md +0 -16
- data/.gitignore +0 -8
- data/.rubocop.yml +0 -47
- data/.travis.yml +0 -41
- data/Gemfile +0 -6
- data/Rakefile +0 -11
- data/appveyor.yml +0 -45
- data/gemfiles/Gemfile.edge +0 -7
- data/support/install_jruby.ps1 +0 -7
- data/support/install_msedge.ps1 +0 -17
- data/webdrivers.gemspec +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a9aab40e8054bb95185ed1231b7f74757811afb4ad47553b7b78c2fc35ea936
|
4
|
+
data.tar.gz: c77d486952c76061d5007030b8e02025a72870469043617ddb230c16b11d0f1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9f29b0e62b33afe328f833ac8a8cb55e11e137938d22a7a66e9e72aa837ee58a9a00f94aa06977c78eac88bd3f446571753728536414b4a9b34a1ddfc0971bf
|
7
|
+
data.tar.gz: 2b979a07116667932ee3e0ca71678f1eec119840b712a2d265a61b1c1585bc14134e1238829d336bedf8c1373bff08cd6f0a80c66bf8378d63123e53a3ab249b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,37 @@
|
|
1
|
+
### 4.4.2 (2020-12-29)
|
2
|
+
* Use new powershell if available to enhance WSL support ([#176](https://github.com/titusfortner/webdrivers/issues/176),
|
3
|
+
[#186](https://github.com/titusfortner/webdrivers/pull/186)). Thanks, [G-Rath](https://github.com/G-Rath) and
|
4
|
+
[131](https://github.com/131)!
|
5
|
+
* Update rubocop version (development dependency only) ([#178](https://github.com/titusfortner/webdrivers/pull/178)).
|
6
|
+
Thanks, [utkarsh2102](https://github.com/utkarsh2102)!
|
7
|
+
* Replace `git ls-files` with `dir` in the gemspec for better Debian support ([#179](https://github.com/titusfortner/webdrivers/pull/179),
|
8
|
+
[#184](https://github.com/titusfortner/webdrivers/issues/184)).
|
9
|
+
Thanks again, [utkarsh2102](https://github.com/utkarsh2102)!
|
10
|
+
* Update README with `require: false` when adding gem to Gemfile ([#183](https://github.com/titusfortner/webdrivers/pull/183)).
|
11
|
+
* Make WSL detection more generic ([#187](https://github.com/titusfortner/webdrivers/pull/187)).
|
12
|
+
[rbclark](https://github.com/rbclark)!
|
13
|
+
|
14
|
+
### 4.4.1 (2020-06-01)
|
15
|
+
* Do not include binstubs used for troubleshooting only. Fixes [#174](https://github.com/titusfortner/webdrivers/issues/174).
|
16
|
+
|
17
|
+
### 4.4.0 (2020-05-31)
|
18
|
+
* Implement support for `chromedriver` in Windows Subsystem for Linux (WSL) v1 ([#172](https://github.com/titusfortner/webdrivers/issues/172)).
|
19
|
+
Thanks, [G-Rath](https://github.com/G-Rath)!
|
20
|
+
* Chrome/Edgedriver - Fix [#171](https://github.com/titusfortner/webdrivers/issues/171) by making sure the cached
|
21
|
+
driver build version matches the browser build version before using it.
|
22
|
+
* Chrome/Edgedriver - Driver version check now matches the driver and browser `major.minor.build` versions instead of just
|
23
|
+
the major version to be fully compliant with the `chromedriver` version selection
|
24
|
+
[document](https://chromedriver.chromium.org/downloads/version-selection).
|
25
|
+
|
26
|
+
### 4.3.0 (2020-04-14)
|
27
|
+
* Add support for Microsoft Edge (Chromium) stable
|
28
|
+
* Drop support for Ruby < 2.4.0
|
29
|
+
|
30
|
+
### 4.2.0 (2019-12-27)
|
31
|
+
* Add support for Microsoft Edge (Chromium) Beta releases ([#155](https://github.com/titusfortner/webdrivers/pull/155))
|
32
|
+
* Use tilde expansion to resolve user's home directory ([#166](https://github.com/titusfortner/webdrivers/pull/161))
|
33
|
+
* Add support for Chromium installed using Snap on Ubuntu ([#163](https://github.com/titusfortner/webdrivers/pull/163)). Thanks Tietew!
|
34
|
+
|
1
35
|
### 4.1.3 (2019-10-07)
|
2
36
|
* Require rubyzip version 1.3.0 or higher to fix [rubyzip#403](https://github.com/rubyzip/rubyzip/pull/403). Thanks rhymes! ([#153](https://github.com/titusfortner/webdrivers/pull/153))
|
3
37
|
* Fix a bug where the file deletion confirmation was printed even when there were no files to delete.
|
data/README.md
CHANGED
@@ -13,13 +13,15 @@ Run Selenium tests more easily with automatic installation and updates for all s
|
|
13
13
|
* [chromedriver](http://chromedriver.chromium.org/)
|
14
14
|
* [geckodriver](https://github.com/mozilla/geckodriver)
|
15
15
|
* [IEDriverServer](https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver)
|
16
|
-
* [msedgedriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)
|
16
|
+
* [msedgedriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)
|
17
|
+
|
18
|
+
Works on macOS, Linux, Windows, and Windows Subsystem for Linux (WSL) v1.
|
17
19
|
|
18
20
|
## Usage
|
19
21
|
|
20
22
|
In your Gemfile:
|
21
23
|
|
22
|
-
`gem 'webdrivers', '~> 4.0'`
|
24
|
+
`gem 'webdrivers', '~> 4.0', require: false`
|
23
25
|
|
24
26
|
In your project:
|
25
27
|
|
@@ -68,7 +70,7 @@ Webdrivers::Geckodriver.required_version = '0.23.0'
|
|
68
70
|
Webdrivers::IEdriver.required_version = '3.14.0'
|
69
71
|
|
70
72
|
# Edge (Chromium)
|
71
|
-
Webdrivers::Edgedriver.required_version
|
73
|
+
Webdrivers::Edgedriver.required_version = '76.0.183.0'
|
72
74
|
```
|
73
75
|
|
74
76
|
You can explicitly trigger the update in your code, but this will happen
|
@@ -92,10 +94,10 @@ variable. **Only set one to avoid confusion**.
|
|
92
94
|
|
93
95
|
##### Special exception for chromedriver and msedgedriver
|
94
96
|
|
95
|
-
Cache time will be respected as long as a driver binary exists and the major versions of
|
96
|
-
the browser and the driver match. For example, if you update Chrome or Edge to v76 and its driver is
|
97
|
-
still at
|
98
|
-
using a compatible version.
|
97
|
+
Cache time will be respected as long as a driver binary exists and the major.minor.build versions of
|
98
|
+
the browser and the driver match. For example, if you update Chrome or Edge to v76.0.123 and its driver is
|
99
|
+
still at v76.0.100, `webdrivers` will ignore the cache time and update the driver to make sure you're
|
100
|
+
using a compatible build version.
|
99
101
|
|
100
102
|
### Proxy
|
101
103
|
|
@@ -192,6 +194,14 @@ The logging level can be configured for debugging purpose:
|
|
192
194
|
Webdrivers.logger.level = :DEBUG
|
193
195
|
```
|
194
196
|
|
197
|
+
### WSLv1 support
|
198
|
+
|
199
|
+
While WSLv1 is not designed to run headful applications like Chrome, it can run exes; as such when found to be running
|
200
|
+
in WSL, `webdrivers` will use the Windows `chromedriver.exe`.
|
201
|
+
|
202
|
+
It's recommended that you install the new PowerShell (PS7) to avoid [a known issue](https://github.com/microsoft/terminal/issues/367)
|
203
|
+
with the console font being changed when calling the old PowerShell (PS5).
|
204
|
+
|
195
205
|
### Browser Specific Notes
|
196
206
|
|
197
207
|
#### Chrome/Chromium
|
@@ -50,6 +50,28 @@ module Webdrivers
|
|
50
50
|
nil
|
51
51
|
end
|
52
52
|
|
53
|
+
def wsl_location
|
54
|
+
_, drive, user = ENV['PATH'].match(%r{/([a-z])/Users/([^/:]+)/AppData/}).to_a
|
55
|
+
|
56
|
+
roots = [
|
57
|
+
"#{drive}:\\Users\\#{user}\\AppData\\Local",
|
58
|
+
"#{drive}:\\Program Files (x86)",
|
59
|
+
"#{drive}:\\Program Files"
|
60
|
+
]
|
61
|
+
|
62
|
+
directories = %w[Google\\Chrome\\Application Chromium\\Application]
|
63
|
+
file = 'chrome.exe'
|
64
|
+
|
65
|
+
directories.each do |dir|
|
66
|
+
roots.each do |root|
|
67
|
+
option = System.to_wsl_path("#{root}\\#{dir}\\#{file}")
|
68
|
+
return option if File.exist?(option)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
|
53
75
|
def mac_location
|
54
76
|
directories = ['', File.expand_path('~')]
|
55
77
|
files = ['/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
|
@@ -66,7 +88,9 @@ module Webdrivers
|
|
66
88
|
end
|
67
89
|
|
68
90
|
def linux_location
|
69
|
-
|
91
|
+
return wsl_location if System.wsl?
|
92
|
+
|
93
|
+
directories = %w[/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin /opt/google/chrome]
|
70
94
|
files = %w[google-chrome chrome chromium chromium-browser]
|
71
95
|
|
72
96
|
directories.each do |dir|
|
@@ -80,10 +104,18 @@ module Webdrivers
|
|
80
104
|
end
|
81
105
|
|
82
106
|
def win_version(location)
|
83
|
-
System.call("
|
107
|
+
System.call("pwsh.exe -command \"(Get-ItemProperty '#{location}').VersionInfo.ProductVersion\"")&.strip
|
108
|
+
rescue StandardError
|
109
|
+
System.call("powershell.exe \"(Get-ItemProperty '#{location}').VersionInfo.ProductVersion\"")&.strip
|
110
|
+
end
|
111
|
+
|
112
|
+
def wsl_version(location)
|
113
|
+
win_version(System.to_win32_path(location))
|
84
114
|
end
|
85
115
|
|
86
116
|
def linux_version(location)
|
117
|
+
return wsl_version(location) if System.wsl?
|
118
|
+
|
87
119
|
System.call(location, '--product-version')&.strip
|
88
120
|
end
|
89
121
|
|
@@ -29,9 +29,14 @@ module Webdrivers
|
|
29
29
|
def latest_version
|
30
30
|
@latest_version ||= begin
|
31
31
|
# Versions before 70 do not have a LATEST_RELEASE file
|
32
|
-
return normalize_version('2.41') if
|
32
|
+
return normalize_version('2.41') if browser_build_version < normalize_version('70')
|
33
33
|
|
34
|
-
|
34
|
+
# Cache check
|
35
|
+
# Cached version should exist and be compatible with the current browser version.
|
36
|
+
# Otherwise, fetch the latest compatible driver.
|
37
|
+
latest_applicable = with_cache(file_name,
|
38
|
+
current_build_version,
|
39
|
+
browser_build_version) { latest_point_release(browser_build_version) }
|
35
40
|
|
36
41
|
Webdrivers.logger.debug "Latest version available: #{latest_applicable}"
|
37
42
|
normalize_version(latest_applicable)
|
@@ -68,19 +73,18 @@ module Webdrivers
|
|
68
73
|
else
|
69
74
|
msg
|
70
75
|
end
|
71
|
-
|
72
|
-
|
76
|
+
rescue NetworkError
|
77
|
+
"#{msg} A network issue is preventing determination of latest chromedriver release."
|
73
78
|
end
|
74
79
|
|
75
80
|
msg = "#{msg} Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` "\
|
76
|
-
'to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html'
|
77
|
-
|
81
|
+
'to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html'
|
78
82
|
Webdrivers.logger.debug msg
|
79
83
|
raise VersionError, msg
|
80
84
|
end
|
81
85
|
|
82
86
|
def file_name
|
83
|
-
System.platform == 'win' ? 'chromedriver.exe' : 'chromedriver'
|
87
|
+
System.platform == 'win' || System.wsl? ? 'chromedriver.exe' : 'chromedriver'
|
84
88
|
end
|
85
89
|
|
86
90
|
def download_url
|
@@ -92,24 +96,39 @@ module Webdrivers
|
|
92
96
|
normalize_version(required_version)
|
93
97
|
end
|
94
98
|
|
95
|
-
file_name = System.platform == 'win' ? 'win32' : "#{System.platform}64"
|
99
|
+
file_name = System.platform == 'win' || System.wsl? ? 'win32' : "#{System.platform}64"
|
96
100
|
url = "#{base_url}/#{version}/chromedriver_#{file_name}.zip"
|
97
101
|
Webdrivers.logger.debug "chromedriver URL: #{url}"
|
98
102
|
@download_url = url
|
99
103
|
end
|
100
104
|
|
101
|
-
# Returns
|
105
|
+
# Returns major.minor.build version from the currently installed chromedriver version
|
106
|
+
#
|
107
|
+
# @example
|
108
|
+
# 73.0.3683.68 (major.minor.build.patch) -> 73.0.3683 (major.minor.build)
|
109
|
+
def current_build_version
|
110
|
+
build_ver = if current_version.nil? # Driver not found
|
111
|
+
nil
|
112
|
+
else
|
113
|
+
current_version.segments[0..2].join('.')
|
114
|
+
end
|
115
|
+
normalize_version(build_ver)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Returns major.minor.build version from the currently installed Chrome version
|
102
119
|
#
|
103
120
|
# @example
|
104
|
-
# 73.0.3683.75 -> 73.0.3683
|
105
|
-
def
|
106
|
-
|
107
|
-
normalize_version(chrome.segments[0..2].join('.'))
|
121
|
+
# 73.0.3683.75 (major.minor.build.patch) -> 73.0.3683 (major.minor.build)
|
122
|
+
def browser_build_version
|
123
|
+
normalize_version(browser_version.segments[0..2].join('.'))
|
108
124
|
end
|
125
|
+
alias chrome_build_version browser_build_version
|
109
126
|
|
127
|
+
# Returns true if an executable driver binary exists
|
128
|
+
# and its build version matches the browser build version
|
110
129
|
def sufficient_binary?
|
111
130
|
super && current_version && (current_version < normalize_version('70.0.3538') ||
|
112
|
-
|
131
|
+
current_build_version == browser_build_version)
|
113
132
|
end
|
114
133
|
end
|
115
134
|
end
|
data/lib/webdrivers/common.rb
CHANGED
@@ -21,7 +21,7 @@ module Webdrivers
|
|
21
21
|
end
|
22
22
|
|
23
23
|
DEFAULT_CACHE_TIME = 86_400 # 24 hours
|
24
|
-
DEFAULT_INSTALL_DIR = File.expand_path(
|
24
|
+
DEFAULT_INSTALL_DIR = File.expand_path('~/.webdrivers')
|
25
25
|
|
26
26
|
class << self
|
27
27
|
attr_accessor :proxy_addr, :proxy_port, :proxy_user, :proxy_pass
|
@@ -157,9 +157,15 @@ module Webdrivers
|
|
157
157
|
nil
|
158
158
|
end
|
159
159
|
|
160
|
-
|
161
|
-
|
162
|
-
|
160
|
+
# Returns cached driver version if cache is still valid and the driver binary exists.
|
161
|
+
# Otherwise caches the given version (typically the latest available)
|
162
|
+
# In case of Chrome, it also verifies that the driver build and browser build versions are compatible.
|
163
|
+
# Example usage: lib/webdrivers/chromedriver.rb:34
|
164
|
+
def with_cache(file_name, driver_build = nil, browser_build = nil)
|
165
|
+
if System.valid_cache?(file_name) && exists? && (driver_build == browser_build)
|
166
|
+
cached_version = System.cached_version(file_name)
|
167
|
+
Webdrivers.logger.debug "using cached version as latest: #{cached_version}"
|
168
|
+
normalize_version cached_version
|
163
169
|
else
|
164
170
|
version = yield
|
165
171
|
System.cache_version(file_name, version)
|
@@ -37,7 +37,10 @@ module Webdrivers
|
|
37
37
|
|
38
38
|
def win_location
|
39
39
|
envs = %w[LOCALAPPDATA PROGRAMFILES PROGRAMFILES(X86)]
|
40
|
-
directories = ['\\Microsoft\\Edge
|
40
|
+
directories = ['\\Microsoft\\Edge\\Application',
|
41
|
+
'\\Microsoft\\Edge Beta\\Application',
|
42
|
+
'\\Microsoft\\Edge Dev\\Application',
|
43
|
+
'\\Microsoft\\Edge SxS\\Application']
|
41
44
|
file = 'msedge.exe'
|
42
45
|
|
43
46
|
directories.each do |dir|
|
@@ -52,6 +55,7 @@ module Webdrivers
|
|
52
55
|
def mac_location
|
53
56
|
directories = ['', File.expand_path('~')]
|
54
57
|
files = ['/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
|
58
|
+
'/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta',
|
55
59
|
'/Applications/Microsoft Edge Dev.app/Contents/MacOS/Microsoft Edge Dev',
|
56
60
|
'/Applications/Microsoft Edge Canary.app/Contents/MacOS/Microsoft Edge Canary']
|
57
61
|
|
@@ -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
|
-
|
62
|
-
|
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>` "\
|
data/lib/webdrivers/iedriver.rb
CHANGED
@@ -44,16 +44,19 @@ module Webdrivers
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def downloads
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
data/lib/webdrivers/network.rb
CHANGED
data/lib/webdrivers/system.rb
CHANGED
@@ -148,6 +148,25 @@ module Webdrivers
|
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
+
# @return [TrueClass, FalseClass]
|
152
|
+
def wsl?
|
153
|
+
platform == 'linux' && File.open('/proc/version').read.downcase.include?('microsoft')
|
154
|
+
end
|
155
|
+
|
156
|
+
# @param [String] path
|
157
|
+
# @return [String]
|
158
|
+
def to_win32_path(path)
|
159
|
+
return path if /[a-z]:\\/iu.match?(path)
|
160
|
+
|
161
|
+
call("wslpath -w '#{path}'").chomp
|
162
|
+
end
|
163
|
+
|
164
|
+
# @param [String] path
|
165
|
+
# @return [String]
|
166
|
+
def to_wsl_path(path)
|
167
|
+
call("wslpath -u '#{path}'").chomp
|
168
|
+
end
|
169
|
+
|
151
170
|
def bitsize
|
152
171
|
Selenium::WebDriver::Platform.bitsize
|
153
172
|
end
|
data/lib/webdrivers/version.rb
CHANGED
@@ -47,4 +47,57 @@ describe Webdrivers::ChromeFinder do
|
|
47
47
|
expect { chrome_finder.version }.to raise_error(Webdrivers::BrowserNotFound)
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
context 'when running in WSL' do
|
52
|
+
before do
|
53
|
+
skip "The current platform cannot be WSL, as it's not Linux" unless Selenium::WebDriver::Platform.linux?
|
54
|
+
|
55
|
+
allow(Webdrivers::System).to receive(:wsl?).and_return(true)
|
56
|
+
allow(Webdrivers::System).to receive(:to_wsl_path).and_return('')
|
57
|
+
allow(Webdrivers::System).to receive(:to_win32_path).and_return('')
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'checks Windows locations for Chrome' do
|
61
|
+
drive = 'c'
|
62
|
+
user = 'WinUser'
|
63
|
+
file = 'chrome.exe'
|
64
|
+
path = [
|
65
|
+
'/home/wsl-user/.local/bin',
|
66
|
+
'/usr/local/bin',
|
67
|
+
'/usr/local/games',
|
68
|
+
'/usr/bin',
|
69
|
+
"/#{drive}/Users/#{user}/AppData/Local/Microsoft/WindowsApps",
|
70
|
+
'/snap/bin'
|
71
|
+
].join ':'
|
72
|
+
|
73
|
+
allow(chrome_finder).to receive(:user_defined_location).and_return(nil)
|
74
|
+
allow(ENV).to receive(:[]).with('WD_CHROME_PATH').and_return(nil)
|
75
|
+
allow(ENV).to receive(:[]).with('PATH').and_return(path)
|
76
|
+
allow(File).to receive(:exist?).and_return(false)
|
77
|
+
|
78
|
+
locations = [
|
79
|
+
"#{drive}:\\Users\\#{user}\\AppData\\Local\\Google\\Chrome\\Application\\#{file}",
|
80
|
+
"#{drive}:\\Program Files (x86)\\Chromium\\Application\\#{file}",
|
81
|
+
"#{drive}:\\Program Files\\Google\\Chrome\\Application\\#{file}"
|
82
|
+
]
|
83
|
+
|
84
|
+
# CIs don't support WSL yet, so our mocks lead to the error path for simplicity
|
85
|
+
expect { chrome_finder.location }.to raise_error(Webdrivers::BrowserNotFound)
|
86
|
+
|
87
|
+
locations.each do |dir|
|
88
|
+
expect(Webdrivers::System).to have_received(:to_wsl_path).with(dir)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'uses win_version to get the Chrome version using win32 path' do
|
93
|
+
allow(chrome_finder).to receive(:win_version).and_return('')
|
94
|
+
allow(File).to receive(:exist?).and_return(true)
|
95
|
+
|
96
|
+
# CIs don't support WSL yet, so our mocks lead to the error path for simplicity
|
97
|
+
expect { chrome_finder.version }.to raise_error(Webdrivers::VersionError)
|
98
|
+
|
99
|
+
expect(Webdrivers::System).to have_received(:to_win32_path)
|
100
|
+
expect(chrome_finder).to have_received(:win_version)
|
101
|
+
end
|
102
|
+
end
|
50
103
|
end
|
@@ -106,15 +106,16 @@ describe Webdrivers::Chromedriver do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
-
it 'makes
|
109
|
+
it 'makes network calls if cached driver does not match the browser' do
|
110
110
|
Webdrivers::System.cache_version('chromedriver', '71.0.3578.137')
|
111
|
+
allow(chromedriver).to receive(:current_version).and_return(Gem::Version.new('71.0.3578.137'))
|
111
112
|
allow(chromedriver).to receive(:browser_version).and_return(Gem::Version.new('73.0.3683.68'))
|
112
113
|
allow(Webdrivers::Network).to receive(:get).and_return('73.0.3683.68')
|
113
114
|
allow(Webdrivers::System).to receive(:download)
|
114
115
|
|
115
116
|
chromedriver.update
|
116
117
|
|
117
|
-
expect(Webdrivers::Network).to have_received(:get).
|
118
|
+
expect(Webdrivers::Network).to have_received(:get).twice
|
118
119
|
end
|
119
120
|
|
120
121
|
context 'when required version is 0' do
|
@@ -155,19 +156,19 @@ describe Webdrivers::Chromedriver do
|
|
155
156
|
|
156
157
|
describe '#latest_version' do
|
157
158
|
it 'returns 2.41 if the browser version is less than 70' do
|
158
|
-
allow(chromedriver).to receive(:browser_version).and_return('69.0.0')
|
159
|
+
allow(chromedriver).to receive(:browser_version).and_return Gem::Version.new('69.0.0')
|
159
160
|
|
160
161
|
expect(chromedriver.latest_version).to eq(Gem::Version.new('2.41'))
|
161
162
|
end
|
162
163
|
|
163
164
|
it 'returns the correct point release for a production version greater than 70' do
|
164
|
-
allow(chromedriver).to receive(:browser_version).and_return '71.0.3578.9999'
|
165
|
+
allow(chromedriver).to receive(:browser_version).and_return Gem::Version.new('71.0.3578.9999')
|
165
166
|
|
166
167
|
expect(chromedriver.latest_version).to eq Gem::Version.new('71.0.3578.137')
|
167
168
|
end
|
168
169
|
|
169
170
|
it 'raises VersionError for beta version' do
|
170
|
-
allow(chromedriver).to receive(:browser_version).and_return('100.0.0')
|
171
|
+
allow(chromedriver).to receive(:browser_version).and_return Gem::Version.new('100.0.0')
|
171
172
|
msg = 'Unable to find latest point release version for 100.0.0. '\
|
172
173
|
'You appear to be using a non-production version of Chrome. '\
|
173
174
|
'Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` '\
|
@@ -177,7 +178,7 @@ describe Webdrivers::Chromedriver do
|
|
177
178
|
end
|
178
179
|
|
179
180
|
it 'raises VersionError for unknown version' do
|
180
|
-
allow(chromedriver).to receive(:browser_version).and_return('72.0.9999.0000')
|
181
|
+
allow(chromedriver).to receive(:browser_version).and_return Gem::Version.new('72.0.9999.0000')
|
181
182
|
msg = 'Unable to find latest point release version for 72.0.9999. '\
|
182
183
|
'Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` '\
|
183
184
|
'to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html'
|
@@ -199,9 +200,12 @@ describe Webdrivers::Chromedriver do
|
|
199
200
|
expect(File.exist?("#{Webdrivers::System.install_dir}/chromedriver.version")).to eq true
|
200
201
|
end
|
201
202
|
|
202
|
-
it 'does not make network
|
203
|
+
it 'does not make network calls if cache is valid and driver exists' do
|
203
204
|
allow(Webdrivers).to receive(:cache_time).and_return(3600)
|
204
205
|
Webdrivers::System.cache_version('chromedriver', '71.0.3578.137')
|
206
|
+
allow(chromedriver).to receive(:current_version).and_return Gem::Version.new('71.0.3578.137')
|
207
|
+
allow(chromedriver).to receive(:browser_version).and_return Gem::Version.new('71.0.3578.137')
|
208
|
+
allow(Webdrivers::System).to receive(:exists?).and_return(true)
|
205
209
|
allow(Webdrivers::Network).to receive(:get)
|
206
210
|
|
207
211
|
expect(chromedriver.latest_version).to eq Gem::Version.new('71.0.3578.137')
|
@@ -209,10 +213,11 @@ describe Webdrivers::Chromedriver do
|
|
209
213
|
expect(Webdrivers::Network).not_to have_received(:get)
|
210
214
|
end
|
211
215
|
|
212
|
-
it 'makes
|
216
|
+
it 'makes network calls if cache is expired' do
|
213
217
|
Webdrivers::System.cache_version('chromedriver', '71.0.3578.137')
|
218
|
+
allow(chromedriver).to receive(:browser_version).and_return Gem::Version.new('71.0.3578.137')
|
214
219
|
allow(Webdrivers::Network).to receive(:get).and_return('73.0.3683.68')
|
215
|
-
allow(Webdrivers::System).to receive(:valid_cache?)
|
220
|
+
allow(Webdrivers::System).to receive(:valid_cache?).and_return(false)
|
216
221
|
|
217
222
|
expect(chromedriver.latest_version).to eq Gem::Version.new('73.0.3683.68')
|
218
223
|
|
@@ -114,15 +114,16 @@ describe Webdrivers::Edgedriver do
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
-
it 'makes
|
117
|
+
it 'makes network calls if cached driver does not match the browser' do
|
118
118
|
Webdrivers::System.cache_version('msedgedriver', '71.0.3578.137')
|
119
|
-
allow(edgedriver).to receive(:
|
119
|
+
allow(edgedriver).to receive(:current_version).and_return Gem::Version.new('71.0.3578.137')
|
120
|
+
allow(edgedriver).to receive(:browser_version).and_return Gem::Version.new('73.0.3683.68')
|
120
121
|
allow(Webdrivers::Network).to receive(:get).and_return('73.0.3683.68'.encode('UTF-16'))
|
121
122
|
allow(Webdrivers::System).to receive(:download)
|
122
123
|
|
123
124
|
edgedriver.update
|
124
125
|
|
125
|
-
expect(Webdrivers::Network).to have_received(:get).
|
126
|
+
expect(Webdrivers::Network).to have_received(:get).twice
|
126
127
|
end
|
127
128
|
|
128
129
|
context 'when required version is 0' do
|
@@ -163,13 +164,13 @@ describe Webdrivers::Edgedriver do
|
|
163
164
|
|
164
165
|
describe '#latest_version' do
|
165
166
|
it 'returns the correct point release for a production version' do
|
166
|
-
allow(edgedriver).to receive(:browser_version).and_return '77.0.207.0'
|
167
|
+
allow(edgedriver).to receive(:browser_version).and_return Gem::Version.new('77.0.207.0')
|
167
168
|
|
168
169
|
expect(edgedriver.latest_version).to be_between(Gem::Version.new('77.0.207.0'), Gem::Version.new('78'))
|
169
170
|
end
|
170
171
|
|
171
172
|
it 'raises VersionError for beta version' do
|
172
|
-
allow(edgedriver).to receive(:browser_version).and_return('100.0.0')
|
173
|
+
allow(edgedriver).to receive(:browser_version).and_return Gem::Version.new('100.0.0')
|
173
174
|
msg = 'Unable to find latest point release version for 100.0.0. '\
|
174
175
|
'You appear to be using a non-production version of Edge. '\
|
175
176
|
'Please set `Webdrivers::Edgedriver.required_version = <desired driver version>` '\
|
@@ -196,28 +197,31 @@ describe Webdrivers::Edgedriver do
|
|
196
197
|
end
|
197
198
|
|
198
199
|
it 'creates cached file' do
|
199
|
-
allow(edgedriver).to receive(:browser_version).and_return('77.0.207.0')
|
200
|
+
allow(edgedriver).to receive(:browser_version).and_return Gem::Version.new('77.0.207.0')
|
200
201
|
allow(Webdrivers::Network).to receive(:get).and_return('77.0.207.0'.encode('UTF-16'))
|
201
202
|
|
202
203
|
edgedriver.latest_version
|
203
204
|
expect(File.exist?("#{Webdrivers::System.install_dir}/msedgedriver.version")).to eq true
|
204
205
|
end
|
205
206
|
|
206
|
-
it 'does not make network
|
207
|
+
it 'does not make network calls if cache is valid and driver exists' do
|
207
208
|
allow(Webdrivers).to receive(:cache_time).and_return(3600)
|
208
|
-
Webdrivers::System.cache_version('msedgedriver', '
|
209
|
+
Webdrivers::System.cache_version('msedgedriver', '82.0.445.0')
|
210
|
+
allow(edgedriver).to receive(:current_version).and_return Gem::Version.new('82.0.445.0')
|
211
|
+
allow(edgedriver).to receive(:browser_version).and_return Gem::Version.new('82.0.445.0')
|
212
|
+
allow(Webdrivers::System).to receive(:exists?).and_return(true)
|
209
213
|
allow(Webdrivers::Network).to receive(:get)
|
210
214
|
|
211
|
-
expect(edgedriver.latest_version).to eq Gem::Version.new('
|
215
|
+
expect(edgedriver.latest_version).to eq Gem::Version.new('82.0.445.0')
|
212
216
|
|
213
217
|
expect(Webdrivers::Network).not_to have_received(:get)
|
214
218
|
end
|
215
219
|
|
216
|
-
it 'makes
|
220
|
+
it 'makes network calls if cache is expired' do
|
217
221
|
Webdrivers::System.cache_version('msedgedriver', '71.0.3578.137')
|
218
222
|
allow(Webdrivers::Network).to receive(:get).and_return('77.0.207.0'.encode('UTF-16'))
|
219
|
-
allow(Webdrivers::System).to receive(:valid_cache?)
|
220
|
-
allow(edgedriver).to receive(:browser_version).and_return('77.0.207.0')
|
223
|
+
allow(Webdrivers::System).to receive(:valid_cache?).and_return(false)
|
224
|
+
allow(edgedriver).to receive(:browser_version).and_return Gem::Version.new('77.0.207.0')
|
221
225
|
|
222
226
|
expect(edgedriver.latest_version).to eq Gem::Version.new('77.0.207.0')
|
223
227
|
|
@@ -135,9 +135,10 @@ You can obtain a copy of the license at https://mozilla.org/MPL/2.0/"
|
|
135
135
|
expect(File.exist?("#{Webdrivers::System.install_dir}/geckodriver.version")).to eq true
|
136
136
|
end
|
137
137
|
|
138
|
-
it 'does not make network
|
138
|
+
it 'does not make network calls if cache is valid and driver exists' do
|
139
139
|
allow(Webdrivers).to receive(:cache_time).and_return(3600)
|
140
140
|
Webdrivers::System.cache_version('geckodriver', '0.23.0')
|
141
|
+
allow(Webdrivers::System).to receive(:exists?).and_return(true)
|
141
142
|
allow(Webdrivers::Network).to receive(:get)
|
142
143
|
|
143
144
|
expect(geckodriver.latest_version).to eq Gem::Version.new('0.23.0')
|
@@ -115,9 +115,10 @@ describe Webdrivers::IEdriver do
|
|
115
115
|
expect(File.exist?("#{Webdrivers::System.install_dir}/IEDriverServer.version")).to eq true
|
116
116
|
end
|
117
117
|
|
118
|
-
it 'does not make network
|
118
|
+
it 'does not make network calls if cache is valid and driver exists' do
|
119
119
|
allow(Webdrivers).to receive(:cache_time).and_return(3600)
|
120
120
|
Webdrivers::System.cache_version('IEDriverServer', '3.4.0')
|
121
|
+
allow(Webdrivers::System).to receive(:exists?).and_return(true)
|
121
122
|
allow(Webdrivers::Network).to receive(:get)
|
122
123
|
|
123
124
|
expect(iedriver.latest_version).to eq Gem::Version.new('3.4.0')
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
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
|
+
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' }
|
17
|
+
|
18
|
+
it 'checks /proc/version' do
|
19
|
+
allow(File).to receive(:open).with('/proc/version').and_return(StringIO.new(wsl_proc_contents))
|
20
|
+
|
21
|
+
expect(described_class.wsl?).to eq true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when the current platform is mac' do
|
26
|
+
before { allow(described_class).to receive(:platform).and_return 'mac' }
|
27
|
+
|
28
|
+
it 'does not bother checking proc' do
|
29
|
+
allow(File).to receive(:open).and_call_original
|
30
|
+
|
31
|
+
expect(described_class.wsl?).to eq false
|
32
|
+
|
33
|
+
expect(File).not_to have_received(:open).with('/proc/version')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#to_win32_path' do
|
39
|
+
before { allow(described_class).to receive(:call).and_return("C:\\path\\to\\folder\n") }
|
40
|
+
|
41
|
+
it 'uses wslpath' do
|
42
|
+
described_class.to_win32_path '/c/path/to/folder'
|
43
|
+
|
44
|
+
expect(described_class).to have_received(:call).with('wslpath -w \'/c/path/to/folder\'')
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'removes the trailing newline' do
|
48
|
+
expect(described_class.to_win32_path('/c/path/to/folder')).not_to end_with('\n')
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when the path is already in Windows format' do
|
52
|
+
it 'returns early' do
|
53
|
+
expect(described_class.to_win32_path('D:\\')).to eq 'D:\\'
|
54
|
+
|
55
|
+
expect(described_class).not_to have_received(:call)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#to_wsl_path' do
|
61
|
+
before { allow(described_class).to receive(:call).and_return("/c/path/to/folder\n") }
|
62
|
+
|
63
|
+
it 'uses wslpath' do
|
64
|
+
described_class.to_wsl_path 'C:\\path\\to\\folder'
|
65
|
+
|
66
|
+
expect(described_class).to have_received(:call).with('wslpath -u \'C:\\path\\to\\folder\'')
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'removes the trailing newline' do
|
70
|
+
expect(described_class.to_wsl_path('/c/path/to/folder')).not_to end_with('\n')
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webdrivers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Titus Fortner
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2020-12-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ffi
|
@@ -27,61 +27,61 @@ dependencies:
|
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '1.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - "
|
33
|
+
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '0'
|
35
|
+
version: '12.0'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - "
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '0'
|
42
|
+
version: '12.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
44
|
+
name: rspec
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '3.0'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
56
|
+
version: '3.0'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
58
|
+
name: rubocop
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
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: '
|
70
|
+
version: '0.89'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
|
-
name: rubocop
|
72
|
+
name: rubocop-packaging
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 0.5.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
84
|
+
version: 0.5.0
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: rubocop-performance
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,14 +102,14 @@ dependencies:
|
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: '1.
|
105
|
+
version: '1.42'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: '1.
|
112
|
+
version: '1.42'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: simplecov
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -181,17 +181,9 @@ executables: []
|
|
181
181
|
extensions: []
|
182
182
|
extra_rdoc_files: []
|
183
183
|
files:
|
184
|
-
- ".github/ISSUE_TEMPLATE.md"
|
185
|
-
- ".gitignore"
|
186
|
-
- ".rubocop.yml"
|
187
|
-
- ".travis.yml"
|
188
184
|
- CHANGELOG.md
|
189
|
-
- Gemfile
|
190
185
|
- LICENSE.txt
|
191
186
|
- README.md
|
192
|
-
- Rakefile
|
193
|
-
- appveyor.yml
|
194
|
-
- gemfiles/Gemfile.edge
|
195
187
|
- lib/webdrivers.rb
|
196
188
|
- lib/webdrivers/Rakefile
|
197
189
|
- lib/webdrivers/chrome_finder.rb
|
@@ -217,15 +209,17 @@ files:
|
|
217
209
|
- spec/webdrivers/edgedriver_spec.rb
|
218
210
|
- spec/webdrivers/geckodriver_spec.rb
|
219
211
|
- spec/webdrivers/i_edriver_spec.rb
|
212
|
+
- spec/webdrivers/system_spec.rb
|
220
213
|
- spec/webdrivers/webdrivers_spec.rb
|
221
214
|
- spec/webdrivers_proxy_support_spec.rb
|
222
|
-
- support/install_jruby.ps1
|
223
|
-
- support/install_msedge.ps1
|
224
|
-
- webdrivers.gemspec
|
225
215
|
homepage: https://github.com/titusfortner/webdrivers
|
226
216
|
licenses:
|
227
217
|
- MIT
|
228
|
-
metadata:
|
218
|
+
metadata:
|
219
|
+
bug_tracker_uri: https://github.com/titusfortner/webdrivers/issues
|
220
|
+
changelog_uri: https://github.com/titusfortner/webdrivers/blob/master/CHANGELOG.md
|
221
|
+
documentation_uri: https://www.rubydoc.info/gems/webdrivers/4.4.2
|
222
|
+
source_code_uri: https://github.com/titusfortner/webdrivers/tree/v4.4.2
|
229
223
|
post_install_message:
|
230
224
|
rdoc_options: []
|
231
225
|
require_paths:
|
@@ -234,15 +228,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
234
228
|
requirements:
|
235
229
|
- - ">="
|
236
230
|
- !ruby/object:Gem::Version
|
237
|
-
version:
|
231
|
+
version: 2.4.0
|
238
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
233
|
requirements:
|
240
234
|
- - ">="
|
241
235
|
- !ruby/object:Gem::Version
|
242
236
|
version: '0'
|
243
237
|
requirements: []
|
244
|
-
rubygems_version: 3.
|
238
|
+
rubygems_version: 3.1.4
|
245
239
|
signing_key:
|
246
240
|
specification_version: 4
|
247
241
|
summary: Easy download and use of browser drivers.
|
248
|
-
test_files:
|
242
|
+
test_files:
|
243
|
+
- spec/spec_helper.rb
|
244
|
+
- spec/webdrivers/chrome_finder_spec.rb
|
245
|
+
- spec/webdrivers/edge_finder_spec.rb
|
246
|
+
- spec/webdrivers/webdrivers_spec.rb
|
247
|
+
- spec/webdrivers/system_spec.rb
|
248
|
+
- spec/webdrivers/edgedriver_spec.rb
|
249
|
+
- spec/webdrivers/i_edriver_spec.rb
|
250
|
+
- spec/webdrivers/geckodriver_spec.rb
|
251
|
+
- spec/webdrivers/chromedriver_spec.rb
|
252
|
+
- spec/webdrivers_proxy_support_spec.rb
|
data/.github/ISSUE_TEMPLATE.md
DELETED
@@ -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
data/.rubocop.yml
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
AllCops:
|
2
|
-
TargetRubyVersion: 2.4.6
|
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
|
-
Metrics/LineLength:
|
15
|
-
Max: 120
|
16
|
-
IgnoredPatterns:
|
17
|
-
- '\s+# rubocop:disable'
|
18
|
-
|
19
|
-
Metrics/MethodLength:
|
20
|
-
Max: 20
|
21
|
-
|
22
|
-
Metrics/BlockLength:
|
23
|
-
Exclude:
|
24
|
-
- 'spec/**/*'
|
25
|
-
- 'lib/webdrivers/tasks/*.rake'
|
26
|
-
|
27
|
-
Metrics/ClassLength:
|
28
|
-
Max: 116
|
29
|
-
Exclude:
|
30
|
-
- 'lib/webdrivers/system.rb'
|
31
|
-
|
32
|
-
Metrics/CyclomaticComplexity:
|
33
|
-
Max: 8
|
34
|
-
|
35
|
-
Metrics/AbcSize:
|
36
|
-
Max: 16
|
37
|
-
Exclude:
|
38
|
-
- 'lib/webdrivers/chromedriver.rb'
|
39
|
-
|
40
|
-
Style/Documentation:
|
41
|
-
Enabled: false
|
42
|
-
|
43
|
-
RSpec/ExampleLength:
|
44
|
-
Enabled: false
|
45
|
-
|
46
|
-
RSpec/MultipleExpectations:
|
47
|
-
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
|
12
|
-
- gem update bundler
|
13
|
-
matrix:
|
14
|
-
include:
|
15
|
-
- rvm: 2.6.3
|
16
|
-
env: RAKE_TASK=spec
|
17
|
-
- rvm: 2.5.5
|
18
|
-
env: RAKE_TASK=spec
|
19
|
-
- rvm: 2.4.6
|
20
|
-
env: RAKE_TASK=spec
|
21
|
-
- rvm: 2.4.6
|
22
|
-
os: osx
|
23
|
-
env: RAKE_TASK=spec
|
24
|
-
- rvm: 2.4.6
|
25
|
-
env: RAKE_TASK=rubocop
|
26
|
-
- rvm: jruby-9.2.7.0
|
27
|
-
jdk: openjdk8
|
28
|
-
env: RAKE_TASK=spec
|
29
|
-
- rvm: 2.6
|
30
|
-
env: RAKE_TASK=spec
|
31
|
-
gemfile: gemfiles/Gemfile.edge
|
32
|
-
os: osx
|
33
|
-
osx_image: xcode10.2
|
34
|
-
addons:
|
35
|
-
chrome: stable
|
36
|
-
homebrew:
|
37
|
-
taps: homebrew/cask-versions
|
38
|
-
casks:
|
39
|
-
- microsoft-edge-dev
|
40
|
-
allow_failures:
|
41
|
-
- gemfile: gemfiles/Gemfile.edge
|
data/Gemfile
DELETED
data/Rakefile
DELETED
data/appveyor.yml
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
build: off
|
2
|
-
cache:
|
3
|
-
- vendor/bundle
|
4
|
-
image:
|
5
|
-
- Visual Studio 2017
|
6
|
-
environment:
|
7
|
-
matrix:
|
8
|
-
- RUBY_VERSION: Ruby24
|
9
|
-
RUBY_BIN: ruby
|
10
|
-
RAKE_TASK: spec
|
11
|
-
SCRIPT_CONTEXT: bundle exec
|
12
|
-
- RUBY_VERSION: Ruby24
|
13
|
-
RUBY_BIN: ruby
|
14
|
-
RAKE_TASK: rubocop
|
15
|
-
SCRIPT_CONTEXT: bundle exec
|
16
|
-
- RUBY_VERSION: Ruby25
|
17
|
-
RUBY_BIN: ruby
|
18
|
-
RAKE_TASK: spec
|
19
|
-
SCRIPT_CONTEXT: bundle exec
|
20
|
-
- RUBY_VERSION: Ruby26
|
21
|
-
RUBY_BIN: ruby
|
22
|
-
RAKE_TASK: spec
|
23
|
-
SCRIPT_CONTEXT: bundle exec
|
24
|
-
- RUBY_VERSION: jruby-9.2.7.0
|
25
|
-
RUBY_BIN: jruby
|
26
|
-
RAKE_TASK: spec
|
27
|
-
SCRIPT_CONTEXT: jruby -G -S
|
28
|
-
- RUBY_VERSION: Ruby26
|
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'
|
38
|
-
- '%RUBY_BIN% -S gem install bundler'
|
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/gemfiles/Gemfile.edge
DELETED
data/support/install_jruby.ps1
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
$downloadLink = "https://repo1.maven.org/maven2/org/jruby/jruby-dist/9.2.7.0/jruby-dist-9.2.7.0-bin.zip"
|
2
|
-
$zipPath = "c:\jruby-dist-9.2.7.0-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
|
data/support/install_msedge.ps1
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
$downloadDevLink = "https://go.microsoft.com/fwlink/?linkid=2069324&Channel=Dev&language=en-us&Consent=0&IID=85213fc4-6a13-57ae-9082-72910982ede8"
|
2
|
-
$downloadCanaryLink = "https://go.microsoft.com/fwlink/?linkid=2084706&Channel=Canary&language=en-us&Consent=0&IID=85213fc4-6a13-57ae-9082-72910982ede8"
|
3
|
-
$devSetup = "C:\MicrosoftEdgeSetupDev.exe"
|
4
|
-
$canarySetup = "C:\MicrosoftEdgeSetupCanary.exe"
|
5
|
-
|
6
|
-
# Note: We're purposely skipping the -Wait flag in Start-Process.
|
7
|
-
# This is because Edge auto-launches after the setup is done and
|
8
|
-
# Start-Process continues to indefinitely wait on that process.
|
9
|
-
Write-Host "Installing Microsoft Edge (Dev)..." -ForegroundColor cyan
|
10
|
-
Invoke-WebRequest $downloadDevLink -OutFile $devSetup # Download Dev
|
11
|
-
Start-Process $devSetup # Run installer
|
12
|
-
Write-Host "Microsoft Edge (Dev) installed.`n" -ForegroundColor green
|
13
|
-
|
14
|
-
Write-Host "Installing Microsoft Edge (Canary)..." -ForegroundColor cyan
|
15
|
-
Invoke-WebRequest $downloadCanaryLink -OutFile $canarySetup # Download Canary
|
16
|
-
Start-Process $canarySetup # Run installer
|
17
|
-
Write-Host "Microsoft Edge (Canary) installed.`n" -ForegroundColor green
|
data/webdrivers.gemspec
DELETED
@@ -1,34 +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.authors = ['Titus Fortner', 'Lakshya Kapoor', 'Thomas Walpole']
|
11
|
-
s.email = %w[titusfortner@gmail.com kapoorlakshya@gmail.com]
|
12
|
-
s.homepage = 'https://github.com/titusfortner/webdrivers'
|
13
|
-
s.summary = 'Easy download and use of browser drivers.'
|
14
|
-
s.description = 'Run Selenium tests more easily with install and updates for all supported webdrivers.'
|
15
|
-
s.licenses = ['MIT']
|
16
|
-
|
17
|
-
s.files = `git ls-files`.split("\n")
|
18
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
20
|
-
s.require_paths = ['lib']
|
21
|
-
|
22
|
-
s.add_development_dependency 'ffi', '~> 1.0' # For selenium-webdriver on Windows
|
23
|
-
s.add_development_dependency 'irb'
|
24
|
-
s.add_development_dependency 'rake', '~> 12.0'
|
25
|
-
s.add_development_dependency 'rspec', '~> 3.0'
|
26
|
-
s.add_development_dependency 'rubocop', '~>0.66'
|
27
|
-
s.add_development_dependency 'rubocop-performance'
|
28
|
-
s.add_development_dependency 'rubocop-rspec', '~>1.32'
|
29
|
-
s.add_development_dependency 'simplecov', '~>0.16'
|
30
|
-
|
31
|
-
s.add_runtime_dependency 'nokogiri', '~> 1.6'
|
32
|
-
s.add_runtime_dependency 'rubyzip', '>= 1.3.0'
|
33
|
-
s.add_runtime_dependency 'selenium-webdriver', '>= 3.0', '< 4.0'
|
34
|
-
end
|