webdrivers 2.3.2 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +204 -56
  3. data/LICENSE.txt +2 -2
  4. data/README.md +253 -17
  5. data/lib/webdrivers/Rakefile +6 -0
  6. data/lib/webdrivers/chrome_finder.rb +127 -0
  7. data/lib/webdrivers/chromedriver.rb +131 -23
  8. data/lib/webdrivers/common.rb +145 -70
  9. data/lib/webdrivers/edge_finder.rb +99 -0
  10. data/lib/webdrivers/edgedriver.rb +87 -17
  11. data/lib/webdrivers/geckodriver.rb +46 -25
  12. data/lib/webdrivers/iedriver.rb +51 -18
  13. data/lib/webdrivers/logger.rb +111 -0
  14. data/lib/webdrivers/network.rb +63 -0
  15. data/lib/webdrivers/railtie.rb +15 -0
  16. data/lib/webdrivers/system.rb +197 -0
  17. data/lib/webdrivers/tasks/chromedriver.rake +44 -0
  18. data/lib/webdrivers/tasks/edgedriver.rake +44 -0
  19. data/lib/webdrivers/tasks/geckodriver.rake +44 -0
  20. data/lib/webdrivers/tasks/iedriver.rake +44 -0
  21. data/lib/webdrivers/version.rb +5 -0
  22. data/lib/webdrivers.rb +7 -9
  23. data/spec/spec_helper.rb +18 -2
  24. data/spec/webdrivers/chrome_finder_spec.rb +103 -0
  25. data/spec/webdrivers/chromedriver_spec.rb +276 -0
  26. data/spec/webdrivers/edge_finder_spec.rb +58 -0
  27. data/spec/webdrivers/edgedriver_spec.rb +279 -0
  28. data/spec/webdrivers/geckodriver_spec.rb +211 -0
  29. data/spec/webdrivers/i_edriver_spec.rb +197 -0
  30. data/spec/webdrivers/system_spec.rb +79 -0
  31. data/spec/webdrivers/webdrivers_spec.rb +80 -0
  32. data/spec/webdrivers_proxy_support_spec.rb +53 -0
  33. metadata +157 -43
  34. data/.gitignore +0 -6
  35. data/.travis.yml +0 -3
  36. data/Gemfile +0 -4
  37. data/Rakefile +0 -6
  38. data/bin/IEDriverServer +0 -5
  39. data/bin/MicrosoftWebDriver +0 -5
  40. data/bin/chromedriver +0 -5
  41. data/bin/geckodriver +0 -5
  42. data/bin/phantomjs +0 -5
  43. data/lib/webdrivers/phantomjs.rb +0 -40
  44. data/spec/chromedriver_spec.rb +0 -36
  45. data/spec/edgedriver_spec.rb +0 -24
  46. data/spec/geckodriver_spec.rb +0 -36
  47. data/spec/iedriver_spec.rb +0 -27
  48. data/spec/phantomjs_spec.rb +0 -36
  49. data/webdrivers.gemspec +0 -24
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Webdrivers::System do
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
13
+
14
+ let(:platform) { 'linux' }
15
+ let(:wsl_proc_version_contents) { '' }
16
+
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
+ end
23
+
24
+ it { is_expected.to eq true }
25
+ end
26
+
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
33
+
34
+ it { is_expected.to eq false }
35
+ end
36
+
37
+ context 'when the current platform is mac' do
38
+ let(:platform) { 'mac' }
39
+
40
+ it { is_expected.to eq false }
41
+ end
42
+ end
43
+
44
+ describe '#to_win32_path' do
45
+ before { allow(described_class).to receive(:call).and_return("C:\\path\\to\\folder\n") }
46
+
47
+ it 'uses wslpath' do
48
+ described_class.to_win32_path '/c/path/to/folder'
49
+
50
+ expect(described_class).to have_received(:call).with('wslpath -w \'/c/path/to/folder\'')
51
+ end
52
+
53
+ it 'removes the trailing newline' do
54
+ expect(described_class.to_win32_path('/c/path/to/folder')).not_to end_with('\n')
55
+ end
56
+
57
+ context 'when the path is already in Windows format' do
58
+ it 'returns early' do
59
+ expect(described_class.to_win32_path('D:\\')).to eq 'D:\\'
60
+
61
+ expect(described_class).not_to have_received(:call)
62
+ end
63
+ end
64
+ end
65
+
66
+ describe '#to_wsl_path' do
67
+ before { allow(described_class).to receive(:call).and_return("/c/path/to/folder\n") }
68
+
69
+ it 'uses wslpath' do
70
+ described_class.to_wsl_path 'C:\\path\\to\\folder'
71
+
72
+ expect(described_class).to have_received(:call).with('wslpath -u \'C:\\path\\to\\folder\'')
73
+ end
74
+
75
+ it 'removes the trailing newline' do
76
+ expect(described_class.to_wsl_path('/c/path/to/folder')).not_to end_with('\n')
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Webdrivers do
6
+ describe '#cache_time' do
7
+ before { Webdrivers::Chromedriver.remove }
8
+
9
+ after { described_class.cache_time = nil }
10
+
11
+ context 'when cache time is not set' do
12
+ before { described_class.cache_time = nil }
13
+
14
+ it 'defaults cache time to 86,400 Seconds (24 hours)' do
15
+ expect(described_class.cache_time).to eq(86_400)
16
+ end
17
+ end
18
+
19
+ context 'when Webdrivers.cache_time is set' do
20
+ before { described_class.cache_time = '999' }
21
+
22
+ it 'returns user defined cache time' do
23
+ expect(described_class.cache_time).to eq(999)
24
+ end
25
+
26
+ it 'returns cache time as an Integer' do
27
+ expect(described_class.cache_time).to be_an_instance_of(Integer)
28
+ end
29
+ end
30
+
31
+ context 'when ENV variable WD_CACHE_TIME is set' do
32
+ before { described_class.cache_time = 3600 }
33
+
34
+ it 'uses cache time value from Webdrivers.cache_time over the ENV variable value' do
35
+ allow(ENV).to receive(:[]).with('WD_CACHE_TIME').and_return(900)
36
+ expect(described_class.cache_time).to be(3600)
37
+ end
38
+
39
+ it 'returns cache time as an Integer' do
40
+ allow(ENV).to receive(:fetch).with('WD_CACHE_TIME', 3600).and_return('999')
41
+ expect(described_class.cache_time).to be_an_instance_of(Integer)
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#install_dir' do
47
+ it 'uses ~/.webdrivers as default value' do
48
+ expect(described_class.install_dir).to include('.webdriver')
49
+ end
50
+
51
+ it 'uses provided value' do
52
+ install_dir = File.expand_path(File.join(ENV['HOME'], '.webdrivers2'))
53
+ described_class.install_dir = install_dir
54
+
55
+ expect(described_class.install_dir).to eq install_dir
56
+ ensure
57
+ described_class.install_dir = nil
58
+ end
59
+
60
+ context 'when ENV variable WD_INSTALL_DIR is set and Webdrivers.install_dir is not' do
61
+ it 'uses path from the ENV variable' do
62
+ described_class.install_dir = nil
63
+ allow(ENV).to receive(:[]).with('WD_INSTALL_DIR').and_return('custom_dir')
64
+ expect(described_class.install_dir).to be('custom_dir')
65
+ ensure
66
+ described_class.install_dir = nil
67
+ end
68
+ end
69
+
70
+ context 'when both ENV variable WD_INSTALL_DIR and Webdrivers.install_dir are set' do
71
+ it 'uses path from Webdrivers.install_dir' do
72
+ described_class.install_dir = 'my_install_dir_path'
73
+ allow(ENV).to receive(:[]).with('WD_INSTALL_DIR').and_return('my_env_path')
74
+ expect(described_class.install_dir).to be('my_install_dir_path')
75
+ ensure
76
+ described_class.install_dir = nil
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ class FakeDriver < Webdrivers::Common
6
+ def self.http_object
7
+ Webdrivers::Network.http
8
+ end
9
+ end
10
+
11
+ describe Webdrivers do
12
+ let(:http_object) { FakeDriver.http_object }
13
+
14
+ before do
15
+ described_class.proxy_addr = nil
16
+ described_class.proxy_port = nil
17
+ described_class.proxy_user = nil
18
+ described_class.proxy_pass = nil
19
+ end
20
+
21
+ it 'allows the proxy values to be set via configuration' do
22
+ described_class.configure do |config|
23
+ config.proxy_addr = 'proxy_addr'
24
+ config.proxy_port = '8888'
25
+ config.proxy_user = 'proxy_user'
26
+ config.proxy_pass = 'proxy_pass'
27
+ end
28
+
29
+ expect(described_class.proxy_addr).to eql 'proxy_addr'
30
+ expect(described_class.proxy_port).to eql '8888'
31
+ expect(described_class.proxy_user).to eql 'proxy_user'
32
+ expect(described_class.proxy_pass).to eql 'proxy_pass'
33
+ end
34
+
35
+ it 'uses the Proxy when the proxy_addr is set' do
36
+ described_class.configure do |config|
37
+ config.proxy_addr = 'proxy_addr'
38
+ config.proxy_port = '8080'
39
+ end
40
+
41
+ expect(http_object.instance_variable_get('@is_proxy_class')).to be true
42
+ end
43
+
44
+ it 'does not use the Proxy when proxy is not configured' do
45
+ expect(http_object.instance_variable_get('@is_proxy_class')).to be false
46
+ end
47
+
48
+ it 'raises an exception when net_http_ssl_fix is called.' do
49
+ err = 'Webdrivers.net_http_ssl_fix is no longer available.' \
50
+ ' Please see https://github.com/titusfortner/webdrivers#ssl_connect-errors.'
51
+ expect { described_class.net_http_ssl_fix }.to raise_error(RuntimeError, err)
52
+ end
53
+ end
metadata CHANGED
@@ -1,15 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdrivers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.2
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Titus Fortner
8
- autorequire:
8
+ - Lakshya Kapoor
9
+ - Thomas Walpole
10
+ autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2016-11-26 00:00:00.000000000 Z
13
+ date: 2021-10-14 00:00:00.000000000 Z
12
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ffi
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '12.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '12.0'
13
43
  - !ruby/object:Gem::Dependency
14
44
  name: rspec
15
45
  requirement: !ruby/object:Gem::Requirement
@@ -25,19 +55,75 @@ dependencies:
25
55
  - !ruby/object:Gem::Version
26
56
  version: '3.0'
27
57
  - !ruby/object:Gem::Dependency
28
- name: rake
58
+ name: rubocop
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '0.89'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
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
85
+ - !ruby/object:Gem::Dependency
86
+ name: rubocop-performance
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rubocop-rspec
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '1.42'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.42'
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov
29
115
  requirement: !ruby/object:Gem::Requirement
30
116
  requirements:
31
117
  - - "~>"
32
118
  - !ruby/object:Gem::Version
33
- version: '10.0'
119
+ version: '0.16'
34
120
  type: :development
35
121
  prerelease: false
36
122
  version_requirements: !ruby/object:Gem::Requirement
37
123
  requirements:
38
124
  - - "~>"
39
125
  - !ruby/object:Gem::Version
40
- version: '10.0'
126
+ version: '0.16'
41
127
  - !ruby/object:Gem::Dependency
42
128
  name: nokogiri
43
129
  requirement: !ruby/object:Gem::Requirement
@@ -53,63 +139,88 @@ dependencies:
53
139
  - !ruby/object:Gem::Version
54
140
  version: '1.6'
55
141
  - !ruby/object:Gem::Dependency
56
- name: zip
142
+ name: rubyzip
57
143
  requirement: !ruby/object:Gem::Requirement
58
144
  requirements:
59
145
  - - ">="
60
146
  - !ruby/object:Gem::Version
61
- version: '0'
147
+ version: 1.3.0
62
148
  type: :runtime
63
149
  prerelease: false
64
150
  version_requirements: !ruby/object:Gem::Requirement
65
151
  requirements:
66
152
  - - ">="
67
153
  - !ruby/object:Gem::Version
68
- version: '0'
154
+ version: 1.3.0
155
+ - !ruby/object:Gem::Dependency
156
+ name: selenium-webdriver
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">"
160
+ - !ruby/object:Gem::Version
161
+ version: '3.141'
162
+ - - "<"
163
+ - !ruby/object:Gem::Version
164
+ version: '5.0'
165
+ type: :runtime
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">"
170
+ - !ruby/object:Gem::Version
171
+ version: '3.141'
172
+ - - "<"
173
+ - !ruby/object:Gem::Version
174
+ version: '5.0'
69
175
  description: Run Selenium tests more easily with install and updates for all supported
70
176
  webdrivers.
71
177
  email:
72
178
  - titusfortner@gmail.com
73
- executables:
74
- - IEDriverServer
75
- - MicrosoftWebDriver
76
- - chromedriver
77
- - geckodriver
78
- - phantomjs
179
+ - kapoorlakshya@gmail.com
180
+ executables: []
79
181
  extensions: []
80
182
  extra_rdoc_files: []
81
183
  files:
82
- - ".gitignore"
83
- - ".travis.yml"
84
184
  - CHANGELOG.md
85
- - Gemfile
86
185
  - LICENSE.txt
87
186
  - README.md
88
- - Rakefile
89
- - bin/IEDriverServer
90
- - bin/MicrosoftWebDriver
91
- - bin/chromedriver
92
- - bin/geckodriver
93
- - bin/phantomjs
94
187
  - lib/webdrivers.rb
188
+ - lib/webdrivers/Rakefile
189
+ - lib/webdrivers/chrome_finder.rb
95
190
  - lib/webdrivers/chromedriver.rb
96
191
  - lib/webdrivers/common.rb
192
+ - lib/webdrivers/edge_finder.rb
97
193
  - lib/webdrivers/edgedriver.rb
98
194
  - lib/webdrivers/geckodriver.rb
99
195
  - lib/webdrivers/iedriver.rb
100
- - lib/webdrivers/phantomjs.rb
101
- - spec/chromedriver_spec.rb
102
- - spec/edgedriver_spec.rb
103
- - spec/geckodriver_spec.rb
104
- - spec/iedriver_spec.rb
105
- - spec/phantomjs_spec.rb
196
+ - lib/webdrivers/logger.rb
197
+ - lib/webdrivers/network.rb
198
+ - lib/webdrivers/railtie.rb
199
+ - lib/webdrivers/system.rb
200
+ - lib/webdrivers/tasks/chromedriver.rake
201
+ - lib/webdrivers/tasks/edgedriver.rake
202
+ - lib/webdrivers/tasks/geckodriver.rake
203
+ - lib/webdrivers/tasks/iedriver.rake
204
+ - lib/webdrivers/version.rb
106
205
  - spec/spec_helper.rb
107
- - webdrivers.gemspec
206
+ - spec/webdrivers/chrome_finder_spec.rb
207
+ - spec/webdrivers/chromedriver_spec.rb
208
+ - spec/webdrivers/edge_finder_spec.rb
209
+ - spec/webdrivers/edgedriver_spec.rb
210
+ - spec/webdrivers/geckodriver_spec.rb
211
+ - spec/webdrivers/i_edriver_spec.rb
212
+ - spec/webdrivers/system_spec.rb
213
+ - spec/webdrivers/webdrivers_spec.rb
214
+ - spec/webdrivers_proxy_support_spec.rb
108
215
  homepage: https://github.com/titusfortner/webdrivers
109
216
  licenses:
110
217
  - MIT
111
- metadata: {}
112
- post_install_message:
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.7.0
222
+ source_code_uri: https://github.com/titusfortner/webdrivers/tree/v4.7.0
223
+ post_install_message:
113
224
  rdoc_options: []
114
225
  require_paths:
115
226
  - lib
@@ -117,22 +228,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
228
  requirements:
118
229
  - - ">="
119
230
  - !ruby/object:Gem::Version
120
- version: '0'
231
+ version: 2.6.0
121
232
  required_rubygems_version: !ruby/object:Gem::Requirement
122
233
  requirements:
123
234
  - - ">="
124
235
  - !ruby/object:Gem::Version
125
236
  version: '0'
126
237
  requirements: []
127
- rubyforge_project:
128
- rubygems_version: 2.4.8
129
- signing_key:
238
+ rubygems_version: 3.2.22
239
+ signing_key:
130
240
  specification_version: 4
131
- summary: Easy installation and use of webdrivers.
241
+ summary: Easy download and use of browser drivers.
132
242
  test_files:
133
- - spec/chromedriver_spec.rb
134
- - spec/edgedriver_spec.rb
135
- - spec/geckodriver_spec.rb
136
- - spec/iedriver_spec.rb
137
- - spec/phantomjs_spec.rb
138
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
data/.gitignore DELETED
@@ -1,6 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
5
- chromedriver.log
6
- /.idea/
data/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.6
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in webdrivers.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'rspec/core/rake_task'
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
data/bin/IEDriverServer DELETED
@@ -1,5 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require "webdrivers"
4
-
5
- Webdrivers::IEDriver.install(*ARGV) if Webdrivers::IEDriver.platform == 'win'
@@ -1,5 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require "webdrivers"
4
-
5
- Webdrivers::Edgedriver.install(*ARGV) if Webdrivers::IEDriver.platform == 'win'
data/bin/chromedriver DELETED
@@ -1,5 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require "webdrivers"
4
-
5
- Webdrivers::Chromedriver.install *ARGV
data/bin/geckodriver DELETED
@@ -1,5 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require "webdrivers"
4
-
5
- Webdrivers::Geckodriver.install *ARGV
data/bin/phantomjs DELETED
@@ -1,5 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require "webdrivers"
4
-
5
- Webdrivers::PhantomJS.install *ARGV
@@ -1,40 +0,0 @@
1
- require 'nokogiri'
2
-
3
- module Webdrivers
4
- class PhantomJS < Common
5
-
6
- class << self
7
- def file_name
8
- platform == "win" ? "phantomjs.exe" : "phantomjs"
9
- end
10
-
11
- def current_version
12
- return nil unless File.exists?(binary_path)
13
- %x(#{binary_path} --version).strip.match(/(\d\.\d+\.\d+)/)[1]
14
- end
15
-
16
- def newest_version
17
- downloads.keys.sort.last
18
- end
19
-
20
- def downloads
21
- doc = Nokogiri::XML.parse(OpenURI.open_uri(base_url))
22
- items = doc.css(".execute").collect { |item| item["href"] }
23
- format_platform = platform.dup.gsub('32', '-i686').gsub('64', 'x86_64')
24
- items.select! { |item| item.include?(format_platform) }
25
- items.each_with_object({}) do |item, hash|
26
- hash[item[/-(\d+\.\d+\.\d+)-/, 1]] = "https://bitbucket.org#{item}"
27
- end
28
- end
29
-
30
- def base_url
31
- 'https://bitbucket.org/ariya/phantomjs/downloads'
32
- end
33
-
34
- def extract_file(filename)
35
- FileUtils.mv("#{platform_install_dir}/#{filename}bin/#{file_name}", file_name)
36
- end
37
- end
38
-
39
- end
40
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Webdrivers::Chromedriver do
4
-
5
- let(:chromedriver) { Webdrivers::Chromedriver }
6
-
7
- it 'downloads' do
8
- chromedriver.download
9
- file = "#{ENV['GEM_HOME']}/bin/chromedriver"
10
- expect(File.exist?(file)).to eq true
11
- end
12
-
13
- it { expect(chromedriver.newest_version.to_f).to be >= 2.25 }
14
-
15
- it { expect(chromedriver.downloads.size).to be >= 25 }
16
-
17
- context "on a linux platform" do
18
- before { allow(chromedriver).to receive(:platform) { "linux32" } }
19
-
20
- it { expect(chromedriver.file_name).to match(/chromedriver$/) }
21
-
22
- it { expect(chromedriver.binary_path).to match '.webdrivers/linux32/chromedriver' }
23
-
24
- it { expect(chromedriver.download_url('2.24')).to match("2.24/chromedriver_linux32.zip") }
25
- end
26
-
27
- context "on a windows platform" do
28
- before { allow(chromedriver).to receive(:platform) { "win" } }
29
-
30
- it { expect(chromedriver.file_name).to match(/chromedriver\.exe$/) }
31
-
32
- it { expect(chromedriver.binary_path).to match '.webdrivers/win/chromedriver' }
33
-
34
- it { expect(chromedriver.download_url('2.24')).to match("2.24/chromedriver_win32.zip") }
35
- end
36
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Webdrivers::Edgedriver do
4
-
5
- let(:edgedriver) { Webdrivers::Edgedriver }
6
-
7
- it 'downloads' do
8
- edgedriver.download
9
- file = "#{ENV['GEM_HOME']}/bin/MicrosoftWebDriver"
10
- expect(File.exist?(file)).to eq true
11
- end
12
-
13
- it { expect(edgedriver.newest_version.to_f).to be >= 2.25 }
14
-
15
-
16
- context "on a windows platform" do
17
- before { allow(edgedriver).to receive(:platform) { "win" } }
18
-
19
- it { expect(edgedriver.file_name).to match(/MicrosoftWebDriver\.exe$/) }
20
-
21
- it { expect(edgedriver.binary_path).to match '.webdrivers/win/MicrosoftWebDriver.exe' }
22
-
23
- end
24
- end