selenium-webdriver 4.4.0 → 4.8.1

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +98 -1
  3. data/LICENSE +1 -1
  4. data/NOTICE +1 -1
  5. data/bin/linux/selenium-manager +0 -0
  6. data/bin/macos/selenium-manager +0 -0
  7. data/bin/windows/selenium-manager.exe +0 -0
  8. data/lib/selenium/server.rb +20 -16
  9. data/lib/selenium/webdriver/atoms/findElements.js +0 -0
  10. data/lib/selenium/webdriver/atoms/getAttribute.js +0 -0
  11. data/lib/selenium/webdriver/atoms/isDisplayed.js +0 -0
  12. data/lib/selenium/webdriver/atoms/mutationListener.js +0 -0
  13. data/lib/selenium/webdriver/atoms.rb +2 -3
  14. data/lib/selenium/webdriver/bidi/browsing_context.rb +88 -0
  15. data/lib/selenium/webdriver/bidi/browsing_context_info.rb +35 -0
  16. data/lib/selenium/webdriver/bidi/log/base_log_entry.rb +35 -0
  17. data/lib/selenium/webdriver/bidi/log/console_log_entry.rb +35 -0
  18. data/lib/selenium/webdriver/bidi/log/filter_by.rb +40 -0
  19. data/lib/selenium/webdriver/bidi/log/generic_log_entry.rb +33 -0
  20. data/lib/selenium/webdriver/bidi/log/javascript_log_entry.rb +33 -0
  21. data/lib/selenium/webdriver/bidi/log_inspector.rb +143 -0
  22. data/lib/selenium/webdriver/bidi/navigate_result.rb +33 -0
  23. data/lib/selenium/webdriver/bidi/session.rb +13 -0
  24. data/lib/selenium/webdriver/bidi.rb +3 -2
  25. data/lib/selenium/webdriver/chrome/driver.rb +19 -28
  26. data/lib/selenium/webdriver/chrome/features.rb +5 -72
  27. data/lib/selenium/webdriver/chrome/options.rb +3 -237
  28. data/lib/selenium/webdriver/chrome/profile.rb +3 -83
  29. data/lib/selenium/webdriver/chrome/service.rb +4 -19
  30. data/lib/selenium/webdriver/chromium/driver.rb +61 -0
  31. data/lib/selenium/webdriver/chromium/features.rb +103 -0
  32. data/lib/selenium/webdriver/chromium/options.rb +261 -0
  33. data/lib/selenium/webdriver/chromium/profile.rb +113 -0
  34. data/lib/selenium/webdriver/chromium/service.rb +42 -0
  35. data/lib/selenium/webdriver/chromium.rb +32 -0
  36. data/lib/selenium/webdriver/common/action_builder.rb +11 -48
  37. data/lib/selenium/webdriver/common/child_process.rb +124 -0
  38. data/lib/selenium/webdriver/common/driver.rb +39 -26
  39. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -2
  40. data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -1
  41. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +0 -2
  42. data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -2
  43. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -2
  44. data/lib/selenium/webdriver/common/driver_extensions/has_bidi.rb +0 -2
  45. data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +0 -1
  46. data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -2
  47. data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +0 -2
  48. data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -2
  49. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -2
  50. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
  51. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +1 -2
  52. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +0 -1
  53. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
  54. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +0 -2
  55. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
  56. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +0 -2
  57. data/lib/selenium/webdriver/common/element.rb +7 -7
  58. data/lib/selenium/webdriver/common/error.rb +0 -2
  59. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
  60. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +3 -3
  61. data/lib/selenium/webdriver/common/interactions/pointer_move.rb +2 -2
  62. data/lib/selenium/webdriver/common/interactions/scroll.rb +7 -5
  63. data/lib/selenium/webdriver/common/logger.rb +10 -2
  64. data/lib/selenium/webdriver/common/options.rb +30 -8
  65. data/lib/selenium/webdriver/common/platform.rb +4 -1
  66. data/lib/selenium/webdriver/common/profile_helper.rb +1 -1
  67. data/lib/selenium/webdriver/common/proxy.rb +1 -1
  68. data/lib/selenium/webdriver/common/selenium_manager.rb +89 -0
  69. data/lib/selenium/webdriver/common/service.rb +16 -8
  70. data/lib/selenium/webdriver/common/service_manager.rb +2 -10
  71. data/lib/selenium/webdriver/common/shadow_root.rb +1 -2
  72. data/lib/selenium/webdriver/common/socket_lock.rb +2 -2
  73. data/lib/selenium/webdriver/common/takes_screenshot.rb +2 -3
  74. data/lib/selenium/webdriver/common/target_locator.rb +2 -3
  75. data/lib/selenium/webdriver/common/timeouts.rb +2 -2
  76. data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +8 -6
  77. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +0 -1
  78. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +16 -16
  79. data/lib/selenium/webdriver/common/websocket_connection.rb +10 -2
  80. data/lib/selenium/webdriver/common.rb +2 -0
  81. data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
  82. data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
  83. data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
  84. data/lib/selenium/webdriver/devtools/network_interceptor.rb +3 -6
  85. data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
  86. data/lib/selenium/webdriver/devtools/request.rb +0 -2
  87. data/lib/selenium/webdriver/devtools/response.rb +0 -2
  88. data/lib/selenium/webdriver/devtools.rb +0 -1
  89. data/lib/selenium/webdriver/edge/driver.rb +20 -3
  90. data/lib/selenium/webdriver/edge/features.rb +3 -4
  91. data/lib/selenium/webdriver/edge/options.rb +3 -5
  92. data/lib/selenium/webdriver/edge/profile.rb +2 -2
  93. data/lib/selenium/webdriver/edge/service.rb +2 -2
  94. data/lib/selenium/webdriver/firefox/driver.rb +19 -2
  95. data/lib/selenium/webdriver/firefox/features.rb +5 -2
  96. data/lib/selenium/webdriver/firefox/options.rb +6 -2
  97. data/lib/selenium/webdriver/firefox/profile.rb +6 -6
  98. data/lib/selenium/webdriver/firefox/service.rb +0 -1
  99. data/lib/selenium/webdriver/ie/driver.rb +20 -1
  100. data/lib/selenium/webdriver/ie/service.rb +1 -2
  101. data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +0 -2
  102. data/lib/selenium/webdriver/remote/bridge.rb +9 -15
  103. data/lib/selenium/webdriver/remote/capabilities.rb +34 -12
  104. data/lib/selenium/webdriver/remote/driver.rb +13 -13
  105. data/lib/selenium/webdriver/remote/http/curb.rb +0 -2
  106. data/lib/selenium/webdriver/remote/http/default.rb +1 -0
  107. data/lib/selenium/webdriver/remote/response.rb +0 -1
  108. data/lib/selenium/webdriver/remote.rb +0 -1
  109. data/lib/selenium/webdriver/safari/driver.rb +20 -1
  110. data/lib/selenium/webdriver/safari/features.rb +0 -2
  111. data/lib/selenium/webdriver/safari/options.rb +5 -1
  112. data/lib/selenium/webdriver/safari.rb +1 -1
  113. data/lib/selenium/webdriver/support/color.rb +15 -15
  114. data/lib/selenium/webdriver/support/guards/guard.rb +0 -2
  115. data/lib/selenium/webdriver/support/guards/guard_condition.rb +0 -2
  116. data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
  117. data/lib/selenium/webdriver/support/select.rb +3 -1
  118. data/lib/selenium/webdriver/version.rb +1 -1
  119. data/lib/selenium/webdriver.rb +3 -4
  120. data/selenium-webdriver.gemspec +8 -9
  121. metadata +31 -74
  122. data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
  123. data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0
