selenium-webdriver 4.49.0 → 4.51.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 (219) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +20 -0
  3. data/Gemfile +0 -0
  4. data/LICENSE +0 -0
  5. data/NOTICE +0 -0
  6. data/README.md +0 -0
  7. data/bin/linux-arm64/selenium-manager +0 -0
  8. data/bin/linux-x86_64/selenium-manager +0 -0
  9. data/bin/macos/selenium-manager +0 -0
  10. data/bin/selenium-manager-THIRD-PARTY-NOTICES.txt +77 -46
  11. data/bin/selenium-manager.cdx.json +475 -475
  12. data/bin/windows/selenium-manager.exe +0 -0
  13. data/lib/selenium/server.rb +0 -0
  14. data/lib/selenium/webdriver/atoms/findElements.js +19 -4
  15. data/lib/selenium/webdriver/atoms/getAttribute.js +5 -2
  16. data/lib/selenium/webdriver/atoms/isDisplayed.js +5 -2
  17. data/lib/selenium/webdriver/atoms.rb +0 -0
  18. data/lib/selenium/webdriver/bidi/browser.rb +0 -0
  19. data/lib/selenium/webdriver/bidi/browsing_context.rb +0 -0
  20. data/lib/selenium/webdriver/bidi/error.rb +0 -0
  21. data/lib/selenium/webdriver/bidi/log_handler.rb +0 -0
  22. data/lib/selenium/webdriver/bidi/network/cookies.rb +0 -0
  23. data/lib/selenium/webdriver/bidi/network/credentials.rb +0 -0
  24. data/lib/selenium/webdriver/bidi/network/headers.rb +0 -0
  25. data/lib/selenium/webdriver/bidi/network/intercepted_auth.rb +0 -0
  26. data/lib/selenium/webdriver/bidi/network/intercepted_item.rb +0 -0
  27. data/lib/selenium/webdriver/bidi/network/intercepted_request.rb +0 -0
  28. data/lib/selenium/webdriver/bidi/network/intercepted_response.rb +0 -0
  29. data/lib/selenium/webdriver/bidi/network/url_pattern.rb +0 -0
  30. data/lib/selenium/webdriver/bidi/network.rb +0 -0
  31. data/lib/selenium/webdriver/bidi/protocol/bluetooth.rb +27 -23
  32. data/lib/selenium/webdriver/bidi/protocol/browser.rb +0 -0
  33. data/lib/selenium/webdriver/bidi/protocol/browsing_context.rb +58 -4
  34. data/lib/selenium/webdriver/bidi/protocol/digital_credentials.rb +69 -0
  35. data/lib/selenium/webdriver/bidi/protocol/domain.rb +0 -0
  36. data/lib/selenium/webdriver/bidi/protocol/emulation.rb +31 -0
  37. data/lib/selenium/webdriver/bidi/protocol/error_code.rb +0 -0
  38. data/lib/selenium/webdriver/bidi/protocol/input.rb +0 -0
  39. data/lib/selenium/webdriver/bidi/protocol/log.rb +0 -0
  40. data/lib/selenium/webdriver/bidi/protocol/moz_debugging.rb +334 -0
  41. data/lib/selenium/webdriver/bidi/protocol/moz_profiler.rb +108 -0
  42. data/lib/selenium/webdriver/bidi/protocol/network.rb +0 -0
  43. data/lib/selenium/webdriver/bidi/protocol/permissions.rb +0 -0
  44. data/lib/selenium/webdriver/bidi/protocol/script.rb +1 -1
  45. data/lib/selenium/webdriver/bidi/protocol/session.rb +21 -20
  46. data/lib/selenium/webdriver/bidi/protocol/speculation.rb +0 -0
  47. data/lib/selenium/webdriver/bidi/protocol/storage.rb +0 -0
  48. data/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb +0 -0
  49. data/lib/selenium/webdriver/bidi/protocol/web_extension.rb +41 -5
  50. data/lib/selenium/webdriver/bidi/protocol.rb +3 -0
  51. data/lib/selenium/webdriver/bidi/serialization/record.rb +35 -2
  52. data/lib/selenium/webdriver/bidi/serialization/union.rb +0 -0
  53. data/lib/selenium/webdriver/bidi/serialization.rb +0 -0
  54. data/lib/selenium/webdriver/bidi/session.rb +0 -0
  55. data/lib/selenium/webdriver/bidi/struct.rb +0 -0
  56. data/lib/selenium/webdriver/bidi/support/bidi_generate.rb +178 -42
  57. data/lib/selenium/webdriver/bidi/support/check_generated.rb +0 -0
  58. data/lib/selenium/webdriver/bidi/transport.rb +0 -0
  59. data/lib/selenium/webdriver/bidi.rb +0 -0
  60. data/lib/selenium/webdriver/chrome/driver.rb +0 -0
  61. data/lib/selenium/webdriver/chrome/features.rb +0 -0
  62. data/lib/selenium/webdriver/chrome/options.rb +0 -0
  63. data/lib/selenium/webdriver/chrome/profile.rb +0 -0
  64. data/lib/selenium/webdriver/chrome/service.rb +0 -0
  65. data/lib/selenium/webdriver/chrome.rb +0 -0
  66. data/lib/selenium/webdriver/chromium/driver.rb +0 -0
  67. data/lib/selenium/webdriver/chromium/features.rb +0 -0
  68. data/lib/selenium/webdriver/chromium/options.rb +0 -0
  69. data/lib/selenium/webdriver/chromium/profile.rb +0 -0
  70. data/lib/selenium/webdriver/chromium.rb +0 -0
  71. data/lib/selenium/webdriver/common/action_builder.rb +0 -0
  72. data/lib/selenium/webdriver/common/alert.rb +0 -0
  73. data/lib/selenium/webdriver/common/child_process.rb +0 -0
  74. data/lib/selenium/webdriver/common/client_config.rb +0 -0
  75. data/lib/selenium/webdriver/common/driver.rb +24 -0
  76. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -0
  77. data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -0
  78. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +2 -0
  79. data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -0
  80. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -0
  81. data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +0 -0
  82. data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -0
  83. data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +0 -0
  84. data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -0
  85. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -0
  86. data/lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb +0 -0
  87. data/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb +0 -0
  88. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -0
  89. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +0 -0
  90. data/lib/selenium/webdriver/common/driver_extensions/has_logs.rb +0 -0
  91. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -0
  92. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +0 -0
  93. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -0
  94. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +0 -0
  95. data/lib/selenium/webdriver/common/driver_extensions/has_session_events.rb +0 -0
  96. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +0 -0
  97. data/lib/selenium/webdriver/common/driver_extensions/prints_page.rb +0 -0
  98. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +0 -0
  99. data/lib/selenium/webdriver/common/driver_finder.rb +0 -0
  100. data/lib/selenium/webdriver/common/element.rb +0 -0
  101. data/lib/selenium/webdriver/common/error.rb +0 -0
  102. data/lib/selenium/webdriver/common/fedcm/account.rb +0 -0
  103. data/lib/selenium/webdriver/common/fedcm/dialog.rb +0 -0
  104. data/lib/selenium/webdriver/common/fedcm.rb +0 -0
  105. data/lib/selenium/webdriver/common/file_reaper.rb +0 -0
  106. data/lib/selenium/webdriver/common/interactions/input_device.rb +0 -0
  107. data/lib/selenium/webdriver/common/interactions/interaction.rb +0 -0
  108. data/lib/selenium/webdriver/common/interactions/interactions.rb +0 -0
  109. data/lib/selenium/webdriver/common/interactions/key_actions.rb +0 -0
  110. data/lib/selenium/webdriver/common/interactions/key_input.rb +0 -0
  111. data/lib/selenium/webdriver/common/interactions/none_input.rb +0 -0
  112. data/lib/selenium/webdriver/common/interactions/pause.rb +0 -0
  113. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +0 -0
  114. data/lib/selenium/webdriver/common/interactions/pointer_cancel.rb +0 -0
  115. data/lib/selenium/webdriver/common/interactions/pointer_event_properties.rb +0 -0
  116. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +0 -0
  117. data/lib/selenium/webdriver/common/interactions/pointer_move.rb +0 -0
  118. data/lib/selenium/webdriver/common/interactions/pointer_press.rb +0 -0
  119. data/lib/selenium/webdriver/common/interactions/scroll.rb +0 -0
  120. data/lib/selenium/webdriver/common/interactions/scroll_origin.rb +0 -0
  121. data/lib/selenium/webdriver/common/interactions/typing_interaction.rb +0 -0
  122. data/lib/selenium/webdriver/common/interactions/wheel_actions.rb +0 -0
  123. data/lib/selenium/webdriver/common/interactions/wheel_input.rb +0 -0
  124. data/lib/selenium/webdriver/common/keys.rb +0 -0
  125. data/lib/selenium/webdriver/common/local_driver.rb +0 -0
  126. data/lib/selenium/webdriver/common/log_entry.rb +0 -0
  127. data/lib/selenium/webdriver/common/logger.rb +0 -0
  128. data/lib/selenium/webdriver/common/logs.rb +0 -0
  129. data/lib/selenium/webdriver/common/manager.rb +0 -0
  130. data/lib/selenium/webdriver/common/navigation.rb +0 -0
  131. data/lib/selenium/webdriver/common/network.rb +0 -0
  132. data/lib/selenium/webdriver/common/options.rb +0 -0
  133. data/lib/selenium/webdriver/common/platform.rb +0 -0
  134. data/lib/selenium/webdriver/common/port_prober.rb +0 -0
  135. data/lib/selenium/webdriver/common/print_options.rb +0 -0
  136. data/lib/selenium/webdriver/common/profile_helper.rb +0 -0
  137. data/lib/selenium/webdriver/common/proxy.rb +0 -0
  138. data/lib/selenium/webdriver/common/script.rb +0 -0
  139. data/lib/selenium/webdriver/common/search_context.rb +0 -0
  140. data/lib/selenium/webdriver/common/selenium_manager.rb +0 -0
  141. data/lib/selenium/webdriver/common/service.rb +0 -0
  142. data/lib/selenium/webdriver/common/service_manager.rb +0 -0
  143. data/lib/selenium/webdriver/common/shadow_root.rb +0 -0
  144. data/lib/selenium/webdriver/common/socket_lock.rb +0 -0
  145. data/lib/selenium/webdriver/common/socket_poller.rb +0 -0
  146. data/lib/selenium/webdriver/common/takes_screenshot.rb +0 -0
  147. data/lib/selenium/webdriver/common/target_locator.rb +0 -0
  148. data/lib/selenium/webdriver/common/timeouts.rb +0 -0
  149. data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +0 -0
  150. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +0 -0
  151. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +0 -0
  152. data/lib/selenium/webdriver/common/wait.rb +0 -0
  153. data/lib/selenium/webdriver/common/web_extension.rb +42 -0
  154. data/lib/selenium/webdriver/common/websocket_connection.rb +2 -2
  155. data/lib/selenium/webdriver/common/window.rb +0 -0
  156. data/lib/selenium/webdriver/common/zipper.rb +15 -11
  157. data/lib/selenium/webdriver/common.rb +1 -0
  158. data/lib/selenium/webdriver/devtools/console_event.rb +0 -0
  159. data/lib/selenium/webdriver/devtools/exception_event.rb +0 -0
  160. data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -0
  161. data/lib/selenium/webdriver/devtools/network_interceptor.rb +0 -0
  162. data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -0
  163. data/lib/selenium/webdriver/devtools/request.rb +0 -0
  164. data/lib/selenium/webdriver/devtools/response.rb +0 -0
  165. data/lib/selenium/webdriver/devtools.rb +0 -0
  166. data/lib/selenium/webdriver/edge/driver.rb +0 -0
  167. data/lib/selenium/webdriver/edge/features.rb +0 -0
  168. data/lib/selenium/webdriver/edge/options.rb +0 -0
  169. data/lib/selenium/webdriver/edge/profile.rb +0 -0
  170. data/lib/selenium/webdriver/edge/service.rb +0 -0
  171. data/lib/selenium/webdriver/edge.rb +0 -0
  172. data/lib/selenium/webdriver/firefox/driver.rb +0 -0
  173. data/lib/selenium/webdriver/firefox/features.rb +18 -7
  174. data/lib/selenium/webdriver/firefox/options.rb +0 -0
  175. data/lib/selenium/webdriver/firefox/profile.rb +0 -37
  176. data/lib/selenium/webdriver/firefox/profiles_ini.rb +0 -0
  177. data/lib/selenium/webdriver/firefox/service.rb +0 -0
  178. data/lib/selenium/webdriver/firefox/util.rb +0 -0
  179. data/lib/selenium/webdriver/firefox.rb +0 -2
  180. data/lib/selenium/webdriver/ie/driver.rb +0 -0
  181. data/lib/selenium/webdriver/ie/features.rb +0 -0
  182. data/lib/selenium/webdriver/ie/options.rb +0 -0
  183. data/lib/selenium/webdriver/ie/service.rb +0 -0
  184. data/lib/selenium/webdriver/ie.rb +0 -0
  185. data/lib/selenium/webdriver/remote/bidi_bridge.rb +23 -0
  186. data/lib/selenium/webdriver/remote/bridge/commands.rb +0 -0
  187. data/lib/selenium/webdriver/remote/bridge/locator_converter.rb +0 -0
  188. data/lib/selenium/webdriver/remote/bridge.rb +20 -6
  189. data/lib/selenium/webdriver/remote/capabilities.rb +0 -0
  190. data/lib/selenium/webdriver/remote/driver.rb +0 -0
  191. data/lib/selenium/webdriver/remote/features.rb +9 -8
  192. data/lib/selenium/webdriver/remote/http/common.rb +0 -0
  193. data/lib/selenium/webdriver/remote/http/curb.rb +0 -0
  194. data/lib/selenium/webdriver/remote/http/default.rb +0 -0
  195. data/lib/selenium/webdriver/remote/response.rb +0 -0
  196. data/lib/selenium/webdriver/remote/server_error.rb +0 -0
  197. data/lib/selenium/webdriver/remote.rb +0 -0
  198. data/lib/selenium/webdriver/safari/driver.rb +0 -0
  199. data/lib/selenium/webdriver/safari/features.rb +0 -0
  200. data/lib/selenium/webdriver/safari/options.rb +0 -0
  201. data/lib/selenium/webdriver/safari/service.rb +0 -0
  202. data/lib/selenium/webdriver/safari.rb +0 -0
  203. data/lib/selenium/webdriver/support/abstract_event_listener.rb +0 -0
  204. data/lib/selenium/webdriver/support/block_event_listener.rb +0 -0
  205. data/lib/selenium/webdriver/support/color.rb +0 -0
  206. data/lib/selenium/webdriver/support/escaper.rb +0 -0
  207. data/lib/selenium/webdriver/support/event_firing_bridge.rb +0 -0
  208. data/lib/selenium/webdriver/support/guards/guard.rb +0 -0
  209. data/lib/selenium/webdriver/support/guards/guard_condition.rb +0 -0
  210. data/lib/selenium/webdriver/support/guards.rb +0 -0
  211. data/lib/selenium/webdriver/support/relative_locator.rb +0 -0
  212. data/lib/selenium/webdriver/support/select.rb +0 -0
  213. data/lib/selenium/webdriver/support.rb +0 -0
  214. data/lib/selenium/webdriver/version.rb +1 -1
  215. data/lib/selenium/webdriver.rb +0 -0
  216. data/lib/selenium-webdriver.rb +0 -0
  217. data/selenium-webdriver.gemspec +0 -1
  218. metadata +7 -27
  219. data/lib/selenium/webdriver/firefox/extension.rb +0 -103
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Selenium
21
21
  module WebDriver
22
- VERSION = '4.49.0'
22
+ VERSION = '4.51.0'
23
23
  end # WebDriver
24
24
  end # Selenium
File without changes
File without changes
@@ -51,7 +51,6 @@ Gem::Specification.new do |s|
51
51
 
52
52
  s.add_dependency 'base64', ['~> 0.2']
53
53
  s.add_dependency 'logger', ['~> 1.4']
54
- s.add_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
55
54
  s.add_dependency 'rubyzip', ['>= 1.2.2', '< 4.0']
56
55
  s.add_dependency 'websocket', ['~> 1.0']
57
56
 
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.49.0
4
+ version: 4.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
8
8
  - Titus Fortner
9
9
  - Thomas Walpole
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2026-09-09 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: base64
@@ -40,26 +39,6 @@ dependencies:
40
39
  - - "~>"
41
40
  - !ruby/object:Gem::Version
42
41
  version: '1.4'
43
- - !ruby/object:Gem::Dependency
44
- name: rexml
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '3.2'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 3.2.5
53
- type: :runtime
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '3.2'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 3.2.5
63
42
  - !ruby/object:Gem::Dependency
64
43
  name: rubyzip
65
44
  requirement: !ruby/object:Gem::Requirement
@@ -303,11 +282,14 @@ files:
303
282
  - lib/selenium/webdriver/bidi/protocol/bluetooth.rb
304
283
  - lib/selenium/webdriver/bidi/protocol/browser.rb
305
284
  - lib/selenium/webdriver/bidi/protocol/browsing_context.rb
285
+ - lib/selenium/webdriver/bidi/protocol/digital_credentials.rb
306
286
  - lib/selenium/webdriver/bidi/protocol/domain.rb
307
287
  - lib/selenium/webdriver/bidi/protocol/emulation.rb
308
288
  - lib/selenium/webdriver/bidi/protocol/error_code.rb
309
289
  - lib/selenium/webdriver/bidi/protocol/input.rb
310
290
  - lib/selenium/webdriver/bidi/protocol/log.rb
291
+ - lib/selenium/webdriver/bidi/protocol/moz_debugging.rb
292
+ - lib/selenium/webdriver/bidi/protocol/moz_profiler.rb
311
293
  - lib/selenium/webdriver/bidi/protocol/network.rb
312
294
  - lib/selenium/webdriver/bidi/protocol/permissions.rb
313
295
  - lib/selenium/webdriver/bidi/protocol/script.rb
@@ -418,6 +400,7 @@ files:
418
400
  - lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb
419
401
  - lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb
420
402
  - lib/selenium/webdriver/common/wait.rb
403
+ - lib/selenium/webdriver/common/web_extension.rb
421
404
  - lib/selenium/webdriver/common/websocket_connection.rb
422
405
  - lib/selenium/webdriver/common/window.rb
423
406
  - lib/selenium/webdriver/common/zipper.rb
@@ -437,7 +420,6 @@ files:
437
420
  - lib/selenium/webdriver/edge/service.rb
438
421
  - lib/selenium/webdriver/firefox.rb
439
422
  - lib/selenium/webdriver/firefox/driver.rb
440
- - lib/selenium/webdriver/firefox/extension.rb
441
423
  - lib/selenium/webdriver/firefox/features.rb
442
424
  - lib/selenium/webdriver/firefox/options.rb
443
425
  - lib/selenium/webdriver/firefox/profile.rb
@@ -490,7 +472,6 @@ metadata:
490
472
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
491
473
  rubygems_mfa_required: 'true'
492
474
  funding_uri: https://github.com/sponsors/SeleniumHQ
493
- post_install_message:
494
475
  rdoc_options: []
495
476
  require_paths:
496
477
  - lib
@@ -505,8 +486,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
505
486
  - !ruby/object:Gem::Version
506
487
  version: 1.3.1
507
488
  requirements: []
508
- rubygems_version: 3.5.22
509
- signing_key:
489
+ rubygems_version: 4.0.3
510
490
  specification_version: 4
511
491
  summary: Selenium is a browser automation tool for automated testing of webapps and
512
492
  more
@@ -1,103 +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
- module Selenium
21
- module WebDriver
22
- module Firefox
23
- #
24
- # @api private
25
- #
26
-
27
- class Extension
28
- NAMESPACE = 'http://www.mozilla.org/2004/em-rdf#'
29
-
30
- def initialize(path)
31
- raise Error::WebDriverError, "could not find extension at #{path.inspect}" unless File.exist?(path)
32
-
33
- @path = path
34
- @should_reap_root = false
35
- end
36
-
37
- def write_to(extensions_dir)
38
- root_dir = create_root
39
- ext_path = File.join extensions_dir, read_id(root_dir)
40
-
41
- FileUtils.rm_rf ext_path
42
- FileUtils.mkdir_p File.dirname(ext_path), mode: 0o700
43
- FileUtils.cp_r root_dir, ext_path
44
-
45
- FileReaper.reap(root_dir) if @should_reap_root
46
- end
47
-
48
- private
49
-
50
- def create_root
51
- if File.directory? @path
52
- @path
53
- else
54
- unless Zipper::EXTENSIONS.include? File.extname(@path)
55
- raise Error::WebDriverError, "expected #{Zipper::EXTENSIONS.join(' or ')}, got #{@path.inspect}"
56
- end
57
-
58
- @should_reap_root = true
59
- Zipper.unzip(@path)
60
- end
61
- end
62
-
63
- def read_id(directory)
64
- read_id_from_install_rdf(directory) || read_id_from_manifest_json(directory)
65
- end
66
-
67
- def read_id_from_install_rdf(directory)
68
- rdf_path = File.join(directory, 'install.rdf')
69
- return unless File.exist?(rdf_path)
70
-
71
- doc = REXML::Document.new(File.read(rdf_path))
72
- namespace = doc.root.namespaces.key(NAMESPACE)
73
-
74
- if namespace
75
- id_node = REXML::XPath.first(doc, "//#{namespace}:id")
76
- return id_node.text if id_node
77
-
78
- attr_node = REXML::XPath.first(doc, "//@#{namespace}:id")
79
- return attr_node.value if attr_node
80
- end
81
-
82
- raise Error::WebDriverError, "cannot locate extension id in #{rdf_path}"
83
- end
84
-
85
- def read_id_from_manifest_json(directory)
86
- manifest_path = File.join(directory, 'manifest.json')
87
- return unless File.exist?(manifest_path)
88
-
89
- manifest = JSON.parse(File.read(manifest_path))
90
- applications_gecko_id(manifest) || name_and_version(manifest)
91
- end
92
-
93
- def applications_gecko_id(manifest)
94
- manifest.dig('applications', 'gecko', 'id')&.strip
95
- end
96
-
97
- def name_and_version(manifest)
98
- [manifest['name'].delete(' '), manifest['version']].join('@')
99
- end
100
- end # Extension
101
- end # Firefox
102
- end # WebDriver
103
- end # Selenium