dvla-browser-drivers 2.3.0 → 3.0.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.
- checksums.yaml +4 -4
- data/Gemfile +8 -0
- data/README.md +17 -17
- data/dvla-browser-drivers.gemspec +19 -30
- data/lib/dvla/browser/drivers/meta_drivers.rb +19 -19
- data/lib/dvla/browser/drivers/version.rb +1 -1
- data/lib/dvla/browser/drivers.rb +1 -1
- metadata +6 -120
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98bded336a42bbcf8b073809a113cd5095df3961d4faa3537f514c61db6d536c
|
4
|
+
data.tar.gz: ee8bc6e39703ff92081610371753a6109985f20a6e51e51b47c8352fbc6b4043
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 664cf5f58d396164af406b9fbe3692c44d84d8db130d1e81360543fe0c589c5f7d6a7baa85f02714af753ed2b8ec0583d48c8891953bdcf2a6390cb25c0a363a
|
7
|
+
data.tar.gz: 693cd79891a22fb97a32dfd98881ba854cdf84b08525be93dea1a2967c879e5ebab828522fcfc1e8c81d65d4c32da129cad0bf6df5905f126232baefe5bf12c3
|
data/Gemfile
CHANGED
@@ -4,3 +4,11 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in dvla-browser-drivers.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
gem 'bundler-audit', '~> 0.9'
|
9
|
+
gem 'dvla-lint', '~> 1.7'
|
10
|
+
gem 'pry', '~> 0.14'
|
11
|
+
gem 'rake', '~> 13.0'
|
12
|
+
gem 'rspec', '~> 3.11'
|
13
|
+
gem 'simplecov', '~> 0.22'
|
14
|
+
gem 'simplecov-console', '~> 0.9'
|
data/README.md
CHANGED
@@ -25,19 +25,19 @@ Once installed, you are able to use any pre-configured browser driver from the l
|
|
25
25
|
|
26
26
|
### Selenium drivers
|
27
27
|
|
28
|
-
| Driver
|
29
|
-
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
| Driver | Usage |
|
29
|
+
|---------------------------|----------------------------------------------------|
|
30
|
+
| selenium_chrome | `DVLA::Browser::Drivers.selenium_chrome` |
|
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
|
+
| selenium_firefox | `DVLA::Browser::Drivers.selenium_firefox` |
|
35
|
+
| headless_selenium_firefox | `DVLA::Browser::Drivers.headless_selenium_firefox` |
|
36
36
|
|
37
37
|
### Non-selenium drivers
|
38
38
|
|
39
39
|
| Driver | Usage |
|
40
|
-
|
40
|
+
|---------------------|----------------------------------------------|
|
41
41
|
| cuprite | `DVLA::Browser::Drivers.cuprite` |
|
42
42
|
| headless_cuprite | `DVLA::Browser::Drivers.headless_cuprite` |
|
43
43
|
| apparition | `DVLA::Browser::Drivers.apparition` |
|
@@ -47,22 +47,22 @@ Once installed, you are able to use any pre-configured browser driver from the l
|
|
47
47
|
|
48
48
|
### Default configuration
|
49
49
|
|
50
|
-
| Driver
|
51
|
-
|
52
|
-
|
|
53
|
-
| headless\_<driver>
|
54
|
-
| cuprite, apparition
|
50
|
+
| Driver | Configuration |
|
51
|
+
|--------------------------------------------------|-------------------------------------------------------|
|
52
|
+
| selenium_chrome, selenium_edge, selenium_firefox | --disable-dev-shm-usage<br/> |
|
53
|
+
| headless\_<driver> | --headless<br/>--no-sandbox |
|
54
|
+
| cuprite, apparition | { 'no-sandbox': nil, disable-smooth-scrolling: true } |
|
55
55
|
|
56
56
|
---
|
57
57
|
|
58
58
|
### Additional configuration
|
59
59
|
|
60
60
|
| Option | Description | supported-browsers |
|
61
|
-
|
61
|
+
|-----------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
|
62
62
|
| remote: 'http://localhost:4444/wd/hub' | Allows you to talk to a remote browser | firefox |
|
63
|
-
|
|
63
|
+
| additional_arguments: ['window-size=1400,1920'] | Pass additional arguments to the driver<br/>Supported switches: https://peter.sh/experiments/chromium-command-line-switches/ | chrome, edge, firefox |
|
64
64
|
| additional_preferences: [{'download.default_directory': '<download_path>'}] | Pass additional preferences to the driver<br/>Documentation: https://www.selenium.dev/selenium/docs/api/rb/Selenium/WebDriver/Chromium/Options.html#add_preference-instance_method | chrome, edge, firefox |
|
65
|
-
|
|
65
|
+
| additional_arguments: { 'option': value, 'option': value } | Pass additional arguments to the driver<br/>Supported switched: https://www.rubydoc.info/gems/cuprite/ | cuprite, apparition |
|
66
66
|
|
67
67
|
## Development
|
68
68
|
|
@@ -5,28 +5,30 @@ require_relative 'lib/dvla/browser/drivers/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'dvla-browser-drivers'
|
7
7
|
spec.version = DVLA::Browser::Drivers::VERSION
|
8
|
-
spec.authors = ['Driver and Vehicle Licensing Agency (DVLA)','Tomos Griffiths']
|
8
|
+
spec.authors = ['Driver and Vehicle Licensing Agency (DVLA)', 'Tomos Griffiths']
|
9
9
|
spec.email = %w[tomos.griffiths@dvla.gov.uk]
|
10
10
|
|
11
|
-
spec.summary =
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
spec.summary =
|
12
|
+
<<~MSG
|
13
|
+
Browser-drivers has pre-configured web-browser drivers that can be used out-of-the-box for the development of UI based applications.
|
14
|
+
MSG
|
15
|
+
|
16
|
+
spec.description =
|
17
|
+
<<~MSG
|
18
|
+
Browser-drivers has pre-configured web-browser drivers that can be used out-of-the-box for the development of UI based applications.
|
19
|
+
It is built using Ruby and utilises the Capybara library (A web application testing platform) to simulate how a user interacts with the applications being tested.
|
20
|
+
It also has the facility to run Cuprite, which is a pure Ruby driver utilising Ferrum, a high level API to run headless tests.
|
21
|
+
MSG
|
22
|
+
|
19
23
|
spec.license = 'MIT'
|
20
24
|
spec.required_ruby_version = '>= 3.1'
|
21
25
|
spec.homepage = 'https://github.com/dvla/dvla-browser-drivers'
|
22
26
|
if spec.respond_to?(:metadata)
|
23
|
-
# spec.metadata['allowed_push_host'] = 'TODO: Set to 'http://mygemserver.com''
|
24
|
-
|
25
27
|
spec.metadata['homepage_uri'] = spec.homepage
|
26
28
|
spec.metadata['source_code_uri'] = spec.homepage
|
27
29
|
else
|
28
30
|
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
29
|
-
|
31
|
+
'public gem pushes.'
|
30
32
|
end
|
31
33
|
|
32
34
|
# Specify which files should be added to the gem when it is released.
|
@@ -43,22 +45,9 @@ Gem::Specification.new do |spec|
|
|
43
45
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
44
46
|
spec.require_paths = %w[lib]
|
45
47
|
|
46
|
-
|
47
|
-
spec.
|
48
|
-
spec.
|
49
|
-
spec.
|
50
|
-
spec.
|
51
|
-
spec.add_runtime_dependency 'selenium-webdriver', '>= 4.0'
|
52
|
-
|
53
|
-
spec.add_development_dependency 'bundler-audit', '~> 0.9'
|
54
|
-
spec.add_development_dependency 'dvla-lint', '~> 1.7'
|
55
|
-
spec.add_development_dependency 'pry', '~> 0.14'
|
56
|
-
spec.add_development_dependency 'rake', '~> 13.0'
|
57
|
-
spec.add_development_dependency 'rspec', '~> 3.11'
|
58
|
-
spec.add_development_dependency 'rspec-sonarqube-formatter', '~> 1.5'
|
59
|
-
spec.add_development_dependency 'simplecov', '~> 0.22'
|
60
|
-
spec.add_development_dependency 'simplecov-console', '~> 0.9'
|
61
|
-
|
62
|
-
# For more information and examples about making a new gem, checkout our
|
63
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
48
|
+
spec.add_dependency 'apparition', '>= 0.6'
|
49
|
+
spec.add_dependency 'capybara', '>= 3.37'
|
50
|
+
spec.add_dependency 'cuprite', '>= 0.14'
|
51
|
+
spec.add_dependency 'dvla-herodotus', '>= 2.0'
|
52
|
+
spec.add_dependency 'selenium-webdriver', '>= 4.0'
|
64
53
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module DVLA
|
2
2
|
module Browser
|
3
3
|
module Drivers
|
4
|
-
DRIVER_REGEX = /^(?:(?<headless>headless)_)?(?<browser>chrome|firefox|edge|cuprite|apparition)$/
|
4
|
+
DRIVER_REGEX = /^(?:(?<headless>headless)_)?(?<driver>(selenium_(?<browser>chrome|firefox|edge)|cuprite|apparition))$/
|
5
5
|
|
6
6
|
OTHER_ACCEPTED_PARAMS = %i[timeout].freeze
|
7
7
|
OTHER_DRIVERS = %i[cuprite apparition].freeze
|
8
|
-
SELENIUM_ACCEPTED_PARAMS = %i[remote
|
9
|
-
SELENIUM_DRIVERS = %i[
|
8
|
+
SELENIUM_ACCEPTED_PARAMS = %i[remote additional_arguments additional_preferences].freeze
|
9
|
+
SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge].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
|
@@ -16,13 +16,15 @@ module DVLA
|
|
16
16
|
#
|
17
17
|
# @example Driver with additional arguments
|
18
18
|
# DVLA::Browser::Drivers.chrome(remote: 'http://localhost:4444/wd/hub')
|
19
|
-
def self.method_missing(method, *args, **kwargs, &
|
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
|
-
|
22
|
+
driver = matches[:driver].to_sym
|
23
23
|
|
24
|
-
case
|
24
|
+
case driver
|
25
25
|
when *SELENIUM_DRIVERS
|
26
|
+
browser = matches[:browser].to_sym
|
27
|
+
|
26
28
|
kwargs.each do |key, _value|
|
27
29
|
LOG.warn { "Key: '#{key}' will be ignored | Use one from: '#{SELENIUM_ACCEPTED_PARAMS}'" } unless SELENIUM_ACCEPTED_PARAMS.include?(key)
|
28
30
|
end
|
@@ -38,18 +40,14 @@ module DVLA
|
|
38
40
|
|
39
41
|
browser = :remote if kwargs[:remote]
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
options.add_argument(additional_option)
|
45
|
-
end
|
43
|
+
kwargs[:additional_arguments] && kwargs[:additional_arguments].each do |argument|
|
44
|
+
argument.prepend('--') unless argument.start_with?('--')
|
45
|
+
options.add_argument(argument)
|
46
46
|
end
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
options.add_preference(key, value)
|
52
|
-
end
|
48
|
+
kwargs[:additional_preferences] && kwargs[:additional_preferences].each do |preference|
|
49
|
+
key, value = preference.first
|
50
|
+
options.add_preference(key, value)
|
53
51
|
end
|
54
52
|
|
55
53
|
::Capybara::Selenium::Driver.new(app, url: kwargs[:remote], browser:, options:)
|
@@ -60,7 +58,7 @@ module DVLA
|
|
60
58
|
end
|
61
59
|
|
62
60
|
::Capybara.register_driver method do |app|
|
63
|
-
Object.const_get("Capybara::#{
|
61
|
+
Object.const_get("Capybara::#{driver.to_s.capitalize}::Driver").new(
|
64
62
|
app,
|
65
63
|
headless:,
|
66
64
|
timeout: kwargs[:timeout] || 30,
|
@@ -69,11 +67,13 @@ module DVLA
|
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
72
|
-
LOG.info
|
70
|
+
LOG.info { "Driver set to: '#{method}'" }
|
71
|
+
|
72
|
+
::Capybara.javascript_driver = method
|
73
73
|
::Capybara.default_driver = method
|
74
74
|
::Capybara.current_driver = method
|
75
75
|
else
|
76
|
-
super.method_missing(method, *args, &
|
76
|
+
super.method_missing(method, *args, &)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
data/lib/dvla/browser/drivers.rb
CHANGED
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:
|
4
|
+
version: 3.0.0
|
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: 2024-
|
12
|
+
date: 2024-11-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: apparition
|
@@ -81,124 +81,10 @@ dependencies:
|
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '4.0'
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
- - "~>"
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0.9'
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - "~>"
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0.9'
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: dvla-lint
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - "~>"
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '1.7'
|
105
|
-
type: :development
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '1.7'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: pry
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - "~>"
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '0.14'
|
119
|
-
type: :development
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - "~>"
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0.14'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rake
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - "~>"
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '13.0'
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - "~>"
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '13.0'
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: rspec
|
142
|
-
requirement: !ruby/object:Gem::Requirement
|
143
|
-
requirements:
|
144
|
-
- - "~>"
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: '3.11'
|
147
|
-
type: :development
|
148
|
-
prerelease: false
|
149
|
-
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - "~>"
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '3.11'
|
154
|
-
- !ruby/object:Gem::Dependency
|
155
|
-
name: rspec-sonarqube-formatter
|
156
|
-
requirement: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - "~>"
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '1.5'
|
161
|
-
type: :development
|
162
|
-
prerelease: false
|
163
|
-
version_requirements: !ruby/object:Gem::Requirement
|
164
|
-
requirements:
|
165
|
-
- - "~>"
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: '1.5'
|
168
|
-
- !ruby/object:Gem::Dependency
|
169
|
-
name: simplecov
|
170
|
-
requirement: !ruby/object:Gem::Requirement
|
171
|
-
requirements:
|
172
|
-
- - "~>"
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: '0.22'
|
175
|
-
type: :development
|
176
|
-
prerelease: false
|
177
|
-
version_requirements: !ruby/object:Gem::Requirement
|
178
|
-
requirements:
|
179
|
-
- - "~>"
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '0.22'
|
182
|
-
- !ruby/object:Gem::Dependency
|
183
|
-
name: simplecov-console
|
184
|
-
requirement: !ruby/object:Gem::Requirement
|
185
|
-
requirements:
|
186
|
-
- - "~>"
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
version: '0.9'
|
189
|
-
type: :development
|
190
|
-
prerelease: false
|
191
|
-
version_requirements: !ruby/object:Gem::Requirement
|
192
|
-
requirements:
|
193
|
-
- - "~>"
|
194
|
-
- !ruby/object:Gem::Version
|
195
|
-
version: '0.9'
|
196
|
-
description: Browser-drivers has pre-configured web-browser drivers that can be used
|
197
|
-
out-of-the-box for the development of UI based applications. It is built using Ruby
|
198
|
-
and utilises the Capybara library (A web application testing platform) to simulate
|
199
|
-
how a user interacts with the applications being tested. It also has the facility
|
200
|
-
to run Cuprite, which is a pure Ruby driver utilising Ferrum, a high level API to
|
201
|
-
run headless tests.
|
84
|
+
description: |
|
85
|
+
Browser-drivers has pre-configured web-browser drivers that can be used out-of-the-box for the development of UI based applications.
|
86
|
+
It is built using Ruby and utilises the Capybara library (A web application testing platform) to simulate how a user interacts with the applications being tested.
|
87
|
+
It also has the facility to run Cuprite, which is a pure Ruby driver utilising Ferrum, a high level API to run headless tests.
|
202
88
|
email:
|
203
89
|
- tomos.griffiths@dvla.gov.uk
|
204
90
|
executables: []
|