playwright-ruby-client 0.0.8 → 1.58.1.alpha1
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/AGENTS.md +4 -0
- data/CLAUDE/api_generation.md +28 -0
- data/CLAUDE/ci_expectations.md +23 -0
- data/CLAUDE/gem_release_flow.md +39 -0
- data/CLAUDE/past_upgrade_pr_patterns.md +42 -0
- data/CLAUDE/playwright_upgrade_workflow.md +35 -0
- data/CLAUDE/rspec_debugging.md +30 -0
- data/CLAUDE/unimplemented_examples.md +18 -0
- data/CLAUDE.md +32 -0
- data/CONTRIBUTING.md +5 -0
- data/README.md +60 -16
- data/documentation/README.md +33 -0
- data/documentation/babel.config.js +3 -0
- data/documentation/docs/api/api_request.md +7 -0
- data/documentation/docs/api/api_request_context.md +298 -0
- data/documentation/docs/api/api_response.md +114 -0
- data/documentation/docs/api/browser.md +237 -0
- data/documentation/docs/api/browser_context.md +503 -0
- data/documentation/docs/api/browser_type.md +184 -0
- data/documentation/docs/api/cdp_session.md +44 -0
- data/documentation/docs/api/clock.md +154 -0
- data/documentation/docs/api/console_message.md +85 -0
- data/documentation/docs/api/dialog.md +84 -0
- data/documentation/docs/api/download.md +111 -0
- data/documentation/docs/api/element_handle.md +694 -0
- data/documentation/docs/api/experimental/_category_.yml +3 -0
- data/documentation/docs/api/experimental/android.md +42 -0
- data/documentation/docs/api/experimental/android_device.md +109 -0
- data/documentation/docs/api/experimental/android_input.md +43 -0
- data/documentation/docs/api/experimental/android_socket.md +7 -0
- data/documentation/docs/api/experimental/android_web_view.md +7 -0
- data/documentation/docs/api/file_chooser.md +53 -0
- data/documentation/docs/api/frame.md +1218 -0
- data/documentation/docs/api/frame_locator.md +348 -0
- data/documentation/docs/api/js_handle.md +121 -0
- data/documentation/docs/api/keyboard.md +170 -0
- data/documentation/docs/api/locator.md +1495 -0
- data/documentation/docs/api/locator_assertions.md +827 -0
- data/documentation/docs/api/mouse.md +86 -0
- data/documentation/docs/api/page.md +1946 -0
- data/documentation/docs/api/page_assertions.md +65 -0
- data/documentation/docs/api/playwright.md +66 -0
- data/documentation/docs/api/request.md +255 -0
- data/documentation/docs/api/response.md +176 -0
- data/documentation/docs/api/route.md +205 -0
- data/documentation/docs/api/selectors.md +63 -0
- data/documentation/docs/api/touchscreen.md +22 -0
- data/documentation/docs/api/tracing.md +129 -0
- data/documentation/docs/api/web_socket.md +51 -0
- data/documentation/docs/api/worker.md +83 -0
- data/documentation/docs/article/api_coverage.mdx +11 -0
- data/documentation/docs/article/getting_started.md +161 -0
- data/documentation/docs/article/guides/_category_.yml +3 -0
- data/documentation/docs/article/guides/download_playwright_driver.md +55 -0
- data/documentation/docs/article/guides/inspector.md +31 -0
- data/documentation/docs/article/guides/launch_browser.md +121 -0
- data/documentation/docs/article/guides/playwright_on_alpine_linux.md +112 -0
- data/documentation/docs/article/guides/rails_integration.md +278 -0
- data/documentation/docs/article/guides/rails_integration_with_null_driver.md +145 -0
- data/documentation/docs/article/guides/recording_video.md +79 -0
- data/documentation/docs/article/guides/rspec_integration.md +59 -0
- data/documentation/docs/article/guides/semi_automation.md +71 -0
- data/documentation/docs/article/guides/use_storage_state.md +78 -0
- data/documentation/docs/include/api_coverage.md +671 -0
- data/documentation/docusaurus.config.js +114 -0
- data/documentation/package.json +39 -0
- data/documentation/sidebars.js +15 -0
- data/documentation/src/components/HomepageFeatures.js +61 -0
- data/documentation/src/components/HomepageFeatures.module.css +13 -0
- data/documentation/src/css/custom.css +44 -0
- data/documentation/src/pages/index.js +49 -0
- data/documentation/src/pages/index.module.css +41 -0
- data/documentation/src/pages/markdown-page.md +7 -0
- data/documentation/static/.nojekyll +0 -0
- data/documentation/static/img/playwright-logo.svg +9 -0
- data/documentation/static/img/playwright-ruby-client.png +0 -0
- data/documentation/static/img/undraw_dropdown_menu.svg +1 -0
- data/documentation/static/img/undraw_web_development.svg +1 -0
- data/documentation/static/img/undraw_windows.svg +1 -0
- data/documentation/yarn.lock +9005 -0
- data/lib/playwright/{input_types/android_input.rb → android_input_impl.rb} +5 -1
- data/lib/playwright/api_implementation.rb +18 -0
- data/lib/playwright/api_response_impl.rb +77 -0
- data/lib/playwright/channel.rb +62 -1
- data/lib/playwright/channel_owner.rb +70 -7
- data/lib/playwright/channel_owners/android.rb +16 -3
- data/lib/playwright/channel_owners/android_device.rb +22 -66
- data/lib/playwright/channel_owners/api_request_context.rb +247 -0
- data/lib/playwright/channel_owners/artifact.rb +40 -0
- data/lib/playwright/channel_owners/binding_call.rb +70 -0
- data/lib/playwright/channel_owners/browser.rb +114 -22
- data/lib/playwright/channel_owners/browser_context.rb +589 -15
- data/lib/playwright/channel_owners/browser_type.rb +90 -1
- data/lib/playwright/channel_owners/cdp_session.rb +19 -0
- data/lib/playwright/channel_owners/dialog.rb +32 -0
- data/lib/playwright/channel_owners/element_handle.rb +107 -43
- data/lib/playwright/channel_owners/fetch_request.rb +8 -0
- data/lib/playwright/channel_owners/frame.rb +334 -104
- data/lib/playwright/channel_owners/js_handle.rb +9 -13
- data/lib/playwright/channel_owners/local_utils.rb +82 -0
- data/lib/playwright/channel_owners/page.rb +778 -95
- data/lib/playwright/channel_owners/playwright.rb +25 -30
- data/lib/playwright/channel_owners/request.rb +120 -18
- data/lib/playwright/channel_owners/response.rb +113 -0
- data/lib/playwright/channel_owners/route.rb +181 -0
- data/lib/playwright/channel_owners/stream.rb +30 -0
- data/lib/playwright/channel_owners/tracing.rb +117 -0
- data/lib/playwright/channel_owners/web_socket.rb +96 -0
- data/lib/playwright/channel_owners/worker.rb +46 -0
- data/lib/playwright/channel_owners/writable_stream.rb +14 -0
- data/lib/playwright/clock_impl.rb +67 -0
- data/lib/playwright/connection.rb +111 -63
- data/lib/playwright/console_message_impl.rb +29 -0
- data/lib/playwright/download_impl.rb +32 -0
- data/lib/playwright/errors.rb +42 -5
- data/lib/playwright/event_emitter.rb +17 -3
- data/lib/playwright/event_emitter_proxy.rb +49 -0
- data/lib/playwright/events.rb +10 -5
- data/lib/playwright/file_chooser_impl.rb +24 -0
- data/lib/playwright/frame_locator_impl.rb +66 -0
- data/lib/playwright/har_router.rb +89 -0
- data/lib/playwright/http_headers.rb +14 -0
- data/lib/playwright/input_files.rb +102 -15
- data/lib/playwright/javascript/expression.rb +7 -11
- data/lib/playwright/javascript/regex.rb +23 -0
- data/lib/playwright/javascript/source_url.rb +16 -0
- data/lib/playwright/javascript/value_parser.rb +108 -19
- data/lib/playwright/javascript/value_serializer.rb +47 -8
- data/lib/playwright/javascript/visitor_info.rb +26 -0
- data/lib/playwright/javascript.rb +2 -10
- data/lib/playwright/{input_types/keyboard.rb → keyboard_impl.rb} +6 -2
- data/lib/playwright/locator_assertions_impl.rb +571 -0
- data/lib/playwright/locator_impl.rb +544 -0
- data/lib/playwright/locator_utils.rb +136 -0
- data/lib/playwright/mouse_impl.rb +57 -0
- data/lib/playwright/page_assertions_impl.rb +154 -0
- data/lib/playwright/playwright_api.rb +102 -30
- data/lib/playwright/raw_headers.rb +61 -0
- data/lib/playwright/route_handler.rb +78 -0
- data/lib/playwright/select_option_values.rb +34 -13
- data/lib/playwright/selectors_impl.rb +45 -0
- data/lib/playwright/test.rb +102 -0
- data/lib/playwright/timeout_settings.rb +9 -4
- data/lib/playwright/touchscreen_impl.rb +14 -0
- data/lib/playwright/transport.rb +61 -10
- data/lib/playwright/url_matcher.rb +24 -2
- data/lib/playwright/utils.rb +48 -13
- data/lib/playwright/version.rb +2 -1
- data/lib/playwright/video.rb +54 -0
- data/lib/playwright/waiter.rb +166 -0
- data/lib/playwright/web_socket_client.rb +167 -0
- data/lib/playwright/web_socket_transport.rb +116 -0
- data/lib/playwright.rb +188 -11
- data/lib/playwright_api/android.rb +46 -11
- data/lib/playwright_api/android_device.rb +182 -31
- data/lib/playwright_api/android_input.rb +22 -13
- data/lib/playwright_api/android_socket.rb +18 -0
- data/lib/playwright_api/android_web_view.rb +24 -0
- data/lib/playwright_api/api_request.rb +26 -0
- data/lib/playwright_api/api_request_context.rb +311 -0
- data/lib/playwright_api/api_response.rb +92 -0
- data/lib/playwright_api/browser.rb +116 -103
- data/lib/playwright_api/browser_context.rb +290 -389
- data/lib/playwright_api/browser_type.rb +96 -118
- data/lib/playwright_api/cdp_session.rb +36 -39
- data/lib/playwright_api/clock.rb +121 -0
- data/lib/playwright_api/console_message.rb +35 -19
- data/lib/playwright_api/dialog.rb +53 -50
- data/lib/playwright_api/download.rb +49 -43
- data/lib/playwright_api/element_handle.rb +354 -402
- data/lib/playwright_api/file_chooser.rb +15 -18
- data/lib/playwright_api/frame.rb +703 -603
- data/lib/playwright_api/frame_locator.rb +285 -0
- data/lib/playwright_api/js_handle.rb +50 -76
- data/lib/playwright_api/keyboard.rb +67 -146
- data/lib/playwright_api/locator.rb +1304 -0
- data/lib/playwright_api/locator_assertions.rb +704 -0
- data/lib/playwright_api/mouse.rb +23 -29
- data/lib/playwright_api/page.rb +1196 -1176
- data/lib/playwright_api/page_assertions.rb +60 -0
- data/lib/playwright_api/playwright.rb +54 -122
- data/lib/playwright_api/request.rb +112 -74
- data/lib/playwright_api/response.rb +92 -20
- data/lib/playwright_api/route.rb +152 -62
- data/lib/playwright_api/selectors.rb +47 -61
- data/lib/playwright_api/touchscreen.rb +8 -2
- data/lib/playwright_api/tracing.rb +128 -0
- data/lib/playwright_api/web_socket.rb +43 -5
- data/lib/playwright_api/worker.rb +74 -34
- data/playwright.gemspec +14 -9
- data/sig/playwright.rbs +658 -0
- metadata +216 -50
- data/docs/api_coverage.md +0 -354
- data/lib/playwright/channel_owners/chromium_browser.rb +0 -8
- data/lib/playwright/channel_owners/chromium_browser_context.rb +0 -8
- data/lib/playwright/channel_owners/console_message.rb +0 -21
- data/lib/playwright/channel_owners/firefox_browser.rb +0 -8
- data/lib/playwright/channel_owners/selectors.rb +0 -4
- data/lib/playwright/channel_owners/webkit_browser.rb +0 -8
- data/lib/playwright/input_type.rb +0 -19
- data/lib/playwright/input_types/mouse.rb +0 -4
- data/lib/playwright/input_types/touchscreen.rb +0 -4
- data/lib/playwright/javascript/function.rb +0 -67
- data/lib/playwright/wait_helper.rb +0 -73
- data/lib/playwright_api/accessibility.rb +0 -93
- data/lib/playwright_api/binding_call.rb +0 -23
- data/lib/playwright_api/chromium_browser_context.rb +0 -57
- data/lib/playwright_api/video.rb +0 -24
|
@@ -1,119 +1,79 @@
|
|
|
1
1
|
module Playwright
|
|
2
|
-
# - extends: [EventEmitter]
|
|
3
|
-
#
|
|
4
|
-
# A Browser is created via [`method: BrowserType.launch`]. An example of using a `Browser` to create a [Page]:
|
|
5
|
-
#
|
|
6
2
|
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
# (async () => {
|
|
11
|
-
# const browser = await firefox.launch();
|
|
12
|
-
# const page = await browser.newPage();
|
|
13
|
-
# await page.goto('https://example.com');
|
|
14
|
-
# await browser.close();
|
|
15
|
-
# })();
|
|
16
|
-
# ```
|
|
17
|
-
#
|
|
18
|
-
# ```python async
|
|
19
|
-
# import asyncio
|
|
20
|
-
# from playwright.async_api import async_playwright
|
|
21
|
-
#
|
|
22
|
-
# async def run(playwright):
|
|
23
|
-
# firefox = playwright.firefox
|
|
24
|
-
# browser = await firefox.launch()
|
|
25
|
-
# page = await browser.new_page()
|
|
26
|
-
# await page.goto("https://example.com")
|
|
27
|
-
# await browser.close()
|
|
28
|
-
#
|
|
29
|
-
# async def main():
|
|
30
|
-
# async with async_playwright() as playwright:
|
|
31
|
-
# await run(playwright)
|
|
32
|
-
# asyncio.run(main())
|
|
33
|
-
# ```
|
|
34
|
-
#
|
|
3
|
+
# A Browser is created via [`method: BrowserType.launch`]. An example of using a `Browser` to create a `Page`:
|
|
4
|
+
#
|
|
35
5
|
# ```python sync
|
|
36
|
-
# from playwright.sync_api import sync_playwright
|
|
37
|
-
#
|
|
38
|
-
# def run(playwright):
|
|
6
|
+
# from playwright.sync_api import sync_playwright, Playwright
|
|
7
|
+
#
|
|
8
|
+
# def run(playwright: Playwright):
|
|
39
9
|
# firefox = playwright.firefox
|
|
40
10
|
# browser = firefox.launch()
|
|
41
11
|
# page = browser.new_page()
|
|
42
12
|
# page.goto("https://example.com")
|
|
43
13
|
# browser.close()
|
|
44
|
-
#
|
|
14
|
+
#
|
|
45
15
|
# with sync_playwright() as playwright:
|
|
46
16
|
# run(playwright)
|
|
47
17
|
# ```
|
|
48
18
|
class Browser < PlaywrightApi
|
|
49
19
|
|
|
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
|
+
|
|
26
|
+
#
|
|
50
27
|
# In case this browser is obtained using [`method: BrowserType.launch`], closes the browser and all of its pages (if any
|
|
51
28
|
# were opened).
|
|
52
|
-
#
|
|
29
|
+
#
|
|
53
30
|
# In case this browser is connected to, clears all created contexts belonging to this browser and disconnects from the
|
|
54
31
|
# browser server.
|
|
55
|
-
#
|
|
32
|
+
#
|
|
33
|
+
# **NOTE**: This is similar to force-quitting the browser. To close pages gracefully and ensure you receive page close events, call [`method: BrowserContext.close`] on any `BrowserContext` instances you explicitly created earlier using [`method: Browser.newContext`] **before** calling [`method: Browser.close`].
|
|
34
|
+
#
|
|
56
35
|
# The `Browser` object itself is considered to be disposed and cannot be used anymore.
|
|
57
|
-
def close
|
|
58
|
-
wrap_impl(@impl.close)
|
|
36
|
+
def close(reason: nil)
|
|
37
|
+
wrap_impl(@impl.close(reason: unwrap_impl(reason)))
|
|
59
38
|
end
|
|
60
39
|
|
|
40
|
+
#
|
|
61
41
|
# Returns an array of all open browser contexts. In a newly created browser, this will return zero browser contexts.
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
# const browser = await pw.webkit.launch();
|
|
66
|
-
# console.log(browser.contexts().length); // prints `0`
|
|
67
|
-
#
|
|
68
|
-
# const context = await browser.newContext();
|
|
69
|
-
# console.log(browser.contexts().length); // prints `1`
|
|
70
|
-
# ```
|
|
71
|
-
#
|
|
72
|
-
# ```python async
|
|
73
|
-
# browser = await pw.webkit.launch()
|
|
74
|
-
# print(len(browser.contexts())) # prints `0`
|
|
75
|
-
# context = await browser.new_context()
|
|
76
|
-
# print(len(browser.contexts())) # prints `1`
|
|
77
|
-
# ```
|
|
78
|
-
#
|
|
42
|
+
#
|
|
43
|
+
# **Usage**
|
|
44
|
+
#
|
|
79
45
|
# ```python sync
|
|
80
46
|
# browser = pw.webkit.launch()
|
|
81
|
-
# print(len(browser.contexts
|
|
47
|
+
# print(len(browser.contexts)) # prints `0`
|
|
82
48
|
# context = browser.new_context()
|
|
83
|
-
# print(len(browser.contexts
|
|
49
|
+
# print(len(browser.contexts)) # prints `1`
|
|
84
50
|
# ```
|
|
85
51
|
def contexts
|
|
86
52
|
wrap_impl(@impl.contexts)
|
|
87
53
|
end
|
|
88
54
|
|
|
55
|
+
#
|
|
89
56
|
# Indicates that the browser is connected.
|
|
90
57
|
def connected?
|
|
91
58
|
wrap_impl(@impl.connected?)
|
|
92
59
|
end
|
|
93
60
|
|
|
61
|
+
#
|
|
62
|
+
# **NOTE**: CDP Sessions are only supported on Chromium-based browsers.
|
|
63
|
+
#
|
|
64
|
+
# Returns the newly created browser session.
|
|
65
|
+
def new_browser_cdp_session
|
|
66
|
+
wrap_impl(@impl.new_browser_cdp_session)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
#
|
|
94
70
|
# Creates a new browser context. It won't share cookies/cache with other browser contexts.
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
98
|
-
#
|
|
99
|
-
#
|
|
100
|
-
#
|
|
101
|
-
# const context = await browser.newContext();
|
|
102
|
-
# // Create a new page in a pristine context.
|
|
103
|
-
# const page = await context.newPage();
|
|
104
|
-
# await page.goto('https://example.com');
|
|
105
|
-
# })();
|
|
106
|
-
# ```
|
|
107
|
-
#
|
|
108
|
-
# ```python async
|
|
109
|
-
# browser = await playwright.firefox.launch() # or "chromium" or "webkit".
|
|
110
|
-
# # create a new incognito browser context.
|
|
111
|
-
# context = await browser.new_context()
|
|
112
|
-
# # create a new page in a pristine context.
|
|
113
|
-
# page = await context.new_page()
|
|
114
|
-
# await page.goto("https://example.com")
|
|
115
|
-
# ```
|
|
116
|
-
#
|
|
71
|
+
#
|
|
72
|
+
# **NOTE**: If directly using this method to create `BrowserContext`s, it is best practice to explicitly close the returned context via [`method: BrowserContext.close`] when your code is done with the `BrowserContext`,
|
|
73
|
+
# and before calling [`method: Browser.close`]. This will ensure the `context` is closed gracefully and any artifacts—like HARs and videos—are fully flushed and saved.
|
|
74
|
+
#
|
|
75
|
+
# **Usage**
|
|
76
|
+
#
|
|
117
77
|
# ```python sync
|
|
118
78
|
# browser = playwright.firefox.launch() # or "chromium" or "webkit".
|
|
119
79
|
# # create a new incognito browser context.
|
|
@@ -121,13 +81,21 @@ module Playwright
|
|
|
121
81
|
# # create a new page in a pristine context.
|
|
122
82
|
# page = context.new_page()
|
|
123
83
|
# page.goto("https://example.com")
|
|
84
|
+
#
|
|
85
|
+
# # gracefully close up everything
|
|
86
|
+
# context.close()
|
|
87
|
+
# browser.close()
|
|
124
88
|
# ```
|
|
125
89
|
def new_context(
|
|
126
90
|
acceptDownloads: nil,
|
|
91
|
+
baseURL: nil,
|
|
127
92
|
bypassCSP: nil,
|
|
93
|
+
clientCertificates: nil,
|
|
128
94
|
colorScheme: nil,
|
|
95
|
+
contrast: nil,
|
|
129
96
|
deviceScaleFactor: nil,
|
|
130
97
|
extraHTTPHeaders: nil,
|
|
98
|
+
forcedColors: nil,
|
|
131
99
|
geolocation: nil,
|
|
132
100
|
hasTouch: nil,
|
|
133
101
|
httpCredentials: nil,
|
|
@@ -135,33 +103,45 @@ module Playwright
|
|
|
135
103
|
isMobile: nil,
|
|
136
104
|
javaScriptEnabled: nil,
|
|
137
105
|
locale: nil,
|
|
138
|
-
|
|
106
|
+
noViewport: nil,
|
|
139
107
|
offline: nil,
|
|
140
108
|
permissions: nil,
|
|
141
109
|
proxy: nil,
|
|
142
|
-
|
|
143
|
-
|
|
110
|
+
record_har_content: nil,
|
|
111
|
+
record_har_mode: nil,
|
|
112
|
+
record_har_omit_content: nil,
|
|
113
|
+
record_har_path: nil,
|
|
114
|
+
record_har_url_filter: nil,
|
|
115
|
+
record_video_dir: nil,
|
|
116
|
+
record_video_size: nil,
|
|
117
|
+
reducedMotion: nil,
|
|
118
|
+
screen: nil,
|
|
119
|
+
serviceWorkers: nil,
|
|
144
120
|
storageState: nil,
|
|
121
|
+
strictSelectors: nil,
|
|
145
122
|
timezoneId: nil,
|
|
146
123
|
userAgent: nil,
|
|
147
|
-
videoSize: nil,
|
|
148
|
-
videosPath: nil,
|
|
149
124
|
viewport: nil,
|
|
150
125
|
&block)
|
|
151
|
-
wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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),
|
|
126
|
+
wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), clientCertificates: unwrap_impl(clientCertificates), colorScheme: unwrap_impl(colorScheme), contrast: unwrap_impl(contrast), 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)))
|
|
152
127
|
end
|
|
153
128
|
|
|
129
|
+
#
|
|
154
130
|
# Creates a new page in a new browser context. Closing this page will close the context as well.
|
|
155
|
-
#
|
|
131
|
+
#
|
|
156
132
|
# This is a convenience API that should only be used for the single-page scenarios and short snippets. Production code and
|
|
157
133
|
# testing frameworks should explicitly create [`method: Browser.newContext`] followed by the
|
|
158
134
|
# [`method: BrowserContext.newPage`] to control their exact life times.
|
|
159
135
|
def new_page(
|
|
160
136
|
acceptDownloads: nil,
|
|
137
|
+
baseURL: nil,
|
|
161
138
|
bypassCSP: nil,
|
|
139
|
+
clientCertificates: nil,
|
|
162
140
|
colorScheme: nil,
|
|
141
|
+
contrast: nil,
|
|
163
142
|
deviceScaleFactor: nil,
|
|
164
143
|
extraHTTPHeaders: nil,
|
|
144
|
+
forcedColors: nil,
|
|
165
145
|
geolocation: nil,
|
|
166
146
|
hasTouch: nil,
|
|
167
147
|
httpCredentials: nil,
|
|
@@ -169,47 +149,80 @@ module Playwright
|
|
|
169
149
|
isMobile: nil,
|
|
170
150
|
javaScriptEnabled: nil,
|
|
171
151
|
locale: nil,
|
|
172
|
-
|
|
152
|
+
noViewport: nil,
|
|
173
153
|
offline: nil,
|
|
174
154
|
permissions: nil,
|
|
175
155
|
proxy: nil,
|
|
176
|
-
|
|
177
|
-
|
|
156
|
+
record_har_content: nil,
|
|
157
|
+
record_har_mode: nil,
|
|
158
|
+
record_har_omit_content: nil,
|
|
159
|
+
record_har_path: nil,
|
|
160
|
+
record_har_url_filter: nil,
|
|
161
|
+
record_video_dir: nil,
|
|
162
|
+
record_video_size: nil,
|
|
163
|
+
reducedMotion: nil,
|
|
164
|
+
screen: nil,
|
|
165
|
+
serviceWorkers: nil,
|
|
178
166
|
storageState: nil,
|
|
167
|
+
strictSelectors: nil,
|
|
179
168
|
timezoneId: nil,
|
|
180
169
|
userAgent: nil,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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), logger: unwrap_impl(logger), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), recordHar: unwrap_impl(recordHar), recordVideo: unwrap_impl(recordVideo), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), videoSize: unwrap_impl(videoSize), videosPath: unwrap_impl(videosPath), viewport: unwrap_impl(viewport)))
|
|
170
|
+
viewport: nil,
|
|
171
|
+
&block)
|
|
172
|
+
wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), clientCertificates: unwrap_impl(clientCertificates), colorScheme: unwrap_impl(colorScheme), contrast: unwrap_impl(contrast), 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)))
|
|
185
173
|
end
|
|
186
174
|
|
|
175
|
+
#
|
|
176
|
+
# **NOTE**: This API controls [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) which is a low-level chromium-specific debugging tool. API to control [Playwright Tracing](../trace-viewer) could be found [here](./class-tracing).
|
|
177
|
+
#
|
|
178
|
+
# You can use [`method: Browser.startTracing`] and [`method: Browser.stopTracing`] to create a trace file that can
|
|
179
|
+
# be opened in Chrome DevTools performance panel.
|
|
180
|
+
#
|
|
181
|
+
# **Usage**
|
|
182
|
+
#
|
|
183
|
+
# ```python sync
|
|
184
|
+
# browser.start_tracing(page, path="trace.json")
|
|
185
|
+
# page.goto("https://www.google.com")
|
|
186
|
+
# browser.stop_tracing()
|
|
187
|
+
# ```
|
|
188
|
+
def start_tracing(page: nil, categories: nil, path: nil, screenshots: nil)
|
|
189
|
+
wrap_impl(@impl.start_tracing(page: unwrap_impl(page), categories: unwrap_impl(categories), path: unwrap_impl(path), screenshots: unwrap_impl(screenshots)))
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
#
|
|
193
|
+
# **NOTE**: This API controls [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) which is a low-level chromium-specific debugging tool. API to control [Playwright Tracing](../trace-viewer) could be found [here](./class-tracing).
|
|
194
|
+
#
|
|
195
|
+
# Returns the buffer with trace data.
|
|
196
|
+
def stop_tracing
|
|
197
|
+
wrap_impl(@impl.stop_tracing)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
#
|
|
187
201
|
# Returns the browser version.
|
|
188
202
|
def version
|
|
189
203
|
wrap_impl(@impl.version)
|
|
190
204
|
end
|
|
191
205
|
|
|
206
|
+
# -- inherited from EventEmitter --
|
|
192
207
|
# @nodoc
|
|
193
|
-
def
|
|
194
|
-
|
|
208
|
+
def once(event, callback)
|
|
209
|
+
event_emitter_proxy.once(event, callback)
|
|
195
210
|
end
|
|
196
211
|
|
|
197
212
|
# -- inherited from EventEmitter --
|
|
198
213
|
# @nodoc
|
|
199
214
|
def on(event, callback)
|
|
200
|
-
|
|
215
|
+
event_emitter_proxy.on(event, callback)
|
|
201
216
|
end
|
|
202
217
|
|
|
203
218
|
# -- inherited from EventEmitter --
|
|
204
219
|
# @nodoc
|
|
205
220
|
def off(event, callback)
|
|
206
|
-
|
|
221
|
+
event_emitter_proxy.off(event, callback)
|
|
207
222
|
end
|
|
208
223
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
def once(event, callback)
|
|
212
|
-
wrap_impl(@impl.once(unwrap_impl(event), unwrap_impl(callback)))
|
|
224
|
+
private def event_emitter_proxy
|
|
225
|
+
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
213
226
|
end
|
|
214
227
|
end
|
|
215
228
|
end
|