4
+ version: 4.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
@@ -10,28 +10,8 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-08-09 00:00:00.000000000 Z
13
+ date: 2023-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: childprocess
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: '0.5'
22
- - - "<"
23
- - !ruby/object:Gem::Version
24
- version: '5.0'
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: '0.5'
32
- - - "<"
33
- - !ruby/object:Gem::Version
34
- version: '5.0'
35
15
  - !ruby/object:Gem::Dependency
36
16
  name: rexml
37
17
  requirement: !ruby/object:Gem::Requirement
@@ -86,20 +66,6 @@ dependencies:
86
66
  - - "~>"
87
67
  - !ruby/object:Gem::Version
88
68
  version: '1.0'
89
- - !ruby/object:Gem::Dependency
90
- name: ffi
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
69
  - !ruby/object:Gem::Dependency
104
70
  name: pry
105
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,20 +94,6 @@ dependencies:
128
94
  - - "~>"
129
95
  - !ruby/object:Gem::Version
130
96
  version: '2.0'
131
- - !ruby/object:Gem::Dependency
132
- name: rake
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
97
  - !ruby/object:Gem::Dependency
146
98
  name: rspec
147
99
  requirement: !ruby/object:Gem::Requirement
@@ -162,56 +114,42 @@ dependencies:
162
114
  requirements:
