playwright-ruby-client 1.20.2 → 1.23.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/documentation/docs/api/api_request_context.md +15 -2
- data/documentation/docs/api/browser.md +16 -0
- data/documentation/docs/api/browser_context.md +15 -2
- data/documentation/docs/api/browser_type.md +5 -1
- data/documentation/docs/api/console_message.md +27 -1
- data/documentation/docs/api/element_handle.md +23 -13
- data/documentation/docs/api/experimental/android.md +1 -1
- data/documentation/docs/api/experimental/android_device.md +4 -0
- data/documentation/docs/api/file_chooser.md +1 -1
- data/documentation/docs/api/frame.md +12 -5
- data/documentation/docs/api/frame_locator.md +1 -1
- data/documentation/docs/api/locator.md +44 -13
- data/documentation/docs/api/page.md +32 -9
- data/documentation/docs/api/request.md +3 -1
- data/documentation/docs/api/response.md +12 -1
- data/documentation/docs/api/route.md +67 -0
- data/documentation/docs/include/api_coverage.md +6 -3
- data/documentation/package.json +6 -6
- data/documentation/yarn.lock +2931 -3220
- data/lib/playwright/channel.rb +1 -3
- data/lib/playwright/channel_owners/browser.rb +13 -0
- data/lib/playwright/channel_owners/browser_context.rb +89 -13
- data/lib/playwright/channel_owners/browser_type.rb +4 -0
- data/lib/playwright/channel_owners/element_handle.rb +12 -3
- data/lib/playwright/channel_owners/frame.rb +20 -7
- data/lib/playwright/channel_owners/local_utils.rb +29 -0
- data/lib/playwright/channel_owners/page.rb +54 -22
- data/lib/playwright/channel_owners/request.rb +31 -6
- data/lib/playwright/channel_owners/response.rb +6 -0
- data/lib/playwright/channel_owners/route.rb +104 -45
- data/lib/playwright/channel_owners/writable_stream.rb +14 -0
- data/lib/playwright/connection.rb +6 -1
- data/lib/playwright/har_router.rb +82 -0
- data/lib/playwright/http_headers.rb +1 -1
- data/lib/playwright/input_files.rb +60 -8
- data/lib/playwright/javascript/regex.rb +23 -0
- data/lib/playwright/javascript/value_parser.rb +17 -2
- data/lib/playwright/javascript/value_serializer.rb +16 -6
- data/lib/playwright/javascript/visitor_info.rb +26 -0
- data/lib/playwright/javascript.rb +1 -0
- data/lib/playwright/locator_impl.rb +18 -5
- data/lib/playwright/playwright_api.rb +26 -6
- data/lib/playwright/route_handler.rb +2 -6
- data/lib/playwright/transport.rb +12 -2
- data/lib/playwright/utils.rb +31 -6
- data/lib/playwright/version.rb +2 -2
- data/lib/playwright.rb +2 -0
- data/lib/playwright_api/accessibility.rb +2 -1
- data/lib/playwright_api/android.rb +2 -2
- data/lib/playwright_api/android_device.rb +5 -1
- data/lib/playwright_api/api_request.rb +3 -3
- data/lib/playwright_api/api_request_context.rb +15 -2
- data/lib/playwright_api/browser.rb +15 -2
- data/lib/playwright_api/browser_context.rb +17 -7
- data/lib/playwright_api/browser_type.rb +7 -3
- data/lib/playwright_api/console_message.rb +20 -1
- data/lib/playwright_api/element_handle.rb +53 -49
- data/lib/playwright_api/file_chooser.rb +1 -1
- data/lib/playwright_api/frame.rb +30 -23
- data/lib/playwright_api/frame_locator.rb +1 -1
- data/lib/playwright_api/locator.rb +58 -38
- data/lib/playwright_api/page.rb +52 -32
- data/lib/playwright_api/playwright.rb +1 -1
- data/lib/playwright_api/request.rb +8 -1
- data/lib/playwright_api/response.rb +14 -1
- data/lib/playwright_api/route.rb +63 -2
- data/lib/playwright_api/selectors.rb +1 -1
- data/lib/playwright_api/tracing.rb +1 -1
- metadata +7 -4
- data/lib/playwright_api/local_utils.rb +0 -9
data/lib/playwright/transport.rb
CHANGED
@@ -110,12 +110,22 @@ module Playwright
|
|
110
110
|
|
111
111
|
def debug_send_message(message)
|
112
112
|
metadata = message.delete(:metadata)
|
113
|
-
puts "\x1b[33mSEND>\x1b[0m#{message}"
|
113
|
+
puts "\x1b[33mSEND>\x1b[0m#{shorten_double_quoted_string(message)}"
|
114
114
|
message[:metadata] = metadata
|
115
115
|
end
|
116
116
|
|
117
117
|
def debug_recv_message(message)
|
118
|
-
puts "\x1b[33mRECV>\x1b[0m#{message}"
|
118
|
+
puts "\x1b[33mRECV>\x1b[0m#{shorten_double_quoted_string(message)}"
|
119
|
+
end
|
120
|
+
|
121
|
+
def shorten_double_quoted_string(message, maxlen: 512)
|
122
|
+
message.to_s.gsub(/"([^"]+)"/) do |str|
|
123
|
+
if $1.length > maxlen
|
124
|
+
"\"#{$1[0...maxlen]}...\""
|
125
|
+
else
|
126
|
+
str
|
127
|
+
end
|
128
|
+
end
|
119
129
|
end
|
120
130
|
end
|
121
131
|
end
|
data/lib/playwright/utils.rb
CHANGED
@@ -1,6 +1,36 @@
|
|
1
1
|
module Playwright
|
2
2
|
module Utils
|
3
3
|
module PrepareBrowserContextOptions
|
4
|
+
private def prepare_record_har_options(params)
|
5
|
+
out_params = {
|
6
|
+
path: params.delete(:record_har_path)
|
7
|
+
}
|
8
|
+
if params[:record_har_url_filter]
|
9
|
+
opt = params.delete(:record_har_url_filter)
|
10
|
+
if opt.is_a?(Regexp)
|
11
|
+
regex = ::Playwright::JavaScript::Regex.new(opt)
|
12
|
+
out_params[:urlRegexSource] = regex.source
|
13
|
+
out_params[:urlRegexFlags] = regex.flag
|
14
|
+
elsif opt.is_a?(String)
|
15
|
+
out_params[:urlGlob] = opt
|
16
|
+
end
|
17
|
+
end
|
18
|
+
if params[:record_har_mode]
|
19
|
+
out_params[:mode] = params.delete(:record_har_mode)
|
20
|
+
end
|
21
|
+
if params[:record_har_content]
|
22
|
+
out_params[:content] = params.delete(:record_har_content)
|
23
|
+
end
|
24
|
+
if params[:record_har_omit_content]
|
25
|
+
old_api_omit_content = params.delete(:record_har_omit_content)
|
26
|
+
if old_api_omit_content
|
27
|
+
out_params[:content] ||= 'omit'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
out_params
|
32
|
+
end
|
33
|
+
|
4
34
|
# @see https://github.com/microsoft/playwright/blob/5a2cfdbd47ed3c3deff77bb73e5fac34241f649d/src/client/browserContext.ts#L265
|
5
35
|
private def prepare_browser_context_options(params)
|
6
36
|
if params[:noViewport] == 0
|
@@ -11,12 +41,7 @@ module Playwright
|
|
11
41
|
params[:extraHTTPHeaders] = ::Playwright::HttpHeaders.new(params[:extraHTTPHeaders]).as_serialized
|
12
42
|
end
|
13
43
|
if params[:record_har_path]
|
14
|
-
params[:recordHar] =
|
15
|
-
path: params.delete(:record_har_path)
|
16
|
-
}
|
17
|
-
if params[:record_har_omit_content]
|
18
|
-
params[:recordHar][:omitContent] = params.delete(:record_har_omit_content)
|
19
|
-
end
|
44
|
+
params[:recordHar] = prepare_record_har_options(params)
|
20
45
|
end
|
21
46
|
if params[:record_video_dir]
|
22
47
|
params[:recordVideo] = {
|
data/lib/playwright/version.rb
CHANGED
data/lib/playwright.rb
CHANGED
@@ -20,6 +20,7 @@ require 'playwright/channel_owner'
|
|
20
20
|
require 'playwright/http_headers'
|
21
21
|
require 'playwright/input_files'
|
22
22
|
require 'playwright/connection'
|
23
|
+
require 'playwright/har_router'
|
23
24
|
require 'playwright/raw_headers'
|
24
25
|
require 'playwright/route_handler'
|
25
26
|
require 'playwright/select_option_values'
|
@@ -143,6 +144,7 @@ module Playwright
|
|
143
144
|
playwright = connection.initialize_playwright
|
144
145
|
browser = playwright.send(:pre_launched_browser)
|
145
146
|
browser.should_close_connection_on_close!
|
147
|
+
browser.send(:update_browser_type, browser.browser_type)
|
146
148
|
Execution.new(connection, PlaywrightApi.wrap(playwright), PlaywrightApi.wrap(browser))
|
147
149
|
rescue
|
148
150
|
connection.stop
|
@@ -35,7 +35,8 @@ module Playwright
|
|
35
35
|
# return node
|
36
36
|
# for child in (node.get("children") or []):
|
37
37
|
# found_node = find_focused_node(child)
|
38
|
-
#
|
38
|
+
# if (found_node)
|
39
|
+
# return found_node
|
39
40
|
# return None
|
40
41
|
#
|
41
42
|
# snapshot = page.accessibility.snapshot()
|
@@ -26,8 +26,8 @@ module Playwright
|
|
26
26
|
class Android < PlaywrightApi
|
27
27
|
|
28
28
|
# Returns the list of detected Android devices.
|
29
|
-
def devices(port: nil)
|
30
|
-
wrap_impl(@impl.devices(port: unwrap_impl(port)))
|
29
|
+
def devices(host: nil, omitDriverInstall: nil, port: nil)
|
30
|
+
wrap_impl(@impl.devices(host: unwrap_impl(host), omitDriverInstall: unwrap_impl(omitDriverInstall), port: unwrap_impl(port)))
|
31
31
|
end
|
32
32
|
|
33
33
|
# This setting will change the default maximum time for all the methods accepting `timeout` option.
|
@@ -57,18 +57,22 @@ module Playwright
|
|
57
57
|
noViewport: nil,
|
58
58
|
offline: nil,
|
59
59
|
permissions: nil,
|
60
|
+
record_har_content: nil,
|
61
|
+
record_har_mode: nil,
|
60
62
|
record_har_omit_content: nil,
|
61
63
|
record_har_path: nil,
|
64
|
+
record_har_url_filter: nil,
|
62
65
|
record_video_dir: nil,
|
63
66
|
record_video_size: nil,
|
64
67
|
reducedMotion: nil,
|
65
68
|
screen: nil,
|
69
|
+
serviceWorkers: nil,
|
66
70
|
strictSelectors: nil,
|
67
71
|
timezoneId: nil,
|
68
72
|
userAgent: nil,
|
69
73
|
viewport: nil,
|
70
74
|
&block)
|
71
|
-
wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
75
|
+
wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
72
76
|
end
|
73
77
|
|
74
78
|
# Performs a long tap on the widget defined by `selector`.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Playwright
|
2
|
-
# Exposes API that can be used for the Web API testing.
|
3
|
-
#
|
4
|
-
#
|
2
|
+
# Exposes API that can be used for the Web API testing. This class is used for creating `APIRequestContext` instance which
|
3
|
+
# in turn can be used for sending web requests. An instance of this class can be obtained via
|
4
|
+
# [`property: Playwright.request`]. For more information see `APIRequestContext`.
|
5
5
|
class APIRequest < PlaywrightApi
|
6
6
|
|
7
7
|
# Creates new instances of `APIRequestContext`.
|
@@ -1,9 +1,22 @@
|
|
1
1
|
module Playwright
|
2
2
|
# This API is used for the Web API testing. You can use it to trigger API endpoints, configure micro-services, prepare
|
3
|
-
# environment or the service to your e2e test.
|
4
|
-
#
|
3
|
+
# environment or the service to your e2e test.
|
4
|
+
#
|
5
|
+
# Each Playwright browser context has associated with it `APIRequestContext` instance which shares cookie storage with the
|
6
|
+
# browser context and can be accessed via [`property: BrowserContext.request`] or [`property: Page.request`]. It is also
|
7
|
+
# possible to create a new APIRequestContext instance manually by calling [`method: APIRequest.newContext`].
|
8
|
+
#
|
9
|
+
# **Cookie management**
|
10
|
+
#
|
11
|
+
# `APIRequestContext` retuned by [`property: BrowserContext.request`] and [`property: Page.request`] shares cookie storage
|
12
|
+
# with the corresponding `BrowserContext`. Each API request will have `Cookie` header populated with the values from the
|
13
|
+
# browser context. If the API response contains `Set-Cookie` header it will automatically update `BrowserContext` cookies
|
14
|
+
# and requests made from the page will pick them up. This means that if you log in using this API, your e2e test will be
|
5
15
|
# logged in and vice versa.
|
6
16
|
#
|
17
|
+
# If you want API requests to not interfere with the browser cookies you shoud create a new `APIRequestContext` by calling
|
18
|
+
# [`method: APIRequest.newContext`]. Such `APIRequestContext` object will have its own isolated cookie storage.
|
19
|
+
#
|
7
20
|
# ```python sync
|
8
21
|
# import os
|
9
22
|
# from playwright.sync_api import sync_playwright
|
@@ -18,6 +18,11 @@ module Playwright
|
|
18
18
|
# ```
|
19
19
|
class Browser < PlaywrightApi
|
20
20
|
|
21
|
+
# Get the browser type (chromium, firefox or webkit) that the browser belongs to.
|
22
|
+
def browser_type
|
23
|
+
wrap_impl(@impl.browser_type)
|
24
|
+
end
|
25
|
+
|
21
26
|
# In case this browser is obtained using [`method: BrowserType.launch`], closes the browser and all of its pages (if any
|
22
27
|
# were opened).
|
23
28
|
#
|
@@ -82,19 +87,23 @@ module Playwright
|
|
82
87
|
offline: nil,
|
83
88
|
permissions: nil,
|
84
89
|
proxy: nil,
|
90
|
+
record_har_content: nil,
|
91
|
+
record_har_mode: nil,
|
85
92
|
record_har_omit_content: nil,
|
86
93
|
record_har_path: nil,
|
94
|
+
record_har_url_filter: nil,
|
87
95
|
record_video_dir: nil,
|
88
96
|
record_video_size: nil,
|
89
97
|
reducedMotion: nil,
|
90
98
|
screen: nil,
|
99
|
+
serviceWorkers: nil,
|
91
100
|
storageState: nil,
|
92
101
|
strictSelectors: nil,
|
93
102
|
timezoneId: nil,
|
94
103
|
userAgent: nil,
|
95
104
|
viewport: nil,
|
96
105
|
&block)
|
97
|
-
wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
106
|
+
wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), storageState: unwrap_impl(storageState), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
98
107
|
end
|
99
108
|
|
100
109
|
# Creates a new page in a new browser context. Closing this page will close the context as well.
|
@@ -121,19 +130,23 @@ module Playwright
|
|
121
130
|
offline: nil,
|
122
131
|
permissions: nil,
|
123
132
|
proxy: nil,
|
133
|
+
record_har_content: nil,
|
134
|
+
record_har_mode: nil,
|
124
135
|
record_har_omit_content: nil,
|
125
136
|
record_har_path: nil,
|
137
|
+
record_har_url_filter: nil,
|
126
138
|
record_video_dir: nil,
|
127
139
|
record_video_size: nil,
|
128
140
|
reducedMotion: nil,
|
129
141
|
screen: nil,
|
142
|
+
serviceWorkers: nil,
|
130
143
|
storageState: nil,
|
131
144
|
strictSelectors: nil,
|
132
145
|
timezoneId: nil,
|
133
146
|
userAgent: nil,
|
134
147
|
viewport: nil,
|
135
148
|
&block)
|
136
|
-
wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
149
|
+
wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), storageState: unwrap_impl(storageState), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
137
150
|
end
|
138
151
|
|
139
152
|
# > NOTE: This API controls [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool)
|
@@ -225,9 +225,9 @@ module Playwright
|
|
225
225
|
# Routing provides the capability to modify network requests that are made by any page in the browser context. Once route
|
226
226
|
# is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
|
227
227
|
#
|
228
|
-
# > NOTE: [`method:
|
228
|
+
# > NOTE: [`method: BrowserContext.route`] will not intercept requests intercepted by Service Worker. See
|
229
229
|
# [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
|
230
|
-
# request interception
|
230
|
+
# request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
|
231
231
|
#
|
232
232
|
# An example of a naive handler that aborts all image requests:
|
233
233
|
#
|
@@ -273,6 +273,16 @@ module Playwright
|
|
273
273
|
wrap_impl(@impl.route(unwrap_impl(url), unwrap_impl(handler), times: unwrap_impl(times)))
|
274
274
|
end
|
275
275
|
|
276
|
+
# If specified the network requests that are made in the context will be served from the HAR file. Read more about
|
277
|
+
# [Replaying from HAR](../network.md#replaying-from-har).
|
278
|
+
#
|
279
|
+
# Playwright will not serve requests intercepted by Service Worker from the HAR file. See
|
280
|
+
# [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
|
281
|
+
# request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
|
282
|
+
def route_from_har(har, notFound: nil, update: nil, url: nil)
|
283
|
+
wrap_impl(@impl.route_from_har(unwrap_impl(har), notFound: unwrap_impl(notFound), update: unwrap_impl(update), url: unwrap_impl(url)))
|
284
|
+
end
|
285
|
+
|
276
286
|
# > NOTE: Service workers are only supported on Chromium-based browsers.
|
277
287
|
#
|
278
288
|
# All existing service workers in the context.
|
@@ -376,6 +386,11 @@ module Playwright
|
|
376
386
|
wrap_impl(@impl.pause)
|
377
387
|
end
|
378
388
|
|
389
|
+
# @nodoc
|
390
|
+
def options=(req)
|
391
|
+
wrap_impl(@impl.options=(unwrap_impl(req)))
|
392
|
+
end
|
393
|
+
|
379
394
|
# @nodoc
|
380
395
|
def enable_debug_console!
|
381
396
|
wrap_impl(@impl.enable_debug_console!)
|
@@ -391,11 +406,6 @@ module Playwright
|
|
391
406
|
wrap_impl(@impl.owner_page=(unwrap_impl(req)))
|
392
407
|
end
|
393
408
|
|
394
|
-
# @nodoc
|
395
|
-
def options=(req)
|
396
|
-
wrap_impl(@impl.options=(unwrap_impl(req)))
|
397
|
-
end
|
398
|
-
|
399
409
|
# -- inherited from EventEmitter --
|
400
410
|
# @nodoc
|
401
411
|
def off(event, callback)
|
@@ -18,12 +18,12 @@ module Playwright
|
|
18
18
|
# ```
|
19
19
|
class BrowserType < PlaywrightApi
|
20
20
|
|
21
|
-
# This
|
21
|
+
# This method attaches Playwright to an existing browser instance.
|
22
22
|
def connect(wsEndpoint, headers: nil, slowMo: nil, timeout: nil)
|
23
23
|
raise NotImplementedError.new('connect is not implemented yet.')
|
24
24
|
end
|
25
25
|
|
26
|
-
# This
|
26
|
+
# This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
|
27
27
|
#
|
28
28
|
# The default browser context is accessible via [`method: Browser.contexts`].
|
29
29
|
#
|
@@ -124,12 +124,16 @@ module Playwright
|
|
124
124
|
offline: nil,
|
125
125
|
permissions: nil,
|
126
126
|
proxy: nil,
|
127
|
+
record_har_content: nil,
|
128
|
+
record_har_mode: nil,
|
127
129
|
record_har_omit_content: nil,
|
128
130
|
record_har_path: nil,
|
131
|
+
record_har_url_filter: nil,
|
129
132
|
record_video_dir: nil,
|
130
133
|
record_video_size: nil,
|
131
134
|
reducedMotion: nil,
|
132
135
|
screen: nil,
|
136
|
+
serviceWorkers: nil,
|
133
137
|
slowMo: nil,
|
134
138
|
strictSelectors: nil,
|
135
139
|
timeout: nil,
|
@@ -138,7 +142,7 @@ module Playwright
|
|
138
142
|
userAgent: nil,
|
139
143
|
viewport: nil,
|
140
144
|
&block)
|
141
|
-
wrap_impl(@impl.launch_persistent_context(unwrap_impl(userDataDir), acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), hasTouch: unwrap_impl(hasTouch), headless: unwrap_impl(headless), httpCredentials: unwrap_impl(httpCredentials), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), slowMo: unwrap_impl(slowMo), strictSelectors: unwrap_impl(strictSelectors), timeout: unwrap_impl(timeout), timezoneId: unwrap_impl(timezoneId), tracesDir: unwrap_impl(tracesDir), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
145
|
+
wrap_impl(@impl.launch_persistent_context(unwrap_impl(userDataDir), acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), hasTouch: unwrap_impl(hasTouch), headless: unwrap_impl(headless), httpCredentials: unwrap_impl(httpCredentials), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), slowMo: unwrap_impl(slowMo), strictSelectors: unwrap_impl(strictSelectors), timeout: unwrap_impl(timeout), timezoneId: unwrap_impl(timezoneId), tracesDir: unwrap_impl(tracesDir), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
142
146
|
end
|
143
147
|
|
144
148
|
# Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
|
@@ -1,5 +1,24 @@
|
|
1
1
|
module Playwright
|
2
|
-
# `ConsoleMessage` objects are dispatched by page via the [`event: Page.console`] event.
|
2
|
+
# `ConsoleMessage` objects are dispatched by page via the [`event: Page.console`] event. For each console messages logged
|
3
|
+
# in the page there will be corresponding event in the Playwright context.
|
4
|
+
#
|
5
|
+
# ```python sync
|
6
|
+
# # Listen for all console logs
|
7
|
+
# page.on("console", lambda msg: print(msg.text))
|
8
|
+
#
|
9
|
+
# # Listen for all console events and handle errors
|
10
|
+
# page.on("console", lambda msg: print(f"error: {msg.text}") if msg.type == "error" else None)
|
11
|
+
#
|
12
|
+
# # Get the next console log
|
13
|
+
# with page.expect_console_message() as msg_info:
|
14
|
+
# # Issue console.log inside the page
|
15
|
+
# page.evaluate("console.log('hello', 42, { foo: 'bar' })")
|
16
|
+
# msg = msg_info.value
|
17
|
+
#
|
18
|
+
# # Deconstruct print arguments
|
19
|
+
# msg.args[0].json_value() # hello
|
20
|
+
# msg.args[1].json_value() # 42
|
21
|
+
# ```
|
3
22
|
class ConsoleMessage < PlaywrightApi
|
4
23
|
|
5
24
|
# List of arguments passed to a `console` function call. See also [`event: Page.console`].
|