dvla-browser-drivers 3.1.0 → 3.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac07160d1bc1d37efd9b23fca6eb49e7b591c63394322b7c2bd1c65328568523
4
- data.tar.gz: baaf5af95ef7185e130b5f6ae6ef1d4b00620b18d0a2490607aaa5e8a460a566
3
+ metadata.gz: be6fbb0dea13bdb8c0cffdf3c2e865a707792e92ad0779d27ee9e9ca69c31d37
4
+ data.tar.gz: f17d454ef4b54fcf99adffa8bb9d62872a03740bf54671923183245b33bad027
5
5
  SHA512:
6
- metadata.gz: 109149e21784a203260a5c0bed209b53cfe998f4fb71ae5199a8aa605e2e4455b5d09ac574e8f8ffb33974dd76f9fa99c73768a2db6e3a5fed319c9854f43e4c
7
- data.tar.gz: 7a795f13005830a63ecbd8c780a474798626eaf3dbaee5b5ca33a3bb572000fd18c8f517e727abd538cab21cc5cd861cf2c3c49b3dde5ac0ab7337af2b7548b8
6
+ metadata.gz: 41730ce1a0217eb34d5ae46722d6387bac90dbbfe869bce8a9ba5f60f32a54290cab759327fdb870da109d8e5c8daa1eb4c4e730b98190c261d3b40904775ba2
7
+ data.tar.gz: 16988c0eb23835442a45f68f07d9d2c0132980888b4cc983600d33e34ea654a0a4c57df7bde4b41a1ebb0f241e5f1422d066584da93a5da0f09ecd9956219f4f
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
+ # [3.1.2] - 2026-01-19
6
+
7
+ - Remove dvla-herodotus dependency
8
+
9
+ # [3.1.1] - 2025-12-12
10
+
11
+ - Add selenium_safari config
12
+ - Add optional binary string for Selenium
13
+
5
14
  # [3.1.0] - 2025-12-10
6
15
 
7
16
  - Add websocket URL to enable BiDi functionality via Selenium
data/README.md CHANGED
@@ -29,10 +29,10 @@ Once installed, you are able to use any pre-configured browser driver from the l
29
29
  |---------------------------|----------------------------------------------------|
30
30
  | selenium_chrome | `DVLA::Browser::Drivers.selenium_chrome` |
31
31
  | headless_selenium_chrome | `DVLA::Browser::Drivers.headless_selenium_chrome` |
32
- | selenium_edge | `DVLA::Browser::Drivers.selenium_edge` |
33
- | headless_selenium_edge | `DVLA::Browser::Drivers.headless_selenium_edge` |
34
32
  | selenium_firefox | `DVLA::Browser::Drivers.selenium_firefox` |
35
33
  | headless_selenium_firefox | `DVLA::Browser::Drivers.headless_selenium_firefox` |
34
+ | selenium_edge | `DVLA::Browser::Drivers.selenium_edge` |
35
+ | selenium_safari | `DVLA::Browser::Drivers.selenium_safari` |
36
36
 
37
37
  ### Non-selenium drivers
38
38
 
@@ -43,6 +43,8 @@ Once installed, you are able to use any pre-configured browser driver from the l
43
43
  | apparition | `DVLA::Browser::Drivers.apparition` |
44
44
  | headless_apparition | `DVLA::Browser::Drivers.headless_apparition` |
45
45
 
46
+ **Note:** Safari and Edge do not support headless mode.
47
+
46
48
  ---
47
49
 
48
50
  ### Default configuration
@@ -48,6 +48,5 @@ Gem::Specification.new do |spec|
48
48
  spec.add_dependency 'apparition', '>= 0.6'
49
49
  spec.add_dependency 'capybara', '>= 3.37'
50
50
  spec.add_dependency 'cuprite', '>= 0.14'
51
- spec.add_dependency 'dvla-herodotus', '>= 2.0'
52
51
  spec.add_dependency 'selenium-webdriver', '>= 4.0'
53
52
  end
@@ -1,12 +1,12 @@
1
1
  module DVLA
2
2
  module Browser
3
3
  module Drivers
4
- DRIVER_REGEX = /^(?:(?<headless>headless)_)?(?<driver>(selenium_(?<browser>chrome|firefox|edge)|cuprite|apparition))$/
4
+ DRIVER_REGEX = /^(?:(?<headless>headless_)(?<driver>selenium_(?<browser>chrome|firefox)|cuprite|apparition)|(?<driver_no_headless>selenium_(?<browser_no_headless>chrome|firefox|edge|safari)|cuprite|apparition))$/
5
5
 
6
6
  OTHER_ACCEPTED_PARAMS = %i[timeout browser_options save_path remote].freeze
7
7
  OTHER_DRIVERS = %i[cuprite apparition].freeze
8
- SELENIUM_ACCEPTED_PARAMS = %i[remote additional_arguments additional_preferences].freeze
9
- SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge].freeze
8
+ SELENIUM_ACCEPTED_PARAMS = %i[remote additional_arguments additional_preferences binary].freeze
9
+ SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge selenium_safari].freeze
10
10
 
11
11
  # Creates methods in the Drivers module that matches the DRIVER_REGEX
12
12
  # These methods will register a Driver for use by Capybara in a test pack
