puppeteer-ruby 0.50.1 → 0.52.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/docs/api_coverage.md +38 -6
- data/lib/puppeteer/browser.rb +82 -0
- data/lib/puppeteer/browser_connector.rb +2 -0
- data/lib/puppeteer/browser_context.rb +51 -3
- data/lib/puppeteer/chrome_target_manager.rb +53 -6
- data/lib/puppeteer/debug_print.rb +9 -13
- data/lib/puppeteer/element_handle.rb +16 -0
- data/lib/puppeteer/events.rb +3 -0
- data/lib/puppeteer/execution_context.rb +37 -15
- data/lib/puppeteer/extension.rb +70 -0
- data/lib/puppeteer/frame.rb +8 -1
- data/lib/puppeteer/frame_manager.rb +62 -2
- data/lib/puppeteer/http_request.rb +15 -1
- data/lib/puppeteer/http_response.rb +6 -1
- data/lib/puppeteer/isolated_world.rb +22 -1
- data/lib/puppeteer/issue.rb +16 -0
- data/lib/puppeteer/js_coverage.rb +14 -1
- data/lib/puppeteer/launcher/browser_options.rb +6 -1
- data/lib/puppeteer/launcher/chrome.rb +17 -2
- data/lib/puppeteer/launcher/chrome_arg_options.rb +2 -1
- data/lib/puppeteer/locators.rb +56 -37
- data/lib/puppeteer/network_manager.rb +16 -16
- data/lib/puppeteer/page.rb +90 -7
- data/lib/puppeteer/puppeteer.rb +15 -0
- data/lib/puppeteer/remote_object.rb +2 -1
- data/lib/puppeteer/target.rb +17 -0
- data/lib/puppeteer/version.rb +2 -1
- data/lib/puppeteer.rb +2 -0
- data/puppeteer-ruby.gemspec +1 -1
- data/sig/_supplementary.rbs +7 -0
- data/sig/puppeteer/browser.rbs +34 -2
- data/sig/puppeteer/element_handle.rbs +5 -0
- data/sig/puppeteer/execution_context.rbs +4 -0
- data/sig/puppeteer/extension.rbs +37 -0
- data/sig/puppeteer/frame.rbs +5 -0
- data/sig/puppeteer/http_request.rbs +2 -0
- data/sig/puppeteer/issue.rbs +13 -0
- data/sig/puppeteer/locators.rbs +5 -2
- data/sig/puppeteer/page.rbs +20 -0
- data/sig/puppeteer/puppeteer.rbs +7 -2
- data/sig/puppeteer/remote_object.rbs +2 -0
- metadata +8 -4
data/lib/puppeteer/page.rb
CHANGED
|
@@ -193,7 +193,6 @@ class Puppeteer::Page
|
|
|
193
193
|
@workers[session.id] = worker
|
|
194
194
|
emit_event(PageEmittedEvents::WorkerCreated, worker)
|
|
195
195
|
end
|
|
196
|
-
|
|
197
196
|
end
|
|
198
197
|
|
|
199
198
|
# @rbs return: Array[untyped] -- Initialization results
|
|
@@ -360,6 +359,22 @@ class Puppeteer::Page
|
|
|
360
359
|
@target.browser_context
|
|
361
360
|
end
|
|
362
361
|
|
|
362
|
+
# @rbs return: bool -- Whether DevTools is attached to this page
|
|
363
|
+
def has_devtools
|
|
364
|
+
!!browser._has_devtools_target(@target.target_id)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
# @rbs extension: Puppeteer::Extension -- Extension to trigger
|
|
368
|
+
# @rbs return: void -- No return value
|
|
369
|
+
def trigger_extension_action(extension)
|
|
370
|
+
extension.trigger_action(self)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# @rbs return: Array[untyped] -- Extension execution realms on the main frame
|
|
374
|
+
def extension_realms
|
|
375
|
+
main_frame.extension_realms
|
|
376
|
+
end
|
|
377
|
+
|
|
363
378
|
class TargetCrashedError < Puppeteer::Error; end
|
|
364
379
|
|
|
365
380
|
private def handle_target_crashed
|
|
@@ -560,6 +575,15 @@ class Puppeteer::Page
|
|
|
560
575
|
raise ArgumentError.new("Each coookie must have #{requires.join(" and ")} attribute.")
|
|
561
576
|
end
|
|
562
577
|
|
|
578
|
+
private def convert_same_site_for_cdp(same_site)
|
|
579
|
+
case same_site
|
|
580
|
+
when 'Strict', 'Lax', 'None'
|
|
581
|
+
same_site
|
|
582
|
+
else
|
|
583
|
+
nil
|
|
584
|
+
end
|
|
585
|
+
end
|
|
586
|
+
|
|
563
587
|
# @rbs cookies: Array[Hash[Symbol | String, untyped]] -- cookies parameter
|
|
564
588
|
# @rbs return: void -- No return value
|
|
565
589
|
def delete_cookie(*cookies)
|
|
@@ -582,8 +606,28 @@ class Puppeteer::Page
|
|
|
582
606
|
starts_with_http = page_url.start_with?("http")
|
|
583
607
|
items = cookies.map do |cookie|
|
|
584
608
|
(starts_with_http ? { url: page_url } : {}).merge(cookie).tap do |item|
|
|
585
|
-
|
|
586
|
-
|
|
609
|
+
item_name = item[:name] || item['name']
|
|
610
|
+
item_url = item[:url] || item['url']
|
|
611
|
+
raise ArgumentError.new("Blank page can not have cookie \"#{item_name}\"") if item_url == "about:blank"
|
|
612
|
+
raise ArgumentError.new("Data URL page can not have cookie \"#{item_name}\"") if item_url&.start_with?("data:")
|
|
613
|
+
|
|
614
|
+
same_site =
|
|
615
|
+
if item.key?(:sameSite)
|
|
616
|
+
item[:sameSite]
|
|
617
|
+
elsif item.key?('sameSite')
|
|
618
|
+
item['sameSite']
|
|
619
|
+
elsif item.key?(:same_site)
|
|
620
|
+
item[:same_site]
|
|
621
|
+
else
|
|
622
|
+
item['same_site']
|
|
623
|
+
end
|
|
624
|
+
|
|
625
|
+
converted_same_site = convert_same_site_for_cdp(same_site)
|
|
626
|
+
item.delete(:sameSite)
|
|
627
|
+
item.delete('sameSite')
|
|
628
|
+
item.delete(:same_site)
|
|
629
|
+
item.delete('same_site')
|
|
630
|
+
item[:sameSite] = converted_same_site if converted_same_site
|
|
587
631
|
end
|
|
588
632
|
end
|
|
589
633
|
delete_cookie(*items)
|
|
@@ -708,6 +752,29 @@ class Puppeteer::Page
|
|
|
708
752
|
Metrics.new(response['metrics'])
|
|
709
753
|
end
|
|
710
754
|
|
|
755
|
+
# @rbs path: String -- Output path for the heap snapshot
|
|
756
|
+
# @rbs return: void -- No return value
|
|
757
|
+
def capture_heap_snapshot(path:)
|
|
758
|
+
@client.send_message('HeapProfiler.enable')
|
|
759
|
+
@client.send_message('HeapProfiler.collectGarbage')
|
|
760
|
+
|
|
761
|
+
begin
|
|
762
|
+
File.open(path, 'w') do |file|
|
|
763
|
+
listener_id = @client.add_event_listener('HeapProfiler.addHeapSnapshotChunk') do |event|
|
|
764
|
+
file.write(event['chunk'])
|
|
765
|
+
end
|
|
766
|
+
|
|
767
|
+
begin
|
|
768
|
+
@client.send_message('HeapProfiler.takeHeapSnapshot', reportProgress: false)
|
|
769
|
+
ensure
|
|
770
|
+
@client.remove_event_listener(listener_id)
|
|
771
|
+
end
|
|
772
|
+
end
|
|
773
|
+
ensure
|
|
774
|
+
@client.send_message('HeapProfiler.disable')
|
|
775
|
+
end
|
|
776
|
+
end
|
|
777
|
+
|
|
711
778
|
class PageError < Puppeteer::Error ; end
|
|
712
779
|
|
|
713
780
|
private def handle_exception(exception_details)
|
|
@@ -803,10 +870,7 @@ class Puppeteer::Page
|
|
|
803
870
|
end
|
|
804
871
|
|
|
805
872
|
private def add_console_message(type, args, stack_trace)
|
|
806
|
-
text_tokens = args.map
|
|
807
|
-
value = arg.remote_object.value
|
|
808
|
-
value.nil? ? arg.to_s : value
|
|
809
|
-
end
|
|
873
|
+
text_tokens = args.map { |arg| console_value_from_js_handle(arg) }
|
|
810
874
|
|
|
811
875
|
stack_trace_locations =
|
|
812
876
|
if stack_trace && stack_trace['callFrames']
|
|
@@ -824,6 +888,25 @@ class Puppeteer::Page
|
|
|
824
888
|
emit_event(PageEmittedEvents::Console, console_message)
|
|
825
889
|
end
|
|
826
890
|
|
|
891
|
+
private def console_value_from_js_handle(handle)
|
|
892
|
+
remote_object = handle.remote_object
|
|
893
|
+
return remote_object.value unless remote_object.object_id?
|
|
894
|
+
|
|
895
|
+
value_from_remote_object_reference(remote_object)
|
|
896
|
+
end
|
|
897
|
+
|
|
898
|
+
private def value_from_remote_object_reference(remote_object)
|
|
899
|
+
description = remote_object.description.to_s
|
|
900
|
+
if remote_object.sub_type == 'error' && !description.empty?
|
|
901
|
+
newline_index = description.index("\n")
|
|
902
|
+
return newline_index ? description[0...newline_index] : description
|
|
903
|
+
end
|
|
904
|
+
|
|
905
|
+
type = remote_object.sub_type || remote_object.type
|
|
906
|
+
class_name = remote_object.class_name || remote_object.description || 'Object'
|
|
907
|
+
"[#{type} #{class_name}]"
|
|
908
|
+
end
|
|
909
|
+
|
|
827
910
|
private def handle_dialog_opening(event)
|
|
828
911
|
dialog_type = event['type']
|
|
829
912
|
unless %w(alert confirm prompt beforeunload).include?(dialog_type)
|
data/lib/puppeteer/puppeteer.rb
CHANGED
|
@@ -31,6 +31,9 @@ class Puppeteer::Puppeteer
|
|
|
31
31
|
# @rbs headless: bool? -- Run browser in headless mode
|
|
32
32
|
# @rbs ignore_https_errors: bool? -- Ignore HTTPS errors
|
|
33
33
|
# @rbs network_enabled: bool? -- Enable network domain
|
|
34
|
+
# @rbs issues_enabled: bool? -- Enable issues domain
|
|
35
|
+
# @rbs block_list: Array[String]? -- URL block list patterns
|
|
36
|
+
# @rbs enable_extensions: (bool | Array[String])? -- Enable extensions or load unpacked extensions
|
|
34
37
|
# @rbs default_viewport: Puppeteer::Viewport? -- Default viewport
|
|
35
38
|
# @rbs slow_mo: Integer? -- Delay between operations (ms)
|
|
36
39
|
# @rbs protocol_timeout: Integer? -- CDP protocol timeout in milliseconds
|
|
@@ -56,6 +59,9 @@ class Puppeteer::Puppeteer
|
|
|
56
59
|
headless: nil,
|
|
57
60
|
ignore_https_errors: nil,
|
|
58
61
|
network_enabled: true,
|
|
62
|
+
issues_enabled: true,
|
|
63
|
+
block_list: nil,
|
|
64
|
+
enable_extensions: false,
|
|
59
65
|
default_viewport: NoViewport.new,
|
|
60
66
|
slow_mo: nil,
|
|
61
67
|
protocol_timeout: nil,
|
|
@@ -85,6 +91,9 @@ class Puppeteer::Puppeteer
|
|
|
85
91
|
headless: headless,
|
|
86
92
|
ignore_https_errors: ignore_https_errors,
|
|
87
93
|
network_enabled: network_enabled,
|
|
94
|
+
issues_enabled: issues_enabled,
|
|
95
|
+
block_list: block_list,
|
|
96
|
+
enable_extensions: enable_extensions,
|
|
88
97
|
default_viewport: default_viewport,
|
|
89
98
|
slow_mo: slow_mo,
|
|
90
99
|
protocol_timeout: protocol_timeout,
|
|
@@ -133,6 +142,8 @@ class Puppeteer::Puppeteer
|
|
|
133
142
|
# @rbs transport: Puppeteer::WebSocketTransport? -- Pre-connected transport
|
|
134
143
|
# @rbs ignore_https_errors: bool? -- Ignore HTTPS errors
|
|
135
144
|
# @rbs network_enabled: bool? -- Enable network domain
|
|
145
|
+
# @rbs issues_enabled: bool? -- Enable issues domain
|
|
146
|
+
# @rbs block_list: Array[String]? -- URL block list patterns
|
|
136
147
|
# @rbs default_viewport: Puppeteer::Viewport? -- Default viewport
|
|
137
148
|
# @rbs slow_mo: Integer? -- Delay between operations (ms)
|
|
138
149
|
# @rbs protocol_timeout: Integer? -- CDP protocol timeout in milliseconds
|
|
@@ -144,6 +155,8 @@ class Puppeteer::Puppeteer
|
|
|
144
155
|
transport: nil,
|
|
145
156
|
ignore_https_errors: nil,
|
|
146
157
|
network_enabled: true,
|
|
158
|
+
issues_enabled: true,
|
|
159
|
+
block_list: nil,
|
|
147
160
|
default_viewport: nil,
|
|
148
161
|
slow_mo: nil,
|
|
149
162
|
protocol_timeout: nil,
|
|
@@ -155,6 +168,8 @@ class Puppeteer::Puppeteer
|
|
|
155
168
|
transport: transport,
|
|
156
169
|
ignore_https_errors: ignore_https_errors,
|
|
157
170
|
network_enabled: network_enabled,
|
|
171
|
+
issues_enabled: issues_enabled,
|
|
172
|
+
block_list: block_list,
|
|
158
173
|
default_viewport: default_viewport,
|
|
159
174
|
slow_mo: slow_mo,
|
|
160
175
|
protocol_timeout: protocol_timeout,
|
|
@@ -16,12 +16,13 @@ class Puppeteer::RemoteObject
|
|
|
16
16
|
@object_id = payload['objectId']
|
|
17
17
|
@type = payload['type']
|
|
18
18
|
@sub_type = payload['subtype']
|
|
19
|
+
@class_name = payload['className']
|
|
19
20
|
@unserializable_value = payload['unserializableValue']
|
|
20
21
|
@value = payload['value']
|
|
21
22
|
@description = payload['description']
|
|
22
23
|
end
|
|
23
24
|
|
|
24
|
-
attr_reader :sub_type, :type, :description
|
|
25
|
+
attr_reader :sub_type, :type, :class_name, :description
|
|
25
26
|
|
|
26
27
|
# @rbs return: bool
|
|
27
28
|
def object_id?
|
data/lib/puppeteer/target.rb
CHANGED
|
@@ -142,6 +142,23 @@ class Puppeteer::Target
|
|
|
142
142
|
@page
|
|
143
143
|
end
|
|
144
144
|
|
|
145
|
+
# @return [Puppeteer::Page]
|
|
146
|
+
def as_page
|
|
147
|
+
existing_page = page
|
|
148
|
+
return existing_page if existing_page
|
|
149
|
+
return @as_page if @as_page
|
|
150
|
+
|
|
151
|
+
client = @session || @session_factory.call(false)
|
|
152
|
+
client.wait_for_ready if client.respond_to?(:wait_for_ready)
|
|
153
|
+
@as_page = Puppeteer::Page.create(
|
|
154
|
+
client,
|
|
155
|
+
self,
|
|
156
|
+
@ignore_https_errors,
|
|
157
|
+
nil,
|
|
158
|
+
network_enabled: @network_enabled,
|
|
159
|
+
)
|
|
160
|
+
end
|
|
161
|
+
|
|
145
162
|
# @return [Puppeteer::CdpWebWorker|nil]
|
|
146
163
|
def worker
|
|
147
164
|
return nil unless ['service_worker', 'shared_worker'].include?(@target_info.type)
|
data/lib/puppeteer/version.rb
CHANGED
data/lib/puppeteer.rb
CHANGED
|
@@ -23,6 +23,7 @@ require 'puppeteer/env'
|
|
|
23
23
|
require 'puppeteer/events'
|
|
24
24
|
require 'puppeteer/errors'
|
|
25
25
|
require 'puppeteer/geolocation'
|
|
26
|
+
require 'puppeteer/issue'
|
|
26
27
|
require 'puppeteer/viewport'
|
|
27
28
|
|
|
28
29
|
# Modules
|
|
@@ -49,6 +50,7 @@ require 'puppeteer/custom_query_handler'
|
|
|
49
50
|
require 'puppeteer/devices'
|
|
50
51
|
require 'puppeteer/dialog'
|
|
51
52
|
require 'puppeteer/emulation_manager'
|
|
53
|
+
require 'puppeteer/extension'
|
|
52
54
|
require 'puppeteer/exception_details'
|
|
53
55
|
require 'puppeteer/executable_path_finder'
|
|
54
56
|
require 'puppeteer/execution_context'
|
data/puppeteer-ruby.gemspec
CHANGED
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_development_dependency 'rspec', '~> 3.13.2'
|
|
37
37
|
spec.add_development_dependency 'rspec_junit_formatter' # for CircleCI.
|
|
38
38
|
spec.add_development_dependency 'rbs-inline'
|
|
39
|
-
spec.add_development_dependency 'rubocop', '~> 1.
|
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 1.84.0'
|
|
40
40
|
spec.add_development_dependency 'rubocop-rspec', '~> 3.9.0'
|
|
41
41
|
spec.add_development_dependency 'sinatra', '< 5.0.0'
|
|
42
42
|
spec.add_development_dependency 'steep'
|
data/sig/_supplementary.rbs
CHANGED
|
@@ -134,12 +134,14 @@ class Puppeteer::BrowserContext
|
|
|
134
134
|
def delete_cookie: (*Hash[Symbol | String, untyped] cookies) -> void
|
|
135
135
|
def delete_matching_cookies: (*Hash[Symbol | String, untyped] filters) -> void
|
|
136
136
|
def set_download_behavior: (Hash[Symbol | String, untyped] download_behavior) -> void
|
|
137
|
+
def set_permission: (String origin, *Hash[Symbol | String, untyped] permissions) -> void
|
|
137
138
|
|
|
138
139
|
private
|
|
139
140
|
def normalize_cookie_hash: (Hash[Symbol | String, untyped] cookie) -> Hash[String, untyped]
|
|
140
141
|
def hash_value: (Hash[untyped, untyped]? hash, *(String | Symbol) keys) -> untyped
|
|
141
142
|
def convert_partition_key_for_cdp: (untyped partition_key) -> Hash[Symbol, untyped]?
|
|
142
143
|
def convert_partition_key_from_cdp: (untyped partition_key) -> (Hash[String, untyped] | String | nil)
|
|
144
|
+
def convert_same_site_for_cdp: (untyped same_site) -> String?
|
|
143
145
|
end
|
|
144
146
|
|
|
145
147
|
class Puppeteer::Frame
|
|
@@ -187,6 +189,10 @@ class Puppeteer::FrameManager
|
|
|
187
189
|
def remove_frame_recursively: (Puppeteer::Frame frame) -> void
|
|
188
190
|
def referrer_policy_to_protocol: (String? referrer_policy) -> String?
|
|
189
191
|
def assert_no_legacy_navigation_options: (wait_until: (String | Array[String] | nil)) -> void
|
|
192
|
+
def extension_origin?: (untyped origin) -> bool
|
|
193
|
+
def extract_extension_id: (untyped origin) -> String?
|
|
194
|
+
def maybe_setup_block_list: (Puppeteer::CDPSession client) -> void
|
|
195
|
+
def blocked_url?: (String? url) -> bool
|
|
190
196
|
end
|
|
191
197
|
|
|
192
198
|
class Puppeteer::NetworkCondition
|
|
@@ -224,6 +230,7 @@ class Puppeteer::Target
|
|
|
224
230
|
def browser: () -> Puppeteer::Browser
|
|
225
231
|
def browser_context: () -> Puppeteer::BrowserContext
|
|
226
232
|
def opener: () -> Puppeteer::Target?
|
|
233
|
+
def as_page: () -> Puppeteer::Page?
|
|
227
234
|
def handle_target_info_changed: (Puppeteer::Target::TargetInfo target_info) -> void
|
|
228
235
|
|
|
229
236
|
private
|
data/sig/puppeteer/browser.rbs
CHANGED
|
@@ -13,12 +13,14 @@ class Puppeteer::Browser
|
|
|
13
13
|
# @rbs ignore_https_errors: bool -- Ignore HTTPS errors
|
|
14
14
|
# @rbs default_viewport: Puppeteer::Viewport? -- Default viewport
|
|
15
15
|
# @rbs network_enabled: bool -- Whether network events are enabled
|
|
16
|
+
# @rbs issues_enabled: bool -- Whether issues events are enabled
|
|
17
|
+
# @rbs block_list: Array[String]? -- URL block list patterns
|
|
16
18
|
# @rbs process: Puppeteer::BrowserRunner::BrowserProcess? -- Browser process handle
|
|
17
19
|
# @rbs close_callback: Proc -- Close callback
|
|
18
20
|
# @rbs target_filter_callback: Proc? -- Target filter callback
|
|
19
21
|
# @rbs is_page_target_callback: Proc? -- Page target predicate
|
|
20
22
|
# @rbs return: Puppeteer::Browser -- Browser instance
|
|
21
|
-
def self.create: (product: String?, connection: Puppeteer::Connection, context_ids: Array[String], ignore_https_errors: bool, default_viewport: Puppeteer::Viewport?, process: Puppeteer::BrowserRunner::BrowserProcess?, close_callback: Proc, target_filter_callback: Proc?, is_page_target_callback: Proc?, ?network_enabled: bool) -> Puppeteer::Browser
|
|
23
|
+
def self.create: (product: String?, connection: Puppeteer::Connection, context_ids: Array[String], ignore_https_errors: bool, default_viewport: Puppeteer::Viewport?, process: Puppeteer::BrowserRunner::BrowserProcess?, close_callback: Proc, target_filter_callback: Proc?, is_page_target_callback: Proc?, ?network_enabled: bool, ?issues_enabled: bool, ?block_list: Array[String]?) -> Puppeteer::Browser
|
|
22
24
|
|
|
23
25
|
# @rbs product: String? -- Browser product (chrome only)
|
|
24
26
|
# @rbs connection: Puppeteer::Connection -- CDP connection
|
|
@@ -26,12 +28,14 @@ class Puppeteer::Browser
|
|
|
26
28
|
# @rbs ignore_https_errors: bool -- Ignore HTTPS errors
|
|
27
29
|
# @rbs default_viewport: Puppeteer::Viewport? -- Default viewport
|
|
28
30
|
# @rbs network_enabled: bool -- Whether network events are enabled
|
|
31
|
+
# @rbs issues_enabled: bool -- Whether issues events are enabled
|
|
32
|
+
# @rbs block_list: Array[String]? -- URL block list patterns
|
|
29
33
|
# @rbs process: Puppeteer::BrowserRunner::BrowserProcess? -- Browser process handle
|
|
30
34
|
# @rbs close_callback: Proc -- Close callback
|
|
31
35
|
# @rbs target_filter_callback: Proc? -- Target filter callback
|
|
32
36
|
# @rbs is_page_target_callback: Proc? -- Page target predicate
|
|
33
37
|
# @rbs return: void -- No return value
|
|
34
|
-
def initialize: (product: String?, connection: Puppeteer::Connection, context_ids: Array[String], ignore_https_errors: bool, default_viewport: Puppeteer::Viewport?, process: Puppeteer::BrowserRunner::BrowserProcess?, close_callback: Proc, target_filter_callback: Proc?, is_page_target_callback: Proc?, ?network_enabled: bool) -> void
|
|
38
|
+
def initialize: (product: String?, connection: Puppeteer::Connection, context_ids: Array[String], ignore_https_errors: bool, default_viewport: Puppeteer::Viewport?, process: Puppeteer::BrowserRunner::BrowserProcess?, close_callback: Proc, target_filter_callback: Proc?, is_page_target_callback: Proc?, ?network_enabled: bool, ?issues_enabled: bool, ?block_list: Array[String]?) -> void
|
|
35
39
|
|
|
36
40
|
private def default_target_filter_callback: (untyped target_info) -> untyped
|
|
37
41
|
|
|
@@ -58,6 +62,8 @@ class Puppeteer::Browser
|
|
|
58
62
|
|
|
59
63
|
private def target_manager: () -> untyped
|
|
60
64
|
|
|
65
|
+
private def connection: () -> untyped
|
|
66
|
+
|
|
61
67
|
# @rbs return: Puppeteer::BrowserContext -- New incognito browser context
|
|
62
68
|
def create_incognito_browser_context: () -> Puppeteer::BrowserContext
|
|
63
69
|
|
|
@@ -73,6 +79,11 @@ class Puppeteer::Browser
|
|
|
73
79
|
# @rbs return: Puppeteer::BrowserContext -- Default browser context
|
|
74
80
|
def default_browser_context: () -> Puppeteer::BrowserContext
|
|
75
81
|
|
|
82
|
+
# @rbs origin: String -- Origin URL, or '*' for all origins
|
|
83
|
+
# @rbs permissions: Array[Hash[Symbol | String, untyped]] -- Permission descriptors and states
|
|
84
|
+
# @rbs return: void -- No return value
|
|
85
|
+
def set_permission: (String origin, *untyped permissions) -> void
|
|
86
|
+
|
|
76
87
|
# @rbs context_id: String? -- Browser context ID
|
|
77
88
|
# @rbs return: void -- No return value
|
|
78
89
|
def dispose_context: (String? context_id) -> void
|
|
@@ -135,6 +146,27 @@ class Puppeteer::Browser
|
|
|
135
146
|
# @rbs return: String -- Browser user agent string
|
|
136
147
|
def user_agent: () -> String
|
|
137
148
|
|
|
149
|
+
# @rbs page_target_id: String -- Page target id
|
|
150
|
+
# @rbs return: String? -- DevTools target id for page
|
|
151
|
+
def _has_devtools_target: (String page_target_id) -> String?
|
|
152
|
+
|
|
153
|
+
# @rbs path: String -- Extension path
|
|
154
|
+
# @rbs return: String -- Installed extension id
|
|
155
|
+
def install_extension: (String path) -> String
|
|
156
|
+
|
|
157
|
+
# @rbs extension_id: String -- Extension id
|
|
158
|
+
# @rbs return: void -- No return value
|
|
159
|
+
def uninstall_extension: (String extension_id) -> void
|
|
160
|
+
|
|
161
|
+
# @rbs return: Hash[String, Puppeteer::Extension] -- Installed extensions
|
|
162
|
+
def extensions: () -> Hash[String, Puppeteer::Extension]
|
|
163
|
+
|
|
164
|
+
# @rbs return: bool -- Whether issue events are enabled
|
|
165
|
+
def issues_enabled?: () -> bool
|
|
166
|
+
|
|
167
|
+
# @rbs return: Array[String]? -- URL block list patterns
|
|
168
|
+
def block_list: () -> Array[String]?
|
|
169
|
+
|
|
138
170
|
# @rbs return: void -- No return value
|
|
139
171
|
def close: () -> void
|
|
140
172
|
|
|
@@ -216,6 +216,11 @@ class Puppeteer::ElementHandle < Puppeteer::JSHandle
|
|
|
216
216
|
# @rbs return: void -- No return value
|
|
217
217
|
def upload_file: (*untyped file_paths) -> void
|
|
218
218
|
|
|
219
|
+
# @rbs credit_card: Hash[Symbol | String, untyped]? -- Credit card autofill payload
|
|
220
|
+
# @rbs address: Hash[Symbol | String, untyped]? -- Address autofill payload
|
|
221
|
+
# @rbs return: void -- No return value
|
|
222
|
+
def autofill: (?credit_card: Hash[Symbol | String, untyped]?, ?address: Hash[Symbol | String, untyped]?) -> void
|
|
223
|
+
|
|
219
224
|
# @rbs block: Proc? -- Optional block for Object#tap usage
|
|
220
225
|
# @rbs return: Puppeteer::ElementHandle | nil -- Element handle or nil
|
|
221
226
|
def tap: () ?{ (?) -> untyped } -> (Puppeteer::ElementHandle | nil)
|
|
@@ -81,6 +81,10 @@ class Puppeteer::ExecutionContext
|
|
|
81
81
|
# @return [Object|Puppeteer::JSHandle]
|
|
82
82
|
private def evaluate_internal: (untyped return_by_value, untyped page_function, *untyped args) -> untyped
|
|
83
83
|
|
|
84
|
+
# @param error [Puppeteer::Connection::ProtocolError]
|
|
85
|
+
# @return [StandardError]
|
|
86
|
+
private def rewrite_evaluation_error: (untyped error) -> untyped
|
|
87
|
+
|
|
84
88
|
# @rbs page_function: String -- JavaScript code to check
|
|
85
89
|
# @rbs return: bool -- Whether the code represents a function
|
|
86
90
|
private def function_string?: (String page_function) -> bool
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated from lib/puppeteer/extension.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
class Puppeteer::Extension
|
|
4
|
+
# @rbs id: String -- Extension id
|
|
5
|
+
# @rbs version: String -- Extension version
|
|
6
|
+
# @rbs name: String -- Extension name
|
|
7
|
+
# @rbs path: String -- Extension path
|
|
8
|
+
# @rbs enabled: bool -- Whether extension is enabled
|
|
9
|
+
# @rbs browser: Puppeteer::Browser -- Browser instance
|
|
10
|
+
# @rbs return: void -- No return value
|
|
11
|
+
def initialize: (id: String, version: String, name: String, path: String, enabled: bool, browser: Puppeteer::Browser) -> void
|
|
12
|
+
|
|
13
|
+
# @rbs return: String -- Extension id
|
|
14
|
+
attr_reader id: untyped
|
|
15
|
+
|
|
16
|
+
# @rbs return: String -- Extension version
|
|
17
|
+
attr_reader version: untyped
|
|
18
|
+
|
|
19
|
+
# @rbs return: String -- Extension name
|
|
20
|
+
attr_reader name: untyped
|
|
21
|
+
|
|
22
|
+
# @rbs return: String -- Extension path
|
|
23
|
+
attr_reader path: untyped
|
|
24
|
+
|
|
25
|
+
# @rbs return: bool -- Whether extension is enabled
|
|
26
|
+
attr_reader enabled: untyped
|
|
27
|
+
|
|
28
|
+
# @rbs return: Array[Puppeteer::CdpWebWorker] -- Extension workers
|
|
29
|
+
def workers: () -> Array[Puppeteer::CdpWebWorker]
|
|
30
|
+
|
|
31
|
+
# @rbs return: Array[Puppeteer::Page] -- Extension pages
|
|
32
|
+
def pages: () -> Array[Puppeteer::Page]
|
|
33
|
+
|
|
34
|
+
# @rbs page: Puppeteer::Page -- Target page
|
|
35
|
+
# @rbs return: void -- No return value
|
|
36
|
+
def trigger_action: (Puppeteer::Page page) -> void
|
|
37
|
+
end
|
data/sig/puppeteer/frame.rbs
CHANGED
|
@@ -41,6 +41,8 @@ class Puppeteer::Frame
|
|
|
41
41
|
|
|
42
42
|
attr_accessor puppeteer_world: untyped
|
|
43
43
|
|
|
44
|
+
attr_accessor extension_worlds: untyped
|
|
45
|
+
|
|
44
46
|
attr_reader client: untyped
|
|
45
47
|
|
|
46
48
|
# @rbs other: Object -- Other object to compare
|
|
@@ -122,6 +124,9 @@ class Puppeteer::Frame
|
|
|
122
124
|
# @rbs return: String? -- Frame URL
|
|
123
125
|
def url: () -> String?
|
|
124
126
|
|
|
127
|
+
# @rbs return: Array[untyped] -- Extension execution realms for this frame
|
|
128
|
+
def extension_realms: () -> Array[untyped]
|
|
129
|
+
|
|
125
130
|
# @rbs return: Puppeteer::Frame? -- Parent frame
|
|
126
131
|
def parent_frame: () -> Puppeteer::Frame?
|
|
127
132
|
|
|
@@ -91,6 +91,8 @@ class Puppeteer::HTTPRequest
|
|
|
91
91
|
|
|
92
92
|
private def assert_interception_allowed: () -> untyped
|
|
93
93
|
|
|
94
|
+
private def parse_post_data: (untyped event) -> untyped
|
|
95
|
+
|
|
94
96
|
private def assert_interception_not_handled: () -> untyped
|
|
95
97
|
|
|
96
98
|
private def can_be_intercepted?: () -> untyped
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/puppeteer/issue.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
class Puppeteer::Issue
|
|
4
|
+
# @rbs issue: Hash[String, untyped] -- CDP issue payload
|
|
5
|
+
# @rbs return: void -- No return value
|
|
6
|
+
def initialize: (Hash[String, untyped] issue) -> void
|
|
7
|
+
|
|
8
|
+
# @rbs return: String -- Issue code
|
|
9
|
+
attr_reader code: untyped
|
|
10
|
+
|
|
11
|
+
# @rbs return: Hash[String, untyped] -- Issue details payload
|
|
12
|
+
attr_reader details: untyped
|
|
13
|
+
end
|
data/sig/puppeteer/locators.rbs
CHANGED
|
@@ -94,8 +94,9 @@ class Puppeteer::Locator
|
|
|
94
94
|
def click: (?delay: Numeric?, ?button: String?, ?click_count: Integer?, ?count: Integer?, ?offset: Hash[Symbol, Numeric]?) -> void
|
|
95
95
|
|
|
96
96
|
# @rbs value: String -- Value to fill
|
|
97
|
+
# @rbs typing_threshold: Integer -- Minimum length to switch to direct assignment
|
|
97
98
|
# @rbs return: void -- No return value
|
|
98
|
-
def fill: (String value) -> void
|
|
99
|
+
def fill: (String value, ?typing_threshold: Integer) -> void
|
|
99
100
|
|
|
100
101
|
# @rbs return: void -- No return value
|
|
101
102
|
def hover: () -> void
|
|
@@ -133,7 +134,9 @@ class Puppeteer::Locator
|
|
|
133
134
|
|
|
134
135
|
private def ensure_element_is_in_viewport_if_needed: (untyped handle, untyped options) -> untyped
|
|
135
136
|
|
|
136
|
-
private def fill_element: (untyped handle, untyped value) -> untyped
|
|
137
|
+
private def fill_element: (untyped handle, untyped value, ?typing_threshold: untyped) -> untyped
|
|
138
|
+
|
|
139
|
+
private def fill_directly: (untyped handle, untyped value) -> untyped
|
|
137
140
|
end
|
|
138
141
|
|
|
139
142
|
class Puppeteer::FunctionLocator < Puppeteer::Locator
|
data/sig/puppeteer/page.rbs
CHANGED
|
@@ -82,6 +82,16 @@ class Puppeteer::Page
|
|
|
82
82
|
# @rbs return: Puppeteer::BrowserContext -- Owning browser context
|
|
83
83
|
def browser_context: () -> Puppeteer::BrowserContext
|
|
84
84
|
|
|
85
|
+
# @rbs return: bool -- Whether DevTools is attached to this page
|
|
86
|
+
def has_devtools: () -> bool
|
|
87
|
+
|
|
88
|
+
# @rbs extension: Puppeteer::Extension -- Extension to trigger
|
|
89
|
+
# @rbs return: void -- No return value
|
|
90
|
+
def trigger_extension_action: (Puppeteer::Extension extension) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs return: Array[untyped] -- Extension execution realms on the main frame
|
|
93
|
+
def extension_realms: () -> Array[untyped]
|
|
94
|
+
|
|
85
95
|
class TargetCrashedError < Puppeteer::Error
|
|
86
96
|
end
|
|
87
97
|
|
|
@@ -191,6 +201,8 @@ class Puppeteer::Page
|
|
|
191
201
|
# check if each cookie element has required fields ('name' and 'value')
|
|
192
202
|
private def assert_cookie_params: (untyped cookies, requires: untyped) -> untyped
|
|
193
203
|
|
|
204
|
+
private def convert_same_site_for_cdp: (untyped same_site) -> untyped
|
|
205
|
+
|
|
194
206
|
# @rbs cookies: Array[Hash[Symbol | String, untyped]] -- cookies parameter
|
|
195
207
|
# @rbs return: void -- No return value
|
|
196
208
|
def delete_cookie: (*untyped cookies) -> void
|
|
@@ -239,6 +251,10 @@ class Puppeteer::Page
|
|
|
239
251
|
# @rbs return: Puppeteer::Page::Metrics -- Page metrics
|
|
240
252
|
def metrics: () -> Puppeteer::Page::Metrics
|
|
241
253
|
|
|
254
|
+
# @rbs path: String -- Output path for the heap snapshot
|
|
255
|
+
# @rbs return: void -- No return value
|
|
256
|
+
def capture_heap_snapshot: (path: String) -> void
|
|
257
|
+
|
|
242
258
|
class PageError < Puppeteer::Error
|
|
243
259
|
end
|
|
244
260
|
|
|
@@ -252,6 +268,10 @@ class Puppeteer::Page
|
|
|
252
268
|
|
|
253
269
|
private def add_console_message: (untyped type, untyped args, untyped stack_trace) -> untyped
|
|
254
270
|
|
|
271
|
+
private def console_value_from_js_handle: (untyped handle) -> untyped
|
|
272
|
+
|
|
273
|
+
private def value_from_remote_object_reference: (untyped remote_object) -> untyped
|
|
274
|
+
|
|
255
275
|
private def handle_dialog_opening: (untyped event) -> untyped
|
|
256
276
|
|
|
257
277
|
private def set_transparent_background_color: () ?{ (?) -> untyped } -> untyped
|
data/sig/puppeteer/puppeteer.rbs
CHANGED
|
@@ -28,25 +28,30 @@ class Puppeteer::Puppeteer
|
|
|
28
28
|
# @rbs headless: bool? -- Run browser in headless mode
|
|
29
29
|
# @rbs ignore_https_errors: bool? -- Ignore HTTPS errors
|
|
30
30
|
# @rbs network_enabled: bool? -- Enable network domain
|
|
31
|
+
# @rbs issues_enabled: bool? -- Enable issues domain
|
|
32
|
+
# @rbs block_list: Array[String]? -- URL block list patterns
|
|
33
|
+
# @rbs enable_extensions: (bool | Array[String])? -- Enable extensions or load unpacked extensions
|
|
31
34
|
# @rbs default_viewport: Puppeteer::Viewport? -- Default viewport
|
|
32
35
|
# @rbs slow_mo: Integer? -- Delay between operations (ms)
|
|
33
36
|
# @rbs protocol_timeout: Integer? -- CDP protocol timeout in milliseconds
|
|
34
37
|
# @rbs wait_for_initial_page: bool? -- Wait for initial page to load
|
|
35
38
|
# @rbs block: Proc? -- Optional block receiving the browser
|
|
36
39
|
# @rbs return: Puppeteer::Browser -- Browser instance
|
|
37
|
-
def launch: (?product: String?, ?channel: (String | Symbol)?, ?executable_path: String?, ?ignore_default_args: Array[String]?, ?handle_SIGINT: bool?, ?handle_SIGTERM: bool?, ?handle_SIGHUP: bool?, ?timeout: Integer?, ?dumpio: bool?, ?env: Hash[String, String]?, ?pipe: bool?, ?args: Array[String]?, ?user_data_dir: String?, ?devtools: bool?, ?debugging_port: Integer?, ?headless: bool?, ?ignore_https_errors: bool?, ?network_enabled: bool?, ?default_viewport: Puppeteer::Viewport?, ?slow_mo: Integer?, ?protocol_timeout: Integer?, ?wait_for_initial_page: bool?) ?{ (?) -> untyped } -> Puppeteer::Browser
|
|
40
|
+
def launch: (?product: String?, ?channel: (String | Symbol)?, ?executable_path: String?, ?ignore_default_args: Array[String]?, ?handle_SIGINT: bool?, ?handle_SIGTERM: bool?, ?handle_SIGHUP: bool?, ?timeout: Integer?, ?dumpio: bool?, ?env: Hash[String, String]?, ?pipe: bool?, ?args: Array[String]?, ?user_data_dir: String?, ?devtools: bool?, ?debugging_port: Integer?, ?headless: bool?, ?ignore_https_errors: bool?, ?network_enabled: bool?, ?issues_enabled: bool?, ?block_list: Array[String]?, ?enable_extensions: (bool | Array[String])?, ?default_viewport: Puppeteer::Viewport?, ?slow_mo: Integer?, ?protocol_timeout: Integer?, ?wait_for_initial_page: bool?) ?{ (?) -> untyped } -> Puppeteer::Browser
|
|
38
41
|
|
|
39
42
|
# @rbs browser_ws_endpoint: String? -- Browser WebSocket endpoint
|
|
40
43
|
# @rbs browser_url: String? -- Browser HTTP URL for WebSocket discovery
|
|
41
44
|
# @rbs transport: Puppeteer::WebSocketTransport? -- Pre-connected transport
|
|
42
45
|
# @rbs ignore_https_errors: bool? -- Ignore HTTPS errors
|
|
43
46
|
# @rbs network_enabled: bool? -- Enable network domain
|
|
47
|
+
# @rbs issues_enabled: bool? -- Enable issues domain
|
|
48
|
+
# @rbs block_list: Array[String]? -- URL block list patterns
|
|
44
49
|
# @rbs default_viewport: Puppeteer::Viewport? -- Default viewport
|
|
45
50
|
# @rbs slow_mo: Integer? -- Delay between operations (ms)
|
|
46
51
|
# @rbs protocol_timeout: Integer? -- CDP protocol timeout in milliseconds
|
|
47
52
|
# @rbs block: Proc? -- Optional block receiving the browser
|
|
48
53
|
# @rbs return: Puppeteer::Browser -- Browser instance
|
|
49
|
-
def connect: (?browser_ws_endpoint: String?, ?browser_url: String?, ?transport: Puppeteer::WebSocketTransport?, ?ignore_https_errors: bool?, ?network_enabled: bool?, ?default_viewport: Puppeteer::Viewport?, ?slow_mo: Integer?, ?protocol_timeout: Integer?) ?{ (?) -> untyped } -> Puppeteer::Browser
|
|
54
|
+
def connect: (?browser_ws_endpoint: String?, ?browser_url: String?, ?transport: Puppeteer::WebSocketTransport?, ?ignore_https_errors: bool?, ?network_enabled: bool?, ?issues_enabled: bool?, ?block_list: Array[String]?, ?default_viewport: Puppeteer::Viewport?, ?slow_mo: Integer?, ?protocol_timeout: Integer?) ?{ (?) -> untyped } -> Puppeteer::Browser
|
|
50
55
|
|
|
51
56
|
# @rbs channel: String? -- Browser channel
|
|
52
57
|
# @rbs return: String -- Executable path
|