capybara-playwright-driver 0.5.2 → 0.5.5
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 +11 -0
- data/capybara-playwright.gemspec +0 -10
- data/lib/capybara/playwright/browser.rb +10 -8
- data/lib/capybara/playwright/browser_options.rb +1 -0
- data/lib/capybara/playwright/driver.rb +23 -0
- data/lib/capybara/playwright/driver_extension.rb +1 -1
- data/lib/capybara/playwright/node.rb +21 -12
- data/lib/capybara/playwright/page.rb +7 -3
- data/lib/capybara/playwright/shadow_root_node.rb +1 -1
- data/lib/capybara/playwright/version.rb +1 -1
- metadata +7 -147
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 518d6724c448e420fa844cbd57d30859ad8cc8bdc20348c9d9dc5ffdf819866f
|
4
|
+
data.tar.gz: 61ca17f8d89db0c48b4fe5a95b57462b389f2307e9185108779d5bcb5cb075b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a873fe231de97cdcc86a541c3eb462b438cafe4d8582f2e3050b3e75e60d7dc8b79420dd81dbcf746ce637f5f834636c35f43b0534b3638d78ca67f4bdc91656
|
7
|
+
data.tar.gz: f4455bf145a28e9e102ff21b0f75fbfe026d1d0f888d55b874bdc6d38bec287a4fd1e6402d3623154c10f18377a3fa2bfdf383e1c8bc0bb888eb5712f9123211
|
data/Gemfile
CHANGED
@@ -6,3 +6,14 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|
6
6
|
|
7
7
|
# Specify your gem's dependencies in capybara-playwright.gemspec
|
8
8
|
gemspec
|
9
|
+
|
10
|
+
gem 'allure-rspec'
|
11
|
+
gem 'bundler'
|
12
|
+
gem 'launchy', '>= 2.0.4'
|
13
|
+
gem 'pry-byebug'
|
14
|
+
gem 'rack-test_server'
|
15
|
+
gem 'rake', '~> 13.0.3'
|
16
|
+
gem 'rspec', '~> 3.11.0'
|
17
|
+
gem 'rubocop-rspec'
|
18
|
+
gem 'sinatra', '>= 1.4.0'
|
19
|
+
gem 'webrick'
|
data/capybara-playwright.gemspec
CHANGED
@@ -28,14 +28,4 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_dependency 'addressable'
|
29
29
|
spec.add_dependency 'capybara'
|
30
30
|
spec.add_dependency 'playwright-ruby-client', '>= 1.16.0'
|
31
|
-
spec.add_development_dependency 'allure-rspec'
|
32
|
-
spec.add_development_dependency 'bundler'
|
33
|
-
spec.add_development_dependency 'launchy', '>= 2.0.4'
|
34
|
-
spec.add_development_dependency 'pry-byebug'
|
35
|
-
spec.add_development_dependency 'rack-test_server'
|
36
|
-
spec.add_development_dependency 'rake', '~> 13.0.3'
|
37
|
-
spec.add_development_dependency 'rspec', '~> 3.11.0'
|
38
|
-
spec.add_development_dependency 'rubocop-rspec'
|
39
|
-
spec.add_development_dependency 'sinatra', '>= 1.4.0'
|
40
|
-
spec.add_development_dependency 'webrick'
|
41
31
|
end
|
@@ -15,8 +15,9 @@ module Capybara
|
|
15
15
|
|
16
16
|
class NoSuchWindowError < StandardError ; end
|
17
17
|
|
18
|
-
def initialize(driver:, playwright_browser:, page_options:, record_video: false, callback_on_save_trace: nil, default_timeout: nil, default_navigation_timeout: nil)
|
18
|
+
def initialize(driver:, internal_logger:, playwright_browser:, page_options:, record_video: false, callback_on_save_trace: nil, default_timeout: nil, default_navigation_timeout: nil)
|
19
19
|
@driver = driver
|
20
|
+
@internal_logger = internal_logger
|
20
21
|
@playwright_browser = playwright_browser
|
21
22
|
@page_options = page_options
|
22
23
|
if record_video
|
@@ -36,6 +37,7 @@ module Capybara
|
|
36
37
|
unless @playwright_page
|
37
38
|
@playwright_page = page
|
38
39
|
end
|
40
|
+
page.send(:_update_internal_logger, @internal_logger)
|
39
41
|
})
|
40
42
|
if @callback_on_save_trace
|
41
43
|
browser_context.tracing.start(screenshots: true, snapshots: true)
|
@@ -95,7 +97,7 @@ module Capybara
|
|
95
97
|
def find_xpath(query, **options)
|
96
98
|
assert_page_alive {
|
97
99
|
@playwright_page.capybara_current_frame.query_selector_all("xpath=#{query}").map do |el|
|
98
|
-
Node.new(@driver, @playwright_page, el)
|
100
|
+
Node.new(@driver, @internal_logger, @playwright_page, el)
|
99
101
|
end
|
100
102
|
}
|
101
103
|
end
|
@@ -103,7 +105,7 @@ module Capybara
|
|
103
105
|
def find_css(query, **options)
|
104
106
|
assert_page_alive {
|
105
107
|
@playwright_page.capybara_current_frame.query_selector_all(query).map do |el|
|
106
|
-
Node.new(@driver, @playwright_page, el)
|
108
|
+
Node.new(@driver, @internal_logger, @playwright_page, el)
|
107
109
|
end
|
108
110
|
}
|
109
111
|
end
|
@@ -185,7 +187,7 @@ module Capybara
|
|
185
187
|
def active_element
|
186
188
|
el = @playwright_page.capybara_current_frame.evaluate_handle('() => document.activeElement')
|
187
189
|
if el
|
188
|
-
Node.new(@driver, @playwright_page, el)
|
190
|
+
Node.new(@driver, @internal_logger, @playwright_page, el)
|
189
191
|
else
|
190
192
|
nil
|
191
193
|
end
|
@@ -252,7 +254,7 @@ module Capybara
|
|
252
254
|
/Cannot find context with specified id/,
|
253
255
|
/Unable to adopt element handle from a different document/
|
254
256
|
# ignore error for retry
|
255
|
-
|
257
|
+
@internal_logger.warn(err.message)
|
256
258
|
else
|
257
259
|
raise
|
258
260
|
end
|
@@ -324,7 +326,7 @@ module Capybara
|
|
324
326
|
end
|
325
327
|
|
326
328
|
def maximize_window(handle)
|
327
|
-
|
329
|
+
@internal_logger.warn("maximize_window is not supported in Playwright driver")
|
328
330
|
# incomplete in Playwright
|
329
331
|
# ref: https://github.com/twalpole/apparition/blob/11aca464b38b77585191b7e302be2e062bdd369d/lib/capybara/apparition/page.rb#L346
|
330
332
|
on_window(handle) do |page|
|
@@ -334,7 +336,7 @@ module Capybara
|
|
334
336
|
end
|
335
337
|
|
336
338
|
def fullscreen_window(handle)
|
337
|
-
|
339
|
+
@internal_logger.warn("fullscreen_window is not supported in Playwright driver")
|
338
340
|
# incomplete in Playwright
|
339
341
|
# ref: https://github.com/twalpole/apparition/blob/11aca464b38b77585191b7e302be2e062bdd369d/lib/capybara/apparition/page.rb#L341
|
340
342
|
on_window(handle) do |page|
|
@@ -375,7 +377,7 @@ module Capybara
|
|
375
377
|
[key, wrap_node(value)]
|
376
378
|
end.to_h
|
377
379
|
when ::Playwright::ElementHandle
|
378
|
-
Node.new(@driver, @playwright_page, arg)
|
380
|
+
Node.new(@driver, @internal_logger, @playwright_page, arg)
|
379
381
|
when ::Playwright::JSHandle
|
380
382
|
obj_type, is_array = arg.evaluate('obj => [typeof obj, Array.isArray(obj)]')
|
381
383
|
if obj_type == 'object'
|
@@ -18,6 +18,7 @@ module Capybara
|
|
18
18
|
if options[:default_navigation_timeout].is_a?(Numeric)
|
19
19
|
@default_navigation_timeout = options[:default_navigation_timeout] * 1000
|
20
20
|
end
|
21
|
+
@internal_logger = options[:logger] || default_logger
|
21
22
|
end
|
22
23
|
|
23
24
|
def wait?; true; end
|
@@ -26,6 +27,7 @@ module Capybara
|
|
26
27
|
private def browser
|
27
28
|
@browser ||= ::Capybara::Playwright::Browser.new(
|
28
29
|
driver: self,
|
30
|
+
internal_logger: @internal_logger,
|
29
31
|
playwright_browser: playwright_browser,
|
30
32
|
page_options: @page_options.value,
|
31
33
|
record_video: callback_on_save_screenrecord?,
|
@@ -52,6 +54,27 @@ module Capybara
|
|
52
54
|
@browser_runner.start
|
53
55
|
end
|
54
56
|
|
57
|
+
private def default_logger
|
58
|
+
if defined?(Rails)
|
59
|
+
Rails.logger
|
60
|
+
else
|
61
|
+
PutsLogger.new
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Since existing user already monkey-patched Kernel#puts,
|
66
|
+
# (https://gist.github.com/searls/9caa12f66c45a72e379e7bfe4c48405b)
|
67
|
+
# Logger.new(STDOUT) should be avoided to use.
|
68
|
+
class PutsLogger
|
69
|
+
def info(message)
|
70
|
+
puts "[INFO] #{message}"
|
71
|
+
end
|
72
|
+
|
73
|
+
def warn(message)
|
74
|
+
puts "[WARNING] #{message}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
55
78
|
private def quit
|
56
79
|
@playwright_browser&.close
|
57
80
|
@playwright_browser = nil
|
@@ -46,7 +46,7 @@ module Capybara
|
|
46
46
|
def with_playwright_page(&block)
|
47
47
|
raise ArgumentError.new('block must be given') unless block
|
48
48
|
|
49
|
-
|
49
|
+
browser.with_playwright_page(&block)
|
50
50
|
end
|
51
51
|
|
52
52
|
# Start Playwright tracing (doc: https://playwright.dev/docs/api/class-tracing#tracing-start)
|
@@ -8,7 +8,10 @@ module Capybara
|
|
8
8
|
|
9
9
|
# Playwright has own auto-waiting feature.
|
10
10
|
# So disable Capybara's retry logic.
|
11
|
-
|
11
|
+
if driver.is_a?(Capybara::Playwright::Driver)
|
12
|
+
options[:wait] = 0
|
13
|
+
end
|
14
|
+
|
12
15
|
super
|
13
16
|
end
|
14
17
|
end
|
@@ -21,7 +24,7 @@ module Capybara
|
|
21
24
|
if native.is_a?(::Playwright::ElementHandle)
|
22
25
|
block.call(native)
|
23
26
|
else
|
24
|
-
raise "#{native.inspect} is not a
|
27
|
+
raise "#{native.inspect} is not a Playwright::ElementHandle"
|
25
28
|
end
|
26
29
|
end
|
27
30
|
end
|
@@ -64,8 +67,9 @@ module Capybara
|
|
64
67
|
# selenium: https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selenium/node.rb
|
65
68
|
# apparition: https://github.com/twalpole/apparition/blob/master/lib/capybara/apparition/node.rb
|
66
69
|
class Node < ::Capybara::Driver::Node
|
67
|
-
def initialize(driver, page, element)
|
70
|
+
def initialize(driver, internal_logger, page, element)
|
68
71
|
super(driver, element)
|
72
|
+
@internal_logger = internal_logger
|
69
73
|
@page = page
|
70
74
|
@element = element
|
71
75
|
end
|
@@ -131,7 +135,7 @@ module Capybara
|
|
131
135
|
}
|
132
136
|
}
|
133
137
|
JAVASCRIPT
|
134
|
-
text.to_s.gsub(/\A[[:space:]&&[^\u00a0]]+/, '')
|
138
|
+
text.to_s.scrub.gsub(/\A[[:space:]&&[^\u00a0]]+/, '')
|
135
139
|
.gsub(/[[:space:]&&[^\u00a0]]+\z/, '')
|
136
140
|
.gsub(/\n+/, "\n")
|
137
141
|
.tr("\u00a0", ' ')
|
@@ -209,15 +213,16 @@ module Capybara
|
|
209
213
|
end
|
210
214
|
end
|
211
215
|
|
212
|
-
settable_class.new(@element, capybara_default_wait_time).set(value, **options)
|
216
|
+
settable_class.new(@element, capybara_default_wait_time, @internal_logger).set(value, **options)
|
213
217
|
rescue ::Playwright::TimeoutError => err
|
214
218
|
raise NotActionableError.new(err)
|
215
219
|
end
|
216
220
|
|
217
221
|
class Settable
|
218
|
-
def initialize(element, timeout)
|
222
|
+
def initialize(element, timeout, internal_logger)
|
219
223
|
@element = element
|
220
224
|
@timeout = timeout
|
225
|
+
@internal_logger = internal_logger
|
221
226
|
end
|
222
227
|
end
|
223
228
|
|
@@ -249,7 +254,7 @@ module Capybara
|
|
249
254
|
rescue ::Playwright::TimeoutError
|
250
255
|
raise if @element.editable?
|
251
256
|
|
252
|
-
|
257
|
+
@internal_logger.info("Node#set: element is not editable. #{@element}")
|
253
258
|
end
|
254
259
|
end
|
255
260
|
|
@@ -548,7 +553,7 @@ module Capybara
|
|
548
553
|
_key = key.last
|
549
554
|
code =
|
550
555
|
if _key.is_a?(String) && _key.length == 1
|
551
|
-
_key
|
556
|
+
_key
|
552
557
|
elsif _key.is_a?(Symbol)
|
553
558
|
key_for(_key)
|
554
559
|
else
|
@@ -567,7 +572,7 @@ module Capybara
|
|
567
572
|
when String
|
568
573
|
key.each_char do |char|
|
569
574
|
executables << PressKey.new(
|
570
|
-
key: char
|
575
|
+
key: char,
|
571
576
|
modifiers: modifiers,
|
572
577
|
)
|
573
578
|
end
|
@@ -600,6 +605,10 @@ module Capybara
|
|
600
605
|
|
601
606
|
class PressKey
|
602
607
|
def initialize(key:, modifiers:)
|
608
|
+
# Shift requires an explicitly uppercase a-z key to produce the correct output
|
609
|
+
# See https://playwright.dev/docs/input#keys-and-shortcuts
|
610
|
+
key = key.upcase if modifiers == [MODIFIERS[:shift]] && key.match?(/^[a-z]$/)
|
611
|
+
|
603
612
|
# puts "PressKey: key=#{key} modifiers: #{modifiers}"
|
604
613
|
if modifiers.empty?
|
605
614
|
@key = key
|
@@ -917,7 +926,7 @@ module Capybara
|
|
917
926
|
# Node.new(@driver, @page, @element.evaluate_handle('el => el.shadowRoot'))
|
918
927
|
#
|
919
928
|
# does not work well because of the Playwright Error 'Element is not attached to the DOM'
|
920
|
-
ShadowRootNode.new(@driver, @page, @element)
|
929
|
+
ShadowRootNode.new(@driver, @internal_logger, @page, @element)
|
921
930
|
end
|
922
931
|
|
923
932
|
def inspect
|
@@ -933,7 +942,7 @@ module Capybara
|
|
933
942
|
def find_xpath(query, **options)
|
934
943
|
assert_element_not_stale {
|
935
944
|
@element.query_selector_all("xpath=#{query}").map do |el|
|
936
|
-
Node.new(@driver, @page, el)
|
945
|
+
Node.new(@driver, @internal_logger, @page, el)
|
937
946
|
end
|
938
947
|
}
|
939
948
|
end
|
@@ -941,7 +950,7 @@ module Capybara
|
|
941
950
|
def find_css(query, **options)
|
942
951
|
assert_element_not_stale {
|
943
952
|
@element.query_selector_all(query).map do |el|
|
944
|
-
Node.new(@driver, @page, el)
|
953
|
+
Node.new(@driver, @internal_logger, @page, el)
|
945
954
|
end
|
946
955
|
}
|
947
956
|
end
|
@@ -12,6 +12,10 @@ module Capybara
|
|
12
12
|
capybara_initialize
|
13
13
|
end
|
14
14
|
|
15
|
+
private def _update_internal_logger(internal_logger)
|
16
|
+
@internal_logger = internal_logger
|
17
|
+
end
|
18
|
+
|
15
19
|
private def capybara_initialize
|
16
20
|
@capybara_all_responses = {}
|
17
21
|
@capybara_last_response = nil
|
@@ -44,7 +48,7 @@ module Capybara
|
|
44
48
|
end
|
45
49
|
|
46
50
|
private def capybara_on_unexpected_modal(dialog)
|
47
|
-
|
51
|
+
@internal_logger.warn "Unexpected modal - \"#{dialog.message}\""
|
48
52
|
if dialog.type == 'beforeunload'
|
49
53
|
dialog.accept_async
|
50
54
|
else
|
@@ -99,7 +103,7 @@ module Capybara
|
|
99
103
|
message_promise.fulfill(message)
|
100
104
|
acceptor.handle(dialog)
|
101
105
|
else
|
102
|
-
message_promise.reject(Capybara::ModalNotFound.new("Dialog message=\"#{message}\"
|
106
|
+
message_promise.reject(Capybara::ModalNotFound.new("Dialog message=\"#{message}\" doesn't match"))
|
103
107
|
dialog.dismiss
|
104
108
|
end
|
105
109
|
}
|
@@ -125,7 +129,7 @@ module Capybara
|
|
125
129
|
if matcher.matches?(message)
|
126
130
|
message_promise.fulfill(message)
|
127
131
|
else
|
128
|
-
message_promise.reject(Capybara::ModalNotFound.new("Dialog message=\"#{message}\"
|
132
|
+
message_promise.reject(Capybara::ModalNotFound.new("Dialog message=\"#{message}\" doesn't match"))
|
129
133
|
end
|
130
134
|
dialog.dismiss
|
131
135
|
}
|
@@ -3,7 +3,7 @@ require_relative './node'
|
|
3
3
|
module Capybara
|
4
4
|
module Playwright
|
5
5
|
class ShadowRootNode < Node
|
6
|
-
def initialize(driver, page, element)
|
6
|
+
def initialize(driver, internal_logger, page, element)
|
7
7
|
super
|
8
8
|
@shadow_roow_element = element.evaluate_handle('el => el.shadowRoot')
|
9
9
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara-playwright-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YusukeIwaki
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -52,147 +52,7 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.16.0
|
55
|
-
|
56
|
-
name: allure-rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: bundler
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: launchy
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 2.0.4
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 2.0.4
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-byebug
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rack-test_server
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rake
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 13.0.3
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 13.0.3
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rspec
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: 3.11.0
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 3.11.0
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rubocop-rspec
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: sinatra
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 1.4.0
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 1.4.0
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: webrick
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
|
-
description:
|
55
|
+
description:
|
196
56
|
email:
|
197
57
|
- q7w8e9w8q7w8e9@yahoo.co.jp
|
198
58
|
executables: []
|
@@ -226,7 +86,7 @@ homepage: https://github.com/YusukeIwaki/capybara-playwright-driver
|
|
226
86
|
licenses:
|
227
87
|
- MIT
|
228
88
|
metadata: {}
|
229
|
-
post_install_message:
|
89
|
+
post_install_message:
|
230
90
|
rdoc_options: []
|
231
91
|
require_paths:
|
232
92
|
- lib
|
@@ -241,8 +101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
101
|
- !ruby/object:Gem::Version
|
242
102
|
version: '0'
|
243
103
|
requirements: []
|
244
|
-
rubygems_version: 3.5.
|
245
|
-
signing_key:
|
104
|
+
rubygems_version: 3.5.22
|
105
|
+
signing_key:
|
246
106
|
specification_version: 4
|
247
107
|
summary: Playwright driver for Capybara
|
248
108
|
test_files: []
|