@@ -19,35 +19,39 @@ module DVLA
19
19
  def self.method_missing(method, *args, **kwargs, &)
20
20
  if (matches = method.match(DRIVER_REGEX))
21
21
  headless = matches[:headless].is_a? String
22
- driver = matches[:driver].to_sym
22
+ driver = matches[:driver]&.to_sym || matches[:driver_no_headless]&.to_sym
23
+ browser_match = matches[:browser] || matches[:browser_no_headless]
23
24
 
24
25
  case driver
25
26
  when *SELENIUM_DRIVERS
26
- browser = matches[:browser].to_sym
27
+ browser = browser_match.to_sym
27
28
 
28
29
  kwargs.each do |key, _value|
29
- LOG.warn { "Key: '#{key}' will be ignored | Use one from: '#{SELENIUM_ACCEPTED_PARAMS}'" } unless SELENIUM_ACCEPTED_PARAMS.include?(key)
30
+ puts "Key: '#{key}' will be ignored | Use one from: '#{SELENIUM_ACCEPTED_PARAMS}'" unless SELENIUM_ACCEPTED_PARAMS.include?(key)
30
31
  end
31
32
 
32
33
  ::Capybara.register_driver method do |app|
33
- options = Object.const_get("Selenium::WebDriver::#{browser.to_s.capitalize}::Options").new(web_socket_url: true)
34
- options.add_argument('--disable-dev-shm-usage')
35
-
36
- if headless
37
- options.add_argument('--headless')
38
- options.add_argument('--no-sandbox')
39
- end
40
-
41
- browser = :remote if kwargs[:remote]
42
-
43
- kwargs[:additional_arguments] && kwargs[:additional_arguments].each do |argument|
44
- argument.prepend('--') unless argument.start_with?('--')
45
- options.add_argument(argument)
46
- end
47
-
48
- kwargs[:additional_preferences] && kwargs[:additional_preferences].each do |preference|
49
- key, value = preference.first
50
- options.add_preference(key, value)
34
+ if browser == :safari
35
+ options = Selenium::WebDriver::Safari::Options.new
36
+ else
37
+ options = Object.const_get("Selenium::WebDriver::#{browser.to_s.capitalize}::Options").new(web_socket_url: true)
38
+ options.binary = kwargs[:binary] if kwargs[:binary]
39
+ options.add_argument('--disable-dev-shm-usage')
40
+
41
+ if headless
42
+ options.add_argument('--headless')
43
+ options.add_argument('--no-sandbox')
44
+ end
45
+
46
+ kwargs[:additional_arguments] && kwargs[:additional_arguments].each do |argument|
47
+ argument.prepend('--') unless argument.start_with?('--')
48
+ options.add_argument(argument)
49
+ end
50
+
51
+ kwargs[:additional_preferences] && kwargs[:additional_preferences].each do |preference|
52
+ key, value = preference.first
53
+ options.add_preference(key, value)
54
+ end
51
55
  end
52
56
 
53
57
  driver_browser = kwargs[:remote] ? :remote : browser
@@ -58,7 +62,7 @@ module DVLA
58
62
  end
59
63
  else
60
64
  kwargs.each do |key, _value|
61
- LOG.warn { "Key: '#{key}' will be ignored | Use one from: '#{OTHER_ACCEPTED_PARAMS}'" } unless OTHER_ACCEPTED_PARAMS.include?(key)
65
+ puts "Key: '#{key}' will be ignored | Use one from: '#{OTHER_ACCEPTED_PARAMS}'" unless OTHER_ACCEPTED_PARAMS.include?(key)
62
66
  end
63
67
 
64
68
  browser_options = { 'no-sandbox': nil, 'disable-smooth-scrolling': true }
@@ -78,7 +82,7 @@ module DVLA
78
82
  end
79
83
  end
80
84
 
81
- LOG.info { "Driver set to: '#{method}'" }
85
+ puts "Driver set to: '#{method}'"
82
86
 
83
87
  ::Capybara.javascript_driver = method
84
88
  ::Capybara.default_driver = method
@@ -3,7 +3,7 @@
3
3
  module DVLA
4
4
  module Browser
5
5
  module Drivers
6
- VERSION = '3.1.0'
6
+ VERSION = '3.1.2'
7
7
  end
8
8
  end
9
9
  end
@@ -3,11 +3,8 @@ require_relative 'drivers/version'
3
3
 
4
4
  require 'capybara/apparition'
5
5
  require 'capybara/cuprite'
6
- require 'dvla/herodotus'
7
6
  require 'selenium-webdriver'
8
7
 
9
8
  module DVLA
10
9
  class Error < StandardError; end
11
-
12
- LOG = DVLA::Herodotus.logger('browser-drivers')
13
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dvla-browser-drivers
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Driver and Vehicle Licensing Agency (DVLA)
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-12-11 00:00:00.000000000 Z
12
+ date: 2026-01-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: apparition
@@ -53,20 +53,6 @@ dependencies:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0.14'
56
- - !ruby/object:Gem::Dependency
57
- name: dvla-herodotus
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '2.0'
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '2.0'
70
56
  - !ruby/object:Gem::Dependency
71
57
  name: selenium-webdriver
72
58
  requirement: !ruby/object:Gem::Requirement