chromedriver-helper 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 523493a4eb5cc7c2a490ac9ff43b2daccd069cc9307687b8ef1df1ee814b9b0c
4
- data.tar.gz: caddb00bafb5979ba43d5915ecd17ef117f9f72304b8a715d6811cfe597372f7
3
+ metadata.gz: 00d7bfc33c3feb7a50b220782801f8b1bb619a368ee5d6dd5a901621341c5d0d
4
+ data.tar.gz: e5e3f2d16b4f1a778cfc0afc9b4f2448ec1157ff67bf7dfdfce90a355c473341
5
5
  SHA512:
6
- metadata.gz: 91380ff21ff39b55d0efa3869fcf267346bfca777a3a93076d748df1015f212f730a7ed18454500cae85f0138acac090153efeeb8a51adda2998510db42e6827
7
- data.tar.gz: e72ef928b757d173c5448f8d4c4b12c5df09dcafa4fc5c2217064b8c9db89a9d434fd53bb5b1183131a17354ff207e9a18ca51c110bfb6034e0615a28d80b863
6
+ metadata.gz: d8cd6b73b42605d7a0ddd66d8b5230b34a8dc38ae7c532477620c7595e2821aebb040c4d5dc267bf8e16f58de24781505715f83239b84b2d68b38d253876038d
7
+ data.tar.gz: '09805d4ffa96dd170d1ebfceadf3ba4e917504c7f614bff69cb334a4cd90c31b6cdf7a271d240ae33c5ae509bf21d8db1d939eca3cf5160ab41cb2d2fb9e53ff'
@@ -1,12 +1,24 @@
1
1
  chromedriver-helper changelog
2
2
  ==========
3
3
 
4
+ 2.1.0 - 2018-09-18
5
+ ----------
6
+
7
+ Enhancement:
8
+
9
+ * Use the `LATEST_RELEASE` file to determine the newest version, to avoid downloading the experimental versions the Chrome team is posting recently. [#62](https://github.com/flavorjones/chromedriver-helper/issues/62) (Thanks, @ibrahima!)
10
+
11
+ Bug fix:
12
+
13
+ * `lib/chromedriver-helper.rb` explicitly requires `chromedriver/helper` to avoid "uninitialized constant Chromedriver" exception when calling `Chromedriver.set_version` in a default-configured Rails app. [#65](https://github.com/flavorjones/chromedriver-helper/issues/65)
14
+
15
+
4
16
  2.0.1 - 2019-09-17
5
17
  ----------
6
18
 
7
19
  Bug fix:
8
20
 
9
- * Explicitly require 'selenium-webdriver' for projects who don't have the default Rails ordering in their Gemfile. [#60](https://github.com/flavorjones/chromedriver-helper/issues/60)
21
+ * Explicitly require 'selenium-webdriver' for projects who don't have the default Rails ordering in their Gemfile. [#60](https://github.com/flavorjones/chromedriver-helper/issues/60) (Thanks, @mattbrictson!)
10
22
 
11
23
 
12
24
  2.0.0 - 2019-09-15
data/README.md CHANGED
@@ -16,16 +16,63 @@ Individual projects can even select which version of `chromedriver` they want to
16
16
 
17
17
  # Usage
18
18
 
19
- If you're using Bundler and Capybara, it's as easy as:
19
+ ## In a Rails project
20
+
21
+ If you're using Bundler and Capybara in a Rails project, it's as easy as:
22
+
23
+ ``` ruby
24
+ # Gemfile
25
+ gem "selenium-webdriver"
26
+ gem "chromedriver-helper"
27
+ ```
28
+
29
+ then, in your spec setup:
30
+
31
+ ``` ruby
32
+ Capybara.register_driver :selenium do |app|
33
+ Capybara::Selenium::Driver.new(app, :browser => :chrome)
34
+ end
35
+ ```
36
+
37
+
38
+ ## Standalone
39
+
40
+ If you're using it standlone just to manage chromedriver binaries,
20
41
 
21
42
  # Gemfile
22
43
  gem "chromedriver-helper"
23
44
 
24
- then, in your specs:
45
+ Then just run the executable script:
46
+
47
+ chromedriver-helper
25
48
 
26
- Capybara.register_driver :selenium do |app|
27
- Capybara::Selenium::Driver.new(app, :browser => :chrome)
28
- end
49
+ which will download `chromedriver` if necessary and exec it.
50
+
51
+
52
+ # Configuration
53
+
54
+ There are some commandline options that can be sent to `chromedriver` as options to `Capybara::Selenium::Driver.new`. The supported options can be discovered by looking at the Selenium source code here:
55
+
56
+ https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/chrome/service.rb
57
+
58
+ As of this writing, the supported options are:
59
+
60
+ * `log_path`
61
+ * `url_base`
62
+ * `port_server`
63
+ * `whitelisted_ips`
64
+ * `verbose`
65
+ * `silent`
66
+
67
+ An example usage would be:
68
+
69
+ ``` ruby
70
+ Capybara::Selenium::Driver.new(app, browser: :chrome,
71
+ driver_opts: {
72
+ log_path: '/tmp/chrome.log',
73
+ verbose: true
74
+ })
75
+ ```
29
76
 
30
77
 
31
78
  # Updating to latest `chromedriver`
@@ -1,2 +1,4 @@
1
+ require 'chromedriver/helper'
1
2
  require 'selenium-webdriver'
3
+
2
4
  Selenium::WebDriver::Chrome.driver_path=Gem.bin_path("chromedriver-helper","chromedriver-helper")
@@ -1,16 +1,18 @@
1
1
  require 'nokogiri'
2
2
  require 'open-uri'
3
+ require 'uri'
3
4
 
4
5
  module Chromedriver
5
6
  class Helper
6
7
  class GoogleCodeParser
7
8
  BUCKET_URL = 'https://chromedriver.storage.googleapis.com'
8
9
 
9
- attr_reader :source, :platform
10
+ attr_reader :source, :platform, :newest_download_version
10
11
 
11
12
  def initialize(platform, open_uri_provider=OpenURI)
12
13
  @platform = platform
13
14
  @source = open_uri_provider.open_uri(BUCKET_URL)
15
+ @newest_download_version = Gem::Version.new(open_uri_provider.open_uri(URI.join(BUCKET_URL, "LATEST_RELEASE")).read)
14
16
  end
15
17
 
16
18
  def downloads
@@ -22,10 +24,6 @@ module Chromedriver
22
24
  end
23
25
  end
24
26
 
25
- def newest_download_version
26
- @newest_download_version ||= downloads.map { |download| version_of(download) }.max
27
- end
28
-
29
27
  def version_download_url(version)
30
28
  gem_version = Gem::Version.new(version)
31
29
  downloads.find { |download_url| version_of(download_url) == gem_version }
@@ -1,5 +1,5 @@
1
1
  module Chromedriver
2
2
  class Helper
3
- VERSION = "2.0.1"
3
+ VERSION = "2.1.0"
4
4
  end
5
5
  end
@@ -3,7 +3,14 @@ require "spec_helper"
3
3
  describe Chromedriver::Helper::GoogleCodeParser do
4
4
  let!(:open_uri_provider) do
5
5
  double("open_uri_provider").tap do |oup|
6
- allow(oup).to receive(:open_uri) { File.read(File.join(File.dirname(__FILE__), "assets/google-code-bucket.xml")) }
6
+ allow(oup).to receive(:open_uri) do |uri|
7
+ case uri.to_s
8
+ when "https://chromedriver.storage.googleapis.com/LATEST_RELEASE"
9
+ StringIO.new("2.42")
10
+ when "https://chromedriver.storage.googleapis.com"
11
+ StringIO.new(File.read(File.join(File.dirname(__FILE__), "assets/google-code-bucket.xml")))
12
+ end
13
+ end
7
14
  end
8
15
  end
9
16
  let!(:parser) { Chromedriver::Helper::GoogleCodeParser.new('mac', open_uri_provider) }
@@ -21,22 +28,7 @@ describe Chromedriver::Helper::GoogleCodeParser do
21
28
 
22
29
  describe "#newest_download_version" do
23
30
  it "returns the last URL for the platform" do
24
- expect(parser.newest_download_version).to eq Gem::Version.new("2.4")
25
- end
26
-
27
- context "out-of-order versions" do
28
- before do
29
- allow(parser).to receive(:downloads).and_return([
30
- "https://chromedriver.storage.googleapis.com/2.3/chromedriver_mac32.zip",
31
- "https://chromedriver.storage.googleapis.com/2.4/chromedriver_mac32.zip",
32
- "https://chromedriver.storage.googleapis.com/2.14/chromedriver_mac32.zip",
33
- "https://chromedriver.storage.googleapis.com/2.2/chromedriver_mac32.zip",
34
- ])
35
- end
36
-
37
- it "returns the newest version" do
38
- expect(parser.newest_download_version).to eq(Gem::Version.new("2.14"))
39
- end
31
+ expect(parser.newest_download_version).to eq Gem::Version.new("2.42")
40
32
  end
41
33
  end
42
34
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chromedriver-helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-17 00:00:00.000000000 Z
11
+ date: 2018-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec