playwright-ruby-client 1.28.1 → 1.29.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/accessibility.md +9 -14
  3. data/documentation/docs/api/api_request_context.md +44 -41
  4. data/documentation/docs/api/api_response.md +13 -3
  5. data/documentation/docs/api/browser.md +24 -23
  6. data/documentation/docs/api/browser_context.md +71 -45
  7. data/documentation/docs/api/browser_type.md +21 -14
  8. data/documentation/docs/api/cdp_session.md +3 -5
  9. data/documentation/docs/api/console_message.md +7 -4
  10. data/documentation/docs/api/dialog.md +9 -5
  11. data/documentation/docs/api/download.md +19 -11
  12. data/documentation/docs/api/element_handle.md +125 -116
  13. data/documentation/docs/api/experimental/android.md +4 -5
  14. data/documentation/docs/api/experimental/android_device.md +11 -2
  15. data/documentation/docs/api/experimental/android_input.md +5 -0
  16. data/documentation/docs/api/file_chooser.md +6 -3
  17. data/documentation/docs/api/frame.md +182 -171
  18. data/documentation/docs/api/frame_locator.md +27 -38
  19. data/documentation/docs/api/js_handle.md +16 -10
  20. data/documentation/docs/api/keyboard.md +29 -16
  21. data/documentation/docs/api/locator.md +189 -140
  22. data/documentation/docs/api/mouse.md +9 -4
  23. data/documentation/docs/api/page.md +304 -289
  24. data/documentation/docs/api/playwright.md +8 -5
  25. data/documentation/docs/api/request.md +34 -15
  26. data/documentation/docs/api/response.md +27 -10
  27. data/documentation/docs/api/route.md +44 -12
  28. data/documentation/docs/api/selectors.md +5 -3
  29. data/documentation/docs/api/touchscreen.md +2 -0
  30. data/documentation/docs/api/tracing.md +11 -11
  31. data/documentation/docs/api/web_socket.md +9 -4
  32. data/documentation/docs/api/worker.md +12 -11
  33. data/documentation/docs/include/api_coverage.md +2 -0
  34. data/lib/playwright/channel_owners/api_request_context.rb +37 -2
  35. data/lib/playwright/channel_owners/browser_context.rb +22 -26
  36. data/lib/playwright/channel_owners/page.rb +35 -25
  37. data/lib/playwright/channel_owners/route.rb +28 -8
  38. data/lib/playwright/event_emitter.rb +6 -1
  39. data/lib/playwright/locator_impl.rb +8 -0
  40. data/lib/playwright/select_option_values.rb +2 -0
  41. data/lib/playwright/version.rb +2 -2
  42. data/lib/playwright_api/accessibility.rb +9 -13
  43. data/lib/playwright_api/android.rb +8 -6
  44. data/lib/playwright_api/android_device.rb +32 -7
  45. data/lib/playwright_api/android_input.rb +5 -0
  46. data/lib/playwright_api/android_socket.rb +4 -2
  47. data/lib/playwright_api/android_web_view.rb +5 -2
  48. data/lib/playwright_api/api_request.rb +6 -3
  49. data/lib/playwright_api/api_request_context.rb +46 -36
  50. data/lib/playwright_api/api_response.rb +13 -2
  51. data/lib/playwright_api/browser.rb +24 -16
  52. data/lib/playwright_api/browser_context.rb +76 -39
  53. data/lib/playwright_api/browser_type.rb +23 -13
  54. data/lib/playwright_api/cdp_session.rb +3 -4
  55. data/lib/playwright_api/console_message.rb +7 -2
  56. data/lib/playwright_api/dialog.rb +8 -4
  57. data/lib/playwright_api/download.rb +19 -9
  58. data/lib/playwright_api/element_handle.rb +116 -93
  59. data/lib/playwright_api/file_chooser.rb +6 -1
  60. data/lib/playwright_api/frame.rb +180 -135
  61. data/lib/playwright_api/frame_locator.rb +29 -32
  62. data/lib/playwright_api/js_handle.rb +16 -6
  63. data/lib/playwright_api/keyboard.rb +29 -14
  64. data/lib/playwright_api/locator.rb +183 -112
  65. data/lib/playwright_api/mouse.rb +9 -2
  66. data/lib/playwright_api/page.rb +301 -253
  67. data/lib/playwright_api/playwright.rb +11 -4
  68. data/lib/playwright_api/request.rb +34 -7
  69. data/lib/playwright_api/response.rb +27 -10
  70. data/lib/playwright_api/route.rb +44 -11
  71. data/lib/playwright_api/selectors.rb +6 -1
  72. data/lib/playwright_api/touchscreen.rb +2 -0
  73. data/lib/playwright_api/tracing.rb +11 -5
  74. data/lib/playwright_api/web_socket.rb +9 -4
  75. data/lib/playwright_api/worker.rb +16 -13
  76. data/playwright.gemspec +1 -1
  77. metadata +7 -7
@@ -20,6 +20,7 @@ module Playwright
20
20
  # ```
21
21
  class BrowserContext < PlaywrightApi
22
22
 
23
+ #
23
24
  # API testing helper associated with this context. Requests made with this API will use context cookies.
24
25
  def request # property
25
26
  wrap_impl(@impl.request)
@@ -29,9 +30,12 @@ module Playwright
29
30
  wrap_impl(@impl.tracing)
30
31
  end
31
32
 
33
+ #
32
34
  # Adds cookies into this browser context. All pages within this context will have these cookies installed. Cookies can be
33
35
  # obtained via [`method: BrowserContext.cookies`].
34
36
  #
37
+ # **Usage**
38
+ #
35
39
  # ```python sync
36
40
  # browser_context.add_cookies([cookie_object1, cookie_object2])
37
41
  # ```
@@ -39,14 +43,16 @@ module Playwright
39
43
  wrap_impl(@impl.add_cookies(unwrap_impl(cookies)))
40
44
  end
41
45
 
46
+ #
42
47
  # Adds a script which would be evaluated in one of the following scenarios:
43
48
  # - Whenever a page is created in the browser context or is navigated.
44
- # - Whenever a child frame is attached or navigated in any page in the browser context. In this case, the script is
45
- # evaluated in the context of the newly attached frame.
49
+ # - Whenever a child frame is attached or navigated in any page in the browser context. In this case, the script is evaluated in the context of the newly attached frame.
46
50
  #
47
51
  # The script is evaluated after the document was created but before any of its scripts were run. This is useful to amend
48
52
  # the JavaScript environment, e.g. to seed `Math.random`.
49
53
  #
54
+ # **Usage**
55
+ #
50
56
  # An example of overriding `Math.random` before the page loads:
51
57
  #
52
58
  # ```python sync
@@ -54,31 +60,37 @@ module Playwright
54
60
  # browser_context.add_init_script(path="preload.js")
55
61
  # ```
56
62
  #
57
- # > NOTE: The order of evaluation of multiple scripts installed via [`method: BrowserContext.addInitScript`] and
63
+ # **NOTE**: The order of evaluation of multiple scripts installed via [`method: BrowserContext.addInitScript`] and
58
64
  # [`method: Page.addInitScript`] is not defined.
59
65
  def add_init_script(path: nil, script: nil)
60
66
  wrap_impl(@impl.add_init_script(path: unwrap_impl(path), script: unwrap_impl(script)))
61
67
  end
62
68
 
63
- # > NOTE: Background pages are only supported on Chromium-based browsers.
69
+ #
70
+ # **NOTE**: Background pages are only supported on Chromium-based browsers.
64
71
  #
65
72
  # All existing background pages in the context.
66
73
  def background_pages
67
74
  wrap_impl(@impl.background_pages)
68
75
  end
69
76
 
77
+ #
70
78
  # Returns the browser instance of the context. If it was launched as a persistent context null gets returned.
71
79
  def browser
72
80
  wrap_impl(@impl.browser)
73
81
  end
74
82
 
83
+ #
75
84
  # Clears context cookies.
76
85
  def clear_cookies
77
86
  wrap_impl(@impl.clear_cookies)
78
87
  end
79
88
 
89
+ #
80
90
  # Clears all permission overrides for the browser context.
81
91
  #
92
+ # **Usage**
93
+ #
82
94
  # ```python sync
83
95
  # context = browser.new_context()
84
96
  # context.grant_permissions(["clipboard-read"])
@@ -89,28 +101,33 @@ module Playwright
89
101
  wrap_impl(@impl.clear_permissions)
90
102
  end
91
103
 
104
+ #
92
105
  # Closes the browser context. All the pages that belong to the browser context will be closed.
93
106
  #
94
- # > NOTE: The default browser context cannot be closed.
107
+ # **NOTE**: The default browser context cannot be closed.
95
108
  def close
96
109
  wrap_impl(@impl.close)
97
110
  end
98
111
 
112
+ #
99
113
  # If no URLs are specified, this method returns all cookies. If URLs are specified, only cookies that affect those URLs
100
114
  # are returned.
101
115
  def cookies(urls: nil)
102
116
  wrap_impl(@impl.cookies(urls: unwrap_impl(urls)))
103
117
  end
104
118
 
105
- # The method adds a function called `name` on the `window` object of every frame in every page in the context. When
106
- # called, the function executes `callback` and returns a [Promise] which resolves to the return value of `callback`. If
107
- # the `callback` returns a [Promise], it will be awaited.
108
119
  #
109
- # The first argument of the `callback` function contains information about the caller: `{ browserContext: BrowserContext,
110
- # page: Page, frame: Frame }`.
120
+ # The method adds a function called `name` on the `window` object of every frame in every page in the context.
121
+ # When called, the function executes `callback` and returns a [Promise] which resolves to the return value of
122
+ # `callback`. If the `callback` returns a [Promise], it will be awaited.
123
+ #
124
+ # The first argument of the `callback` function contains information about the caller: `{ browserContext:
125
+ # BrowserContext, page: Page, frame: Frame }`.
111
126
  #
112
127
  # See [`method: Page.exposeBinding`] for page-only version.
113
128
  #
129
+ # **Usage**
130
+ #
114
131
  # An example of exposing page URL to all frames in all pages in the context:
115
132
  #
116
133
  # ```python sync
@@ -156,13 +173,17 @@ module Playwright
156
173
  wrap_impl(@impl.expose_binding(unwrap_impl(name), unwrap_impl(callback), handle: unwrap_impl(handle)))
157
174
  end
158
175
 
159
- # The method adds a function called `name` on the `window` object of every frame in every page in the context. When
160
- # called, the function executes `callback` and returns a [Promise] which resolves to the return value of `callback`.
176
+ #
177
+ # The method adds a function called `name` on the `window` object of every frame in every page in the context.
178
+ # When called, the function executes `callback` and returns a [Promise] which resolves to the return value of
179
+ # `callback`.
161
180
  #
162
181
  # If the `callback` returns a [Promise], it will be awaited.
163
182
  #
164
183
  # See [`method: Page.exposeFunction`] for page-only version.
165
184
  #
185
+ # **Usage**
186
+ #
166
187
  # An example of adding a `sha256` function to all pages in the context:
167
188
  #
168
189
  # ```python sync
@@ -199,35 +220,40 @@ module Playwright
199
220
  wrap_impl(@impl.expose_function(unwrap_impl(name), unwrap_impl(callback)))
200
221
  end
201
222
 
223
+ #
202
224
  # Grants specified permissions to the browser context. Only grants corresponding permissions to the given origin if
203
225
  # specified.
204
226
  def grant_permissions(permissions, origin: nil)
205
227
  wrap_impl(@impl.grant_permissions(unwrap_impl(permissions), origin: unwrap_impl(origin)))
206
228
  end
207
229
 
208
- # > NOTE: CDP sessions are only supported on Chromium-based browsers.
230
+ #
231
+ # **NOTE**: CDP sessions are only supported on Chromium-based browsers.
209
232
  #
210
233
  # Returns the newly created session.
211
234
  def new_cdp_session(page)
212
235
  wrap_impl(@impl.new_cdp_session(unwrap_impl(page)))
213
236
  end
214
237
 
238
+ #
215
239
  # Creates a new page in the browser context.
216
240
  def new_page(&block)
217
241
  wrap_impl(@impl.new_page(&wrap_block_call(block)))
218
242
  end
219
243
 
244
+ #
220
245
  # Returns all open pages in the context.
221
246
  def pages
222
247
  wrap_impl(@impl.pages)
223
248
  end
224
249
 
250
+ #
225
251
  # Routing provides the capability to modify network requests that are made by any page in the browser context. Once route
226
252
  # is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
227
253
  #
228
- # > NOTE: [`method: BrowserContext.route`] will not intercept requests intercepted by Service Worker. See
229
- # [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
230
- # request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
254
+ # **NOTE**: [`method: BrowserContext.route`] will not intercept requests intercepted by Service Worker. See [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
255
+ #
256
+ # **Usage**
231
257
  #
232
258
  # An example of a naive handler that aborts all image requests:
233
259
  #
@@ -251,8 +277,7 @@ module Playwright
251
277
  # browser.close()
252
278
  # ```
253
279
  #
254
- # It is possible to examine the request to decide the route action. For example, mocking all requests that contain some
255
- # post data, and leaving all other requests as is:
280
+ # It is possible to examine the request to decide the route action. For example, mocking all requests that contain some post data, and leaving all other requests as is:
256
281
  #
257
282
  # ```python sync
258
283
  # def handle_route(route):
@@ -268,28 +293,28 @@ module Playwright
268
293
  #
269
294
  # To remove a route with its handler you can use [`method: BrowserContext.unroute`].
270
295
  #
271
- # > NOTE: Enabling routing disables http cache.
296
+ # **NOTE**: Enabling routing disables http cache.
272
297
  def route(url, handler, times: nil)
273
298
  wrap_impl(@impl.route(unwrap_impl(url), unwrap_impl(handler), times: unwrap_impl(times)))
274
299
  end
275
300
 
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
301
  #
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'`.
302
+ # If specified the network requests that are made in the context will be served from the HAR file. Read more about [Replaying from HAR](../network.md#replaying-from-har).
303
+ #
304
+ # Playwright will not serve requests intercepted by Service Worker from the HAR file. See [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
282
305
  def route_from_har(har, notFound: nil, update: nil, url: nil)
283
306
  wrap_impl(@impl.route_from_har(unwrap_impl(har), notFound: unwrap_impl(notFound), update: unwrap_impl(update), url: unwrap_impl(url)))
284
307
  end
285
308
 
286
- # > NOTE: Service workers are only supported on Chromium-based browsers.
309
+ #
310
+ # **NOTE**: Service workers are only supported on Chromium-based browsers.
287
311
  #
288
312
  # All existing service workers in the context.
289
313
  def service_workers
290
314
  wrap_impl(@impl.service_workers)
291
315
  end
292
316
 
317
+ #
293
318
  # This setting will change the default maximum navigation time for the following methods and related shortcuts:
294
319
  # - [`method: Page.goBack`]
295
320
  # - [`method: Page.goForward`]
@@ -298,40 +323,45 @@ module Playwright
298
323
  # - [`method: Page.setContent`]
299
324
  # - [`method: Page.waitForNavigation`]
300
325
  #
301
- # > NOTE: [`method: Page.setDefaultNavigationTimeout`] and [`method: Page.setDefaultTimeout`] take priority over
326
+ # **NOTE**: [`method: Page.setDefaultNavigationTimeout`] and [`method: Page.setDefaultTimeout`] take priority over
302
327
  # [`method: BrowserContext.setDefaultNavigationTimeout`].
303
328
  def set_default_navigation_timeout(timeout)
304
329
  wrap_impl(@impl.set_default_navigation_timeout(unwrap_impl(timeout)))
305
330
  end
306
331
  alias_method :default_navigation_timeout=, :set_default_navigation_timeout
307
332
 
333
+ #
308
334
  # This setting will change the default maximum time for all the methods accepting `timeout` option.
309
335
  #
310
- # > NOTE: [`method: Page.setDefaultNavigationTimeout`], [`method: Page.setDefaultTimeout`] and
336
+ # **NOTE**: [`method: Page.setDefaultNavigationTimeout`], [`method: Page.setDefaultTimeout`] and
311
337
  # [`method: BrowserContext.setDefaultNavigationTimeout`] take priority over [`method: BrowserContext.setDefaultTimeout`].
312
338
  def set_default_timeout(timeout)
313
339
  wrap_impl(@impl.set_default_timeout(unwrap_impl(timeout)))
314
340
  end
315
341
  alias_method :default_timeout=, :set_default_timeout
316
342
 
343
+ #
317
344
  # The extra HTTP headers will be sent with every request initiated by any page in the context. These headers are merged
318
345
  # with page-specific extra HTTP headers set with [`method: Page.setExtraHTTPHeaders`]. If page overrides a particular
319
346
  # header, page-specific header value will be used instead of the browser context header value.
320
347
  #
321
- # > NOTE: [`method: BrowserContext.setExtraHTTPHeaders`] does not guarantee the order of headers in the outgoing requests.
348
+ # **NOTE**: [`method: BrowserContext.setExtraHTTPHeaders`] does not guarantee the order of headers in the outgoing requests.
322
349
  def set_extra_http_headers(headers)
323
350
  wrap_impl(@impl.set_extra_http_headers(unwrap_impl(headers)))
324
351
  end
325
352
  alias_method :extra_http_headers=, :set_extra_http_headers
326
353
 
354
+ #
327
355
  # Sets the context's geolocation. Passing `null` or `undefined` emulates position unavailable.
328
356
  #
357
+ # **Usage**
358
+ #
329
359
  # ```python sync
330
360
  # browser_context.set_geolocation({"latitude": 59.95, "longitude": 30.31667})
331
361
  # ```
332
362
  #
333
- # > NOTE: Consider using [`method: BrowserContext.grantPermissions`] to grant permissions for the browser context pages to
334
- # read its geolocation.
363
+ # **NOTE**: Consider using [`method: BrowserContext.grantPermissions`] to grant permissions for the browser context pages to read
364
+ # its geolocation.
335
365
  def set_geolocation(geolocation)
336
366
  wrap_impl(@impl.set_geolocation(unwrap_impl(geolocation)))
337
367
  end
@@ -342,20 +372,25 @@ module Playwright
342
372
  end
343
373
  alias_method :offline=, :set_offline
344
374
 
375
+ #
345
376
  # Returns storage state for this browser context, contains current cookies and local storage snapshot.
346
377
  def storage_state(path: nil)
347
378
  wrap_impl(@impl.storage_state(path: unwrap_impl(path)))
348
379
  end
349
380
 
350
- # Removes a route created with [`method: BrowserContext.route`]. When `handler` is not specified, removes all routes for
351
- # the `url`.
381
+ #
382
+ # Removes a route created with [`method: BrowserContext.route`]. When `handler` is not specified, removes all
383
+ # routes for the `url`.
352
384
  def unroute(url, handler: nil)
353
385
  wrap_impl(@impl.unroute(unwrap_impl(url), handler: unwrap_impl(handler)))
354
386
  end
355
387
 
388
+ #
356
389
  # Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy
357
390
  # value. Will throw an error if the context closes before the event is fired. Returns the event data value.
358
391
  #
392
+ # **Usage**
393
+ #
359
394
  # ```python sync
360
395
  # with context.expect_event("page") as event_info:
361
396
  # page.get_by_role("button").click()
@@ -365,18 +400,20 @@ module Playwright
365
400
  wrap_impl(@impl.expect_event(unwrap_impl(event), predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
366
401
  end
367
402
 
368
- # Performs action and waits for a new `Page` to be created in the context. If predicate is provided, it passes `Page`
369
- # value into the `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if
370
- # the context closes before new `Page` is created.
403
+ #
404
+ # Performs action and waits for a new `Page` to be created in the context. If predicate is provided, it passes
405
+ # `Page` value into the `predicate` function and waits for `predicate(event)` to return a truthy value.
406
+ # Will throw an error if the context closes before new `Page` is created.
371
407
  def expect_page(predicate: nil, timeout: nil)
372
408
  wrap_impl(@impl.expect_page(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout)))
373
409
  end
374
410
 
375
- # > NOTE: In most cases, you should use [`method: BrowserContext.waitForEvent`].
376
411
  #
377
- # Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function and
378
- # waits for `predicate(event)` to return a truthy value. Will throw an error if the browser context is closed before the
379
- # `event` is fired.
412
+ # **NOTE**: In most cases, you should use [`method: BrowserContext.waitForEvent`].
413
+ #
414
+ # Waits for given `event` to fire. If predicate is provided, it passes
415
+ # event's value into the `predicate` function and waits for `predicate(event)` to return a truthy value.
416
+ # Will throw an error if the browser context is closed before the `event` is fired.
380
417
  def wait_for_event(event, predicate: nil, timeout: nil)
381
418
  raise NotImplementedError.new('wait_for_event is not implemented yet.')
382
419
  end
@@ -1,4 +1,5 @@
1
1
  module Playwright
2
+ #
2
3
  # BrowserType provides methods to launch a specific browser instance or connect to an existing one. The following is a
3
4
  # typical example of using Playwright to drive automation:
4
5
  #
@@ -18,18 +19,20 @@ module Playwright
18
19
  # ```
19
20
  class BrowserType < PlaywrightApi
20
21
 
21
- # This method attaches Playwright to an existing browser instance. When connecting to another browser launched via
22
- # `BrowserType.launchServer` in Node.js, the major and minor version needs to match the client version (1.2.3 → is
23
- # compatible with 1.2.x).
22
+ #
23
+ # This method attaches Playwright to an existing browser instance. When connecting to another browser launched via `BrowserType.launchServer` in Node.js, the major and minor version needs to match the client version (1.2.3 → is compatible with 1.2.x).
24
24
  def connect(wsEndpoint, headers: nil, slowMo: nil, timeout: nil)
25
25
  raise NotImplementedError.new('connect is not implemented yet.')
26
26
  end
27
27
 
28
+ #
28
29
  # This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
29
30
  #
30
31
  # The default browser context is accessible via [`method: Browser.contexts`].
31
32
  #
32
- # > NOTE: Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
33
+ # **NOTE**: Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
34
+ #
35
+ # **Usage**
33
36
  #
34
37
  # ```python sync
35
38
  # browser = playwright.chromium.connect_over_cdp("http://localhost:9222")
@@ -45,13 +48,17 @@ module Playwright
45
48
  wrap_impl(@impl.connect_over_cdp(unwrap_impl(endpointURL), headers: unwrap_impl(headers), slowMo: unwrap_impl(slowMo), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
46
49
  end
47
50
 
51
+ #
48
52
  # A path where Playwright expects to find a bundled browser executable.
49
53
  def executable_path
50
54
  wrap_impl(@impl.executable_path)
51
55
  end
52
56
 
57
+ #
53
58
  # Returns the browser instance.
54
59
  #
60
+ # **Usage**
61
+ #
55
62
  # You can use `ignoreDefaultArgs` to filter out `--mute-audio` from default arguments:
56
63
  #
57
64
  # ```python sync
@@ -60,18 +67,19 @@ module Playwright
60
67
  # )
61
68
  # ```
62
69
  #
63
- # > **Chromium-only** Playwright can also be used to control the Google Chrome or Microsoft Edge browsers, but it works
64
- # best with the version of Chromium it is bundled with. There is no guarantee it will work with any other version. Use
65
- # `executablePath` option with extreme caution.
70
+ # > **Chromium-only** Playwright can also be used to control the Google Chrome or Microsoft Edge browsers, but it works best with the version of
71
+ # Chromium it is bundled with. There is no guarantee it will work with any other version. Use `executablePath`
72
+ # option with extreme caution.
73
+ #
66
74
  # >
75
+ #
67
76
  # > If Google Chrome (rather than Chromium) is preferred, a
68
77
  # [Chrome Canary](https://www.google.com/chrome/browser/canary.html) or
69
78
  # [Dev Channel](https://www.chromium.org/getting-involved/dev-channel) build is suggested.
79
+ #
70
80
  # >
71
- # > Stock browsers like Google Chrome and Microsoft Edge are suitable for tests that require proprietary media codecs for
72
- # video playback. See
73
- # [this article](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for other
74
- # differences between Chromium and Chrome.
81
+ #
82
+ # > Stock browsers like Google Chrome and Microsoft Edge are suitable for tests that require proprietary media codecs for video playback. See [this article](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for other differences between Chromium and Chrome.
75
83
  # [This article](https://chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md)
76
84
  # describes some differences for Linux users.
77
85
  def launch(
@@ -96,10 +104,11 @@ module Playwright
96
104
  wrap_impl(@impl.launch(args: unwrap_impl(args), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), firefoxUserPrefs: unwrap_impl(firefoxUserPrefs), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), headless: unwrap_impl(headless), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), proxy: unwrap_impl(proxy), slowMo: unwrap_impl(slowMo), timeout: unwrap_impl(timeout), tracesDir: unwrap_impl(tracesDir), &wrap_block_call(block)))
97
105
  end
98
106
 
107
+ #
99
108
  # Returns the persistent browser context instance.
100
109
  #
101
- # Launches browser that uses persistent storage located at `userDataDir` and returns the only context. Closing this
102
- # context will automatically close the browser.
110
+ # Launches browser that uses persistent storage located at `userDataDir` and returns the only context. Closing
111
+ # this context will automatically close the browser.
103
112
  def launch_persistent_context(
104
113
  userDataDir,
105
114
  acceptDownloads: nil,
@@ -153,6 +162,7 @@ module Playwright
153
162
  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)))
154
163
  end
155
164
 
165
+ #
156
166
  # Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
157
167
  def name
158
168
  wrap_impl(@impl.name)
@@ -6,10 +6,8 @@ module Playwright
6
6
  # - protocol events can be subscribed to with `session.on` method.
7
7
  #
8
8
  # Useful links:
9
- # - Documentation on DevTools Protocol can be found here:
10
- # [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/).
11
- # - Getting Started with DevTools Protocol:
12
- # https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
9
+ # - Documentation on DevTools Protocol can be found here: [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/).
10
+ # - Getting Started with DevTools Protocol: https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
13
11
  #
14
12
  # ```python sync
15
13
  # client = page.context.new_cdp_session(page)
@@ -23,6 +21,7 @@ module Playwright
23
21
  # ```
24
22
  class CDPSession < PlaywrightApi
25
23
 
24
+ #
26
25
  # Detaches the CDPSession from the target. Once detached, the CDPSession object won't emit any events and can't be used to
27
26
  # send messages.
28
27
  def detach
@@ -1,6 +1,8 @@
1
1
  module Playwright
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.
2
+ #
3
+ # `ConsoleMessage` objects are dispatched by page via the [`event: Page.console`] event.
4
+ # For each console messages logged in the page there will be corresponding event in the Playwright
5
+ # context.
4
6
  #
5
7
  # ```python sync
6
8
  # # Listen for all console logs
@@ -21,6 +23,7 @@ module Playwright
21
23
  # ```
22
24
  class ConsoleMessage < PlaywrightApi
23
25
 
26
+ #
24
27
  # List of arguments passed to a `console` function call. See also [`event: Page.console`].
25
28
  def args
26
29
  wrap_impl(@impl.args)
@@ -30,11 +33,13 @@ module Playwright
30
33
  wrap_impl(@impl.location)
31
34
  end
32
35
 
36
+ #
33
37
  # The text of the console message.
34
38
  def text
35
39
  wrap_impl(@impl.text)
36
40
  end
37
41
 
42
+ #
38
43
  # One of the following values: `'log'`, `'debug'`, `'info'`, `'error'`, `'warning'`, `'dir'`, `'dirxml'`, `'table'`,
39
44
  # `'trace'`, `'clear'`, `'startGroup'`, `'startGroupCollapsed'`, `'endGroup'`, `'assert'`, `'profile'`, `'profileEnd'`,
40
45
  # `'count'`, `'timeEnd'`.
@@ -1,4 +1,5 @@
1
1
  module Playwright
2
+ #
2
3
  # `Dialog` objects are dispatched by page via the [`event: Page.dialog`] event.
3
4
  #
4
5
  # An example of using `Dialog` class:
@@ -22,32 +23,35 @@ module Playwright
22
23
  # run(playwright)
23
24
  # ```
24
25
  #
25
- # > NOTE: Dialogs are dismissed automatically, unless there is a [`event: Page.dialog`] listener. When listener is
26
- # present, it **must** either [`method: Dialog.accept`] or [`method: Dialog.dismiss`] the dialog - otherwise the page will
27
- # [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
28
- # actions like click will never finish.
26
+ # **NOTE**: Dialogs are dismissed automatically, unless there is a [`event: Page.dialog`] listener.
27
+ # When listener is present, it **must** either [`method: Dialog.accept`] or [`method: Dialog.dismiss`] the dialog - otherwise the page will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and actions like click will never finish.
29
28
  class Dialog < PlaywrightApi
30
29
 
30
+ #
31
31
  # Returns when the dialog has been accepted.
32
32
  def accept(promptText: nil)
33
33
  wrap_impl(@impl.accept(promptText: unwrap_impl(promptText)))
34
34
  end
35
35
 
36
+ #
36
37
  # If dialog is prompt, returns default prompt value. Otherwise, returns empty string.
37
38
  def default_value
38
39
  wrap_impl(@impl.default_value)
39
40
  end
40
41
 
42
+ #
41
43
  # Returns when the dialog has been dismissed.
42
44
  def dismiss
43
45
  wrap_impl(@impl.dismiss)
44
46
  end
45
47
 
48
+ #
46
49
  # A message displayed in the dialog.
47
50
  def message
48
51
  wrap_impl(@impl.message)
49
52
  end
50
53
 
54
+ #
51
55
  # Returns dialog's type, can be one of `alert`, `beforeunload`, `confirm` or `prompt`.
52
56
  def type
53
57
  wrap_impl(@impl.type)
@@ -1,7 +1,9 @@
1
1
  module Playwright
2
+ #
2
3
  # `Download` objects are dispatched by page via the [`event: Page.download`] event.
3
4
  #
4
- # All the downloaded files belonging to the browser context are deleted when the browser context is closed.
5
+ # All the downloaded files belonging to the browser context are deleted when the
6
+ # browser context is closed.
5
7
  #
6
8
  # Download event is emitted once the download starts. Download path becomes available once download completes:
7
9
  #
@@ -14,42 +16,49 @@ module Playwright
14
16
  # ```
15
17
  class Download < PlaywrightApi
16
18
 
17
- # Cancels a download. Will not fail if the download is already finished or canceled. Upon successful cancellations,
18
- # `download.failure()` would resolve to `'canceled'`.
19
+ #
20
+ # Cancels a download. Will not fail if the download is already finished or canceled.
21
+ # Upon successful cancellations, `download.failure()` would resolve to `'canceled'`.
19
22
  def cancel
20
23
  wrap_impl(@impl.cancel)
21
24
  end
22
25
 
26
+ #
23
27
  # Deletes the downloaded file. Will wait for the download to finish if necessary.
24
28
  def delete
25
29
  wrap_impl(@impl.delete)
26
30
  end
27
31
 
32
+ #
28
33
  # Returns download error if any. Will wait for the download to finish if necessary.
29
34
  def failure
30
35
  wrap_impl(@impl.failure)
31
36
  end
32
37
 
38
+ #
33
39
  # Get the page that the download belongs to.
34
40
  def page
35
41
  wrap_impl(@impl.page)
36
42
  end
37
43
 
38
- # Returns path to the downloaded file in case of successful download. The method will wait for the download to finish if
39
- # necessary. The method throws when connected remotely.
40
44
  #
41
- # Note that the download's file name is a random GUID, use [`method: Download.suggestedFilename`] to get suggested file
42
- # name.
45
+ # Returns path to the downloaded file in case of successful download. The method will
46
+ # wait for the download to finish if necessary. The method throws when connected remotely.
47
+ #
48
+ # Note that the download's file name is a random GUID, use [`method: Download.suggestedFilename`]
49
+ # to get suggested file name.
43
50
  def path
44
51
  wrap_impl(@impl.path)
45
52
  end
46
53
 
47
- # Copy the download to a user-specified path. It is safe to call this method while the download is still in progress. Will
48
- # wait for the download to finish if necessary.
54
+ #
55
+ # Copy the download to a user-specified path. It is safe to call this method while the download
56
+ # is still in progress. Will wait for the download to finish if necessary.
49
57
  def save_as(path)
50
58
  wrap_impl(@impl.save_as(unwrap_impl(path)))
51
59
  end
52
60
 
61
+ #
53
62
  # Returns suggested filename for this download. It is typically computed by the browser from the
54
63
  # [`Content-Disposition`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) response header
55
64
  # or the `download` attribute. See the spec on [whatwg](https://html.spec.whatwg.org/#downloading-resources). Different
@@ -58,6 +67,7 @@ module Playwright
58
67
  wrap_impl(@impl.suggested_filename)
59
68
  end
60
69
 
70
+ #
61
71
  # Returns downloaded url.
62
72
  def url
63
73
  wrap_impl(@impl.url)