selenium-webdriver 4.0.0.beta3 → 4.0.0.beta4

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.
File without changes
File without changes
@@ -28,6 +28,7 @@ module Selenium
28
28
 
29
29
  class Driver < WebDriver::Driver
30
30
  EXTENSIONS = [DriverExtensions::HasAddons,
31
+ DriverExtensions::FullPageScreenshot,
31
32
  DriverExtensions::HasDevTools,
32
33
  DriverExtensions::HasLogEvents,
33
34
  DriverExtensions::HasNetworkInterception,
@@ -24,7 +24,8 @@ module Selenium
24
24
 
25
25
  FIREFOX_COMMANDS = {
26
26
  install_addon: [:post, 'session/:session_id/moz/addon/install'],
27
- uninstall_addon: [:post, 'session/:session_id/moz/addon/uninstall']
27
+ uninstall_addon: [:post, 'session/:session_id/moz/addon/uninstall'],
28
+ full_page_screenshot: [:get, 'session/:session_id/moz/screenshot/full']
28
29
  }.freeze
29
30
 
30
31
  def commands(command)
@@ -41,6 +42,10 @@ module Selenium
41
42
  execute :uninstall_addon, {}, {id: id}
42
43
  end
43
44
 
45
+ def full_screenshot
46
+ execute :full_page_screenshot
47
+ end
48
+
44
49
  end # Bridge
45
50
  end # Firefox
46
51
  end # WebDriver
@@ -603,7 +603,7 @@ module Selenium
603
603
  end
604
604
 
605
605
  def prepare_capabilities_payload(capabilities)
606
- capabilities = {firstMatch: [capabilities]} if !capabilities['alwaysMatch'] && !capabilities['firstMatch']
606
+ capabilities = {alwaysMatch: capabilities} if !capabilities['alwaysMatch'] && !capabilities['firstMatch']
607
607
  {capabilities: capabilities}
608
608
  end
609
609
 
@@ -307,23 +307,13 @@ module Selenium
307
307
  when :platform
308
308
  value.to_s.upcase
309
309
  when :proxy
310
- convert_proxy(value)
310
+ value&.as_json
311
311
  when :unhandled_prompt_behavior
312
312
  value.is_a?(Symbol) ? value.to_s.tr('_', ' ') : value
313
313
  else
314
314
  value
315
315
  end
316
316
  end
317
-
318
- def convert_proxy(value)
319
- return unless value
320
-
321
- hash = value.as_json
322
- hash['proxyType'] &&= hash['proxyType'].downcase
323
- hash['noProxy'] = hash['noProxy'].split(', ') if hash['noProxy'].is_a?(String)
324
-
325
- hash
326
- end
327
317
  end # Capabilities
328
318
  end # Remote
329
319
  end # WebDriver
@@ -0,0 +1,63 @@
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
@@ -0,0 +1,108 @@
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(&method(:process_domain))
48
+ js_protocol[:domains].each(&method(:process_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").reject { |l| l =~ /^\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.open(@loader_path, 'w') { |file| file.write(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
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Selenium
21
21
  module WebDriver
22
- VERSION = '4.0.0.beta3'
22
+ VERSION = '4.0.0.beta4'
23
23
  end # WebDriver
24
24
  end # Selenium
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ root = File.expand_path(File.dirname(__FILE__))
4
+ raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
5
+
6
+ $LOAD_PATH.push(File.expand_path('lib', root))
7
+ require 'selenium/webdriver/version'
8
+
9
+ Gem::Specification.new do |s|
10
+ s.name = 'selenium-webdriver'
11
+ s.version = Selenium::WebDriver::VERSION
12
+
13
+ s.authors = ['Alex Rodionov', 'Titus Fortner', 'Thomas Walpole']
14
+ s.email = %w[p0deje@gmail.com titusfortner@gmail.com twalpole@gmail.com]
15
+
16
+ s.summary = 'Selenium is a browser automation tool for automated testing of webapps and more'
17
+ s.description = <<-DESCRIPTION
18
+ Selenium implements the W3C WebDriver protocol to automate popular browsers.
19
+ It aims to mimic the behaviour of a real user as it interacts with the application's HTML.
20
+ It's primarily intended for web application testing, but any web-based task can automated.
21
+ DESCRIPTION
22
+
23
+ s.license = 'Apache-2.0'
24
+ s.homepage = 'https://selenium.dev'
25
+ s.metadata = {
26
+ 'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
27
+ 'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb'
28
+ }
29
+
30
+ s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
31
+ s.required_ruby_version = Gem::Requirement.new('>= 2.5')
32
+
33
+ s.files = [
34
+ 'CHANGES',
35
+ 'LICENSE',
36
+ 'NOTICE',
37
+ 'Gemfile',
38
+ 'README.md',
39
+ 'selenium-webdriver.gemspec',
40
+ 'lib/selenium-webdriver.rb',
41
+ 'lib/selenium/server.rb',
42
+ 'lib/selenium/webdriver.rb'
43
+ ] + Dir['lib/selenium/webdriver/**/*']
44
+
45
+ s.require_paths = ['lib']
46
+
47
+ s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
48
+ s.add_runtime_dependency 'rexml', ['~> 3.2']
49
+ s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
50
+
51
+ # childprocess requires ffi on windows but doesn't declare it in its dependencies
52
+ s.add_development_dependency 'ffi'
53
+ s.add_development_dependency 'rack', ['~> 2.0']
54
+ s.add_development_dependency 'rake'
55
+ s.add_development_dependency 'rspec', ['~> 3.0']
56
+ s.add_development_dependency 'rubocop', ['~> 1.8.0']
57
+ s.add_development_dependency 'rubocop-performance'
58
+ s.add_development_dependency 'rubocop-rspec'
59
+ s.add_development_dependency 'webmock', ['~> 3.5']
60
+ s.add_development_dependency 'webrick', ['~> 1.7']
61
+ s.add_development_dependency 'yard', ['~> 0.9.11']
62
+ end
metadata CHANGED
@@ -1,18 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.beta3
4
+ version: 4.0.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
8
8
  - Titus Fortner
9
9
  - Thomas Walpole
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-04-13 00:00:00.000000000 Z
13
+ date: 2021-06-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
+ name: childprocess
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
19
  - - ">="
@@ -21,9 +22,8 @@ dependencies:
21
22
  - - "<"
22
23
  - !ruby/object:Gem::Version
23
24
  version: '5.0'
24
- name: childprocess
25
- prerelease: false
26
25
  type: :runtime
26
+ prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
28
  requirements:
29
29
  - - ">="
@@ -33,182 +33,168 @@ dependencies:
33
33
  - !ruby/object:Gem::Version
34
34
  version: '5.0'
35
35
  - !ruby/object:Gem::Dependency
36
+ name: rexml
36
37
  requirement: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
41
  version: '3.2'
41
- name: rexml
42
- prerelease: false
43
42
  type: :runtime
43
+ prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '3.2'
49
49
  - !ruby/object:Gem::Dependency
50
+ name: rubyzip
50
51
  requirement: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - ">="
53
54
  - !ruby/object:Gem::Version
54
55
  version: 1.2.2
55
- name: rubyzip
56
- prerelease: false
57
56
  type: :runtime
57
+ prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: 1.2.2
63
63
  - !ruby/object:Gem::Dependency
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.0'
69
- name: websocket
70
- prerelease: false
71
- type: :runtime
72
- version_requirements: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '1.0'
77
- - !ruby/object:Gem::Dependency
64
+ name: ffi
78
65
  requirement: !ruby/object:Gem::Requirement
79
66
  requirements:
80
67
  - - ">="
81
68
  - !ruby/object:Gem::Version
82
69
  version: '0'
83
- name: ffi
84
- prerelease: false
85
70
  type: :development
71
+ prerelease: false
86
72
  version_requirements: !ruby/object:Gem::Requirement
87
73
  requirements:
88
74
  - - ">="
89
75
  - !ruby/object:Gem::Version
90
76
  version: '0'
91
77
  - !ruby/object:Gem::Dependency
78
+ name: rack
92
79
  requirement: !ruby/object:Gem::Requirement
93
80
  requirements:
94
81
  - - "~>"
95
82
  - !ruby/object:Gem::Version
96
83
  version: '2.0'
97
- name: rack
98
- prerelease: false
99
84
  type: :development
85
+ prerelease: false
100
86
  version_requirements: !ruby/object:Gem::Requirement
101
87
  requirements:
102
88
  - - "~>"
103
89
  - !ruby/object:Gem::Version
104
90
  version: '2.0'
105
91
  - !ruby/object:Gem::Dependency
92
+ name: rake
106
93
  requirement: !ruby/object:Gem::Requirement
107
94
  requirements:
108
95
  - - ">="
109
96
  - !ruby/object:Gem::Version
110
97
  version: '0'
111
- name: rake
112
- prerelease: false
113
98
  type: :development
99
+ prerelease: false
114
100
  version_requirements: !ruby/object:Gem::Requirement
115
101
  requirements:
116
102
  - - ">="
117
103
  - !ruby/object:Gem::Version
118
104
  version: '0'
119
105
  - !ruby/object:Gem::Dependency
106
+ name: rspec
120
107
  requirement: !ruby/object:Gem::Requirement
121
108
  requirements:
122
109
  - - "~>"
123
110
  - !ruby/object:Gem::Version
124
111
  version: '3.0'
125
- name: rspec
126
- prerelease: false
127
112
  type: :development
113
+ prerelease: false
128
114
  version_requirements: !ruby/object:Gem::Requirement
129
115
  requirements:
130
116
  - - "~>"
131
117
  - !ruby/object:Gem::Version
132
118
  version: '3.0'
133
119
  - !ruby/object:Gem::Dependency
120
+ name: rubocop
134
121
  requirement: !ruby/object:Gem::Requirement
135
122
  requirements:
136
123
  - - "~>"
137
124
  - !ruby/object:Gem::Version
138
125
  version: 1.8.0
139
- name: rubocop
140
- prerelease: false
141
126
  type: :development
127
+ prerelease: false
142
128
  version_requirements: !ruby/object:Gem::Requirement
143
129
  requirements:
144
130
  - - "~>"
145
131
  - !ruby/object:Gem::Version
146
132
  version: 1.8.0
147
133
  - !ruby/object:Gem::Dependency
134
+ name: rubocop-performance
148
135
  requirement: !ruby/object:Gem::Requirement
149
136
  requirements:
150
137
  - - ">="
151
138
  - !ruby/object:Gem::Version
152
139
  version: '0'
153
- name: rubocop-performance
154
- prerelease: false
155
140
  type: :development
141
+ prerelease: false
156
142
  version_requirements: !ruby/object:Gem::Requirement
157
143
  requirements:
158
144
  - - ">="
159
145
  - !ruby/object:Gem::Version
160
146
  version: '0'
161
147
  - !ruby/object:Gem::Dependency
148
+ name: rubocop-rspec
162
149
  requirement: !ruby/object:Gem::Requirement
163
150
  requirements:
164
151
  - - ">="
165
152
  - !ruby/object:Gem::Version
166
153
  version: '0'
167
- name: rubocop-rspec
168
- prerelease: false
169
154
  type: :development
155
+ prerelease: false
170
156
  version_requirements: !ruby/object:Gem::Requirement
171
157
  requirements:
172
158
  - - ">="
173
159
  - !ruby/object:Gem::Version
174
160
  version: '0'
175
161
  - !ruby/object:Gem::Dependency
162
+ name: webmock
176
163
  requirement: !ruby/object:Gem::Requirement
177
164
  requirements:
178
165
  - - "~>"
179
166
  - !ruby/object:Gem::Version
180
167
  version: '3.5'
181
- name: webmock
182
- prerelease: false
183
168
  type: :development
169
+ prerelease: false
184
170
  version_requirements: !ruby/object:Gem::Requirement
185
171
  requirements:
186
172
  - - "~>"
187
173
  - !ruby/object:Gem::Version
188
174
  version: '3.5'
189
175
  - !ruby/object:Gem::Dependency
176
+ name: webrick
190
177
  requirement: !ruby/object:Gem::Requirement
191
178
  requirements:
192
179
  - - "~>"
193
180
  - !ruby/object:Gem::Version
194
181
  version: '1.7'
195
- name: webrick
196
- prerelease: false
197
182
  type: :development
183
+ prerelease: false
198
184
  version_requirements: !ruby/object:Gem::Requirement
199
185
  requirements:
200
186
  - - "~>"
201
187
  - !ruby/object:Gem::Version
202
188
  version: '1.7'
203
189
  - !ruby/object:Gem::Dependency
190
+ name: yard
204
191
  requirement: !ruby/object:Gem::Requirement
205
192
  requirements:
206
193
  - - "~>"
207
194
  - !ruby/object:Gem::Version
208
195
  version: 0.9.11
209
- name: yard
210
- prerelease: false
211
196
  type: :development
197
+ prerelease: false
212
198
  version_requirements: !ruby/object:Gem::Requirement
213
199
  requirements:
214
200
  - - "~>"
@@ -226,8 +212,12 @@ executables: []
226
212
  extensions: []
227
213
  extra_rdoc_files: []
228
214
  files:
215
+ - CHANGES
216
+ - Gemfile
217
+ - LICENSE
218
+ - NOTICE
219
+ - README.md
229
220
  - lib/selenium-webdriver.rb
230
- - lib/selenium/devtools.rb
231
221
  - lib/selenium/server.rb
232
222
  - lib/selenium/webdriver.rb
233
223
  - lib/selenium/webdriver/atoms.rb
@@ -246,8 +236,10 @@ files:
246
236
  - lib/selenium/webdriver/common/alert.rb
247
237
  - lib/selenium/webdriver/common/driver.rb
248
238
  - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
239
+ - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
249
240
  - lib/selenium/webdriver/common/driver_extensions/has_addons.rb
250
241
  - lib/selenium/webdriver/common/driver_extensions/has_authentication.rb
242
+ - lib/selenium/webdriver/common/driver_extensions/has_cdp.rb
251
243
  - lib/selenium/webdriver/common/driver_extensions/has_debugger.rb
252
244
  - lib/selenium/webdriver/common/driver_extensions/has_devtools.rb
253
245
  - lib/selenium/webdriver/common/driver_extensions/has_location.rb
@@ -340,6 +332,8 @@ files:
340
332
  - lib/selenium/webdriver/support.rb
341
333
  - lib/selenium/webdriver/support/abstract_event_listener.rb
342
334
  - lib/selenium/webdriver/support/block_event_listener.rb
335
+ - lib/selenium/webdriver/support/cdp/domain.rb.erb
336
+ - lib/selenium/webdriver/support/cdp_client_generator.rb
343
337
  - lib/selenium/webdriver/support/color.rb
344
338
  - lib/selenium/webdriver/support/escaper.rb
345
339
  - lib/selenium/webdriver/support/event_firing_bridge.rb
@@ -349,13 +343,14 @@ files:
349
343
  - lib/selenium/webdriver/support/relative_locator.rb
350
344
  - lib/selenium/webdriver/support/select.rb
351
345
  - lib/selenium/webdriver/version.rb
346
+ - selenium-webdriver.gemspec
352
347
  homepage: https://selenium.dev
353
348
  licenses:
354
349
  - Apache-2.0
355
350
  metadata:
356
351
  changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
357
352
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
358
- post_install_message:
353
+ post_install_message:
359
354
  rdoc_options: []
360
355
  require_paths:
361
356
  - lib
@@ -370,9 +365,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
370
365
  - !ruby/object:Gem::Version
371
366
  version: 1.3.1
372
367
  requirements: []
373
- rubyforge_project:
374
- rubygems_version: 2.7.9
375
- signing_key:
368
+ rubygems_version: 3.0.3
369
+ signing_key:
376
370
  specification_version: 4
377
371
  summary: Selenium is a browser automation tool for automated testing of webapps and
378
372
  more