163
115
  - - "~>"
164
116
  - !ruby/object:Gem::Version
165
- version: '1.31'
117
+ version: '1.42'
166
118
  type: :development
167
119
  prerelease: false
168
120
  version_requirements: !ruby/object:Gem::Requirement
169
121
  requirements:
170
122
  - - "~>"
171
123
  - !ruby/object:Gem::Version
172
- version: '1.31'
124
+ version: '1.42'
173
125
  - !ruby/object:Gem::Dependency
174
126
  name: rubocop-performance
175
127
  requirement: !ruby/object:Gem::Requirement
176
128
  requirements:
177
129
  - - "~>"
178
130
  - !ruby/object:Gem::Version
179
- version: '1.13'
131
+ version: '1.15'
180
132
  type: :development
181
133
  prerelease: false
182
134
  version_requirements: !ruby/object:Gem::Requirement
183
135
  requirements:
184
136
  - - "~>"
185
137
  - !ruby/object:Gem::Version
186
- version: '1.13'
187
- - !ruby/object:Gem::Dependency
188
- name: rubocop-rake
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - ">="
192
- - !ruby/object:Gem::Version
193
- version: '0'
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - ">="
199
- - !ruby/object:Gem::Version
200
- version: '0'
138
+ version: '1.15'
201
139
  - !ruby/object:Gem::Dependency
202
140
  name: rubocop-rspec
203
141
  requirement: !ruby/object:Gem::Requirement
204
142
  requirements:
205
143
  - - "~>"
206
144
  - !ruby/object:Gem::Version
207
- version: '2.12'
145
+ version: '2.16'
208
146
  type: :development
209
147
  prerelease: false
210
148
  version_requirements: !ruby/object:Gem::Requirement
211
149
  requirements:
212
150
  - - "~>"
213
151
  - !ruby/object:Gem::Version
214
- version: '2.12'
152
+ version: '2.16'
215
153
  - !ruby/object:Gem::Dependency
216
154
  name: webmock
217
155
  requirement: !ruby/object:Gem::Requirement
@@ -271,6 +209,9 @@ files:
271
209
  - LICENSE
272
210
  - NOTICE
273
211
  - README.md
212
+ - bin/linux/selenium-manager
213
+ - bin/macos/selenium-manager
214
+ - bin/windows/selenium-manager.exe
274
215
  - lib/selenium-webdriver.rb
275
216
  - lib/selenium/server.rb
276
217
  - lib/selenium/webdriver.rb
@@ -280,6 +221,15 @@ files:
280
221
  - lib/selenium/webdriver/atoms/isDisplayed.js
281
222
  - lib/selenium/webdriver/atoms/mutationListener.js
282
223
  - lib/selenium/webdriver/bidi.rb
224
+ - lib/selenium/webdriver/bidi/browsing_context.rb
225
+ - lib/selenium/webdriver/bidi/browsing_context_info.rb
226
+ - lib/selenium/webdriver/bidi/log/base_log_entry.rb
227
+ - lib/selenium/webdriver/bidi/log/console_log_entry.rb
228
+ - lib/selenium/webdriver/bidi/log/filter_by.rb
229
+ - lib/selenium/webdriver/bidi/log/generic_log_entry.rb
230
+ - lib/selenium/webdriver/bidi/log/javascript_log_entry.rb
231
+ - lib/selenium/webdriver/bidi/log_inspector.rb
232
+ - lib/selenium/webdriver/bidi/navigate_result.rb
283
233
  - lib/selenium/webdriver/bidi/session.rb
284
234
  - lib/selenium/webdriver/chrome.rb
285
235
  - lib/selenium/webdriver/chrome/driver.rb
@@ -287,9 +237,16 @@ files:
287
237
  - lib/selenium/webdriver/chrome/options.rb
288
238
  - lib/selenium/webdriver/chrome/profile.rb
289
239
  - lib/selenium/webdriver/chrome/service.rb
240
+ - lib/selenium/webdriver/chromium.rb
241
+ - lib/selenium/webdriver/chromium/driver.rb
242
+ - lib/selenium/webdriver/chromium/features.rb
243
+ - lib/selenium/webdriver/chromium/options.rb
244
+ - lib/selenium/webdriver/chromium/profile.rb
245
+ - lib/selenium/webdriver/chromium/service.rb
290
246
  - lib/selenium/webdriver/common.rb
291
247
  - lib/selenium/webdriver/common/action_builder.rb
292
248
  - lib/selenium/webdriver/common/alert.rb
249
+ - lib/selenium/webdriver/common/child_process.rb
293
250
  - lib/selenium/webdriver/common/driver.rb
294
251
  - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
295
252
  - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
@@ -351,6 +308,7 @@ files:
351
308
  - lib/selenium/webdriver/common/profile_helper.rb
352
309
  - lib/selenium/webdriver/common/proxy.rb
353
310
  - lib/selenium/webdriver/common/search_context.rb
311
+ - lib/selenium/webdriver/common/selenium_manager.rb
354
312
  - lib/selenium/webdriver/common/service.rb
355
313
  - lib/selenium/webdriver/common/service_manager.rb
356
314
  - lib/selenium/webdriver/common/shadow_root.rb
@@ -395,8 +353,8 @@ files:
395
353
  - lib/selenium/webdriver/ie/service.rb
396
354
  - lib/selenium/webdriver/remote.rb
397
355
  - lib/selenium/webdriver/remote/bridge.rb
356
+ - lib/selenium/webdriver/remote/bridge/commands.rb
398
357
  - lib/selenium/webdriver/remote/capabilities.rb
399
- - lib/selenium/webdriver/remote/commands.rb
400
358
  - lib/selenium/webdriver/remote/driver.rb
401
359
  - lib/selenium/webdriver/remote/http/common.rb
402
360
  - lib/selenium/webdriver/remote/http/curb.rb
@@ -411,8 +369,6 @@ files:
411
369
  - lib/selenium/webdriver/support.rb
412
370
  - lib/selenium/webdriver/support/abstract_event_listener.rb
413
371
  - lib/selenium/webdriver/support/block_event_listener.rb
414
- - lib/selenium/webdriver/support/cdp/domain.rb.erb
415
- - lib/selenium/webdriver/support/cdp_client_generator.rb
416
372
  - lib/selenium/webdriver/support/color.rb
417
373
  - lib/selenium/webdriver/support/escaper.rb
418
374
  - lib/selenium/webdriver/support/event_firing_bridge.rb
@@ -428,6 +384,7 @@ licenses:
428
384
  - Apache-2.0
429
385
  metadata:
430
386
  changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
387
+ github_repo: ssh://github.com/SeleniumHQ/selenium
431
388
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
432
389
  rubygems_mfa_required: 'true'
433
390
  post_install_message:
@@ -445,7 +402,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
445
402
  - !ruby/object:Gem::Version
446
403
  version: 1.3.1
447
404
  requirements: []
448
- rubygems_version: 3.0.3.1
405
+ rubygems_version: 3.1.6
449
406
  signing_key:
450
407
  specification_version: 4
451
408
  summary: Selenium is a browser automation tool for automated testing of webapps and
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- # This file is automatically generated. Any changes will be lost!
21
- module Selenium
22
- module DevTools
23
- module <%= version %>
24
- class <%= domain[:domain] %>
25
- <% if domain[:events] %>
26
- EVENTS = {
27
- <% domain[:events].each do |event| %>
28
- <%= h.snake_case(event[:name]) %>: '<%= event[:name] %>',
29
- <% end %>
30
- }.freeze
31
- <% end %>
32
-
33
- def initialize(devtools)
34
- @devtools = devtools
35
- end
36
-
37
- def on(event, &block)
38
- event = EVENTS[event] if event.is_a?(Symbol)
39
- @devtools.callbacks["<%= domain[:domain] %>.#{event}"] << block
40
- end
41
-
42
- <% domain[:commands].each do |command| %>
43
- <% if command[:parameters] %>
44
- def <%= h.snake_case(command[:name]) %>(<%= h.kwargs(command[:parameters]) %>)
45
- <% else %>
46
- def <%= h.snake_case(command[:name]) %>
47
- <% end %>
48
- <% if command[:parameters] %>
49
- @devtools.send_cmd('<%= domain[:domain] %>.<%= command[:name] %>',
50
- <% until command[:parameters].empty? %>
51
- <% parameter = command[:parameters].shift %>
52
- <%= parameter[:name] %>: <%= h.snake_case(parameter[:name]) %><%= command[:parameters].empty? ? ')' : ',' %>
53
- <% end %>
54
- <% else %>
55
- @devtools.send_cmd('<%= domain[:domain] %>.<%= command[:name] %>')
56
- <% end %>
57
- end
58
-
59
- <% end %>
60
- end # <%= domain[:domain] %>
61
- end # <%= version %>
62
- end # DevTools
63
- end # Selenium
@@ -1,108 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- require 'erb'
21
- require 'fileutils'
22
- require 'json'
23
-
24
- module Selenium
25
- module WebDriver
26
- module Support
27
- class CDPClientGenerator
28
- # Input JSON files are generated from PDL tasks.
29
- TEMPLATE_PATH = File.expand_path('cdp/domain.rb.erb', __dir__)
30
-
31
- RESERVED_KEYWORDS = %w[end].freeze
32
-
33
- def call(output_dir:, version:, browser_protocol_path: nil, js_protocol_path: nil, loader_path: nil, **)
34
- @template = ERB.new(File.read(TEMPLATE_PATH))
35
- @output_dir = output_dir
36
- @loader_path = loader_path || "#{@output_dir}.rb"
37
- @version = version
38
-
39
- browser_protocol_path ||= File.expand_path('cdp/browser_protocol.json', __dir__)
40
- js_protocol_path ||= File.expand_path('cdp/js_protocol.json', __dir__)
41
-
42
- browser_protocol = JSON.parse(File.read(browser_protocol_path), symbolize_names: true)
43
- js_protocol = JSON.parse(File.read(js_protocol_path), symbolize_names: true)
44
-
45
- FileUtils.mkdir_p(@output_dir)
46
-
47
- browser_protocol[:domains].each { |domain| process_domain(domain) }
48
- js_protocol[:domains].each { |domain| process_domain(domain) }
49
- require_file
50
- end
51
-
52
- def process_domain(domain)
53
- result = @template.result_with_hash(domain: domain, version: @version.upcase, h: self)
54
- filename = File.join(@output_dir, "#{snake_case(domain[:domain])}.rb")
55
- File.write(filename, remove_empty_lines(result))
56
- end
57
-
58
- def snake_case(string)
59
- name = string.gsub('JavaScript', 'Javascript')
60
- .gsub(/([A-Z]+)([A-Z][a-z]{2,})/, '\1_\2')
61
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
62
- .downcase
63
- # Certain CDP parameters conflict with Ruby keywords
64
- # so we prefix the name with underscore.
65
- name = "_#{name}" if RESERVED_KEYWORDS.include?(name)
66
-
67
- name
68
- end
69
-
70
- def kwargs(parameters)
71
- parameters = parameters.map do |parameter|
72
- if parameter[:optional]
73
- "#{snake_case(parameter[:name])}: nil"
74
- else
75
- "#{snake_case(parameter[:name])}:"
76
- end
77
- end
78
- parameters.join(', ')
79
- end
80
-
81
- def remove_empty_lines(string)
82
- string.split("\n").grep_v(/^\s+$/).join("\n")
83
- end
84
-
85
- def require_file
86
- # rubocop:disable Lint/InterpolationCheck
87
- dynamic_location = '#{File.dirname(File.absolute_path(__FILE__))}'
88
- # rubocop:enable Lint/InterpolationCheck
89
-
90
- require_all = "Dir.glob(\"#{dynamic_location}/#{@version}/*\", &method(:require))"
91
- File.write(@loader_path, require_all)
92
- end
93
- end
94
- end
95
- end
96
- end
97
-
98
- if $PROGRAM_NAME == __FILE__
99
- browser_protocol_path, js_protocol_path, output_dir, loader_path, version = *ARGV
100
-
101
- Selenium::WebDriver::Support::CDPClientGenerator.new.call(
102
- browser_protocol_path: browser_protocol_path,
103
- js_protocol_path: js_protocol_path,
104
- output_dir: output_dir,
105
- loader_path: loader_path,
106
- version: version
107
- )
108
- end