playwright-ruby-client 1.20.2 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/api_request_context.md +15 -2
  3. data/documentation/docs/api/browser_type.md +1 -1
  4. data/documentation/docs/api/console_message.md +27 -1
  5. data/documentation/docs/api/element_handle.md +4 -2
  6. data/documentation/docs/api/experimental/android.md +1 -1
  7. data/documentation/docs/api/frame_locator.md +1 -1
  8. data/documentation/docs/api/locator.md +3 -1
  9. data/documentation/docs/api/page.md +4 -1
  10. data/documentation/package.json +6 -6
  11. data/documentation/yarn.lock +2931 -3220
  12. data/lib/playwright/channel_owners/browser_context.rb +8 -0
  13. data/lib/playwright/channel_owners/element_handle.rb +12 -3
  14. data/lib/playwright/channel_owners/frame.rb +4 -5
  15. data/lib/playwright/channel_owners/page.rb +11 -7
  16. data/lib/playwright/channel_owners/writable_stream.rb +14 -0
  17. data/lib/playwright/input_files.rb +60 -8
  18. data/lib/playwright/locator_impl.rb +5 -0
  19. data/lib/playwright/transport.rb +12 -2
  20. data/lib/playwright/version.rb +2 -2
  21. data/lib/playwright_api/accessibility.rb +2 -1
  22. data/lib/playwright_api/android.rb +8 -8
  23. data/lib/playwright_api/android_device.rb +6 -6
  24. data/lib/playwright_api/api_request.rb +3 -3
  25. data/lib/playwright_api/api_request_context.rb +21 -8
  26. data/lib/playwright_api/browser.rb +6 -6
  27. data/lib/playwright_api/browser_context.rb +11 -11
  28. data/lib/playwright_api/browser_type.rb +8 -8
  29. data/lib/playwright_api/cdp_session.rb +6 -6
  30. data/lib/playwright_api/console_message.rb +26 -7
  31. data/lib/playwright_api/dialog.rb +6 -6
  32. data/lib/playwright_api/element_handle.rb +40 -38
  33. data/lib/playwright_api/frame.rb +24 -24
  34. data/lib/playwright_api/frame_locator.rb +1 -1
  35. data/lib/playwright_api/js_handle.rb +6 -6
  36. data/lib/playwright_api/locator.rb +22 -20
  37. data/lib/playwright_api/page.rb +31 -28
  38. data/lib/playwright_api/playwright.rb +9 -9
  39. data/lib/playwright_api/request.rb +6 -6
  40. data/lib/playwright_api/response.rb +6 -6
  41. data/lib/playwright_api/route.rb +6 -6
  42. data/lib/playwright_api/selectors.rb +7 -7
  43. data/lib/playwright_api/tracing.rb +7 -7
  44. data/lib/playwright_api/web_socket.rb +6 -6
  45. data/lib/playwright_api/worker.rb +8 -8
  46. metadata +4 -3
@@ -66,7 +66,7 @@ module Playwright
66
66
  # This method checks the element by performing the following steps:
67
67
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already checked,
68
68
  # this method returns immediately.
69
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
69
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
70
70
  # 1. Scroll the element into view if needed.
71
71
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
72
72
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -86,7 +86,7 @@ module Playwright
86
86
  end
87
87
 
88
88
  # This method clicks the element by performing the following steps:
89
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
89
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
90
90
  # 1. Scroll the element into view if needed.
91
91
  # 1. Use [`property: Page.mouse`] to click in the center of the element, or the specified `position`.
92
92
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -114,7 +114,7 @@ module Playwright
114
114
  end
115
115
 
116
116
  # This method double clicks the element by performing the following steps:
117
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
117
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
118
118
  # 1. Scroll the element into view if needed.
119
119
  # 1. Use [`property: Page.mouse`] to double click in the center of the element, or the specified `position`.
120
120
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set. Note that if the
@@ -172,7 +172,7 @@ module Playwright
172
172
  # Returns the return value of `expression`.
173
173
  #
174
174
  # The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a first
175
- # argument to `expression`. See [Working with selectors](./selectors.md) for more details. If no elements match the
175
+ # argument to `expression`. See [Working with selectors](../selectors.md) for more details. If no elements match the
176
176
  # selector, the method throws an error.
177
177
  #
178
178
  # If `expression` returns a [Promise], then [`method: ElementHandle.evalOnSelector`] would wait for the promise to resolve
@@ -192,7 +192,7 @@ module Playwright
192
192
  # Returns the return value of `expression`.
193
193
  #
194
194
  # The method finds all elements matching the specified selector in the `ElementHandle`'s subtree and passes an array of
195
- # matched elements as a first argument to `expression`. See [Working with selectors](./selectors.md) for more details.
195
+ # matched elements as a first argument to `expression`. See [Working with selectors](../selectors.md) for more details.
196
196
  #
197
197
  # If `expression` returns a [Promise], then [`method: ElementHandle.evalOnSelectorAll`] would wait for the promise to
198
198
  # resolve and return its value.
@@ -214,7 +214,7 @@ module Playwright
214
214
  wrap_impl(@impl.eval_on_selector_all(unwrap_impl(selector), unwrap_impl(expression), arg: unwrap_impl(arg)))
215
215
  end
216
216
 
217
- # This method waits for [actionability](./actionability.md) checks, focuses the element, fills it and triggers an `input`
217
+ # This method waits for [actionability](../actionability.md) checks, focuses the element, fills it and triggers an `input`
218
218
  # event after filling. Note that you can pass an empty string to clear the input field.
219
219
  #
220
220
  # If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an error.
@@ -239,7 +239,7 @@ module Playwright
239
239
  alias_method :[], :get_attribute
240
240
 
241
241
  # This method hovers over the element by performing the following steps:
242
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
242
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
243
243
  # 1. Scroll the element into view if needed.
244
244
  # 1. Use [`property: Page.mouse`] to hover over the center of the element, or the specified `position`.
245
245
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -277,27 +277,27 @@ module Playwright
277
277
  wrap_impl(@impl.checked?)
278
278
  end
279
279
 
280
- # Returns whether the element is disabled, the opposite of [enabled](./actionability.md#enabled).
280
+ # Returns whether the element is disabled, the opposite of [enabled](../actionability.md#enabled).
281
281
  def disabled?
282
282
  wrap_impl(@impl.disabled?)
283
283
  end
284
284
 
285
- # Returns whether the element is [editable](./actionability.md#editable).
285
+ # Returns whether the element is [editable](../actionability.md#editable).
286
286
  def editable?
287
287
  wrap_impl(@impl.editable?)
288
288
  end
289
289
 
290
- # Returns whether the element is [enabled](./actionability.md#enabled).
290
+ # Returns whether the element is [enabled](../actionability.md#enabled).
291
291
  def enabled?
292
292
  wrap_impl(@impl.enabled?)
293
293
  end
294
294
 
295
- # Returns whether the element is hidden, the opposite of [visible](./actionability.md#visible).
295
+ # Returns whether the element is hidden, the opposite of [visible](../actionability.md#visible).
296
296
  def hidden?
297
297
  wrap_impl(@impl.hidden?)
298
298
  end
299
299
 
300
- # Returns whether the element is [visible](./actionability.md#visible).
300
+ # Returns whether the element is [visible](../actionability.md#visible).
301
301
  def visible?
302
302
  wrap_impl(@impl.visible?)
303
303
  end
@@ -330,33 +330,35 @@ module Playwright
330
330
  end
331
331
 
332
332
  # The method finds an element matching the specified selector in the `ElementHandle`'s subtree. See
333
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns `null`.
333
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns `null`.
334
334
  def query_selector(selector)
335
335
  wrap_impl(@impl.query_selector(unwrap_impl(selector)))
336
336
  end
337
337
 
338
338
  # The method finds all elements matching the specified selector in the `ElementHandle`s subtree. See
339
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns empty array.
339
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns empty array.
340
340
  def query_selector_all(selector)
341
341
  wrap_impl(@impl.query_selector_all(unwrap_impl(selector)))
342
342
  end
343
343
 
344
344
  # Returns the buffer with the captured screenshot.
345
345
  #
346
- # This method waits for the [actionability](./actionability.md) checks, then scrolls element into view before taking a
346
+ # This method waits for the [actionability](../actionability.md) checks, then scrolls element into view before taking a
347
347
  # screenshot. If the element is detached from DOM, the method throws an error.
348
348
  def screenshot(
349
349
  animations: nil,
350
+ caret: nil,
350
351
  mask: nil,
351
352
  omitBackground: nil,
352
353
  path: nil,
353
354
  quality: nil,
355
+ scale: nil,
354
356
  timeout: nil,
355
357
  type: nil)
356
- wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
358
+ wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
357
359
  end
358
360
 
359
- # This method waits for [actionability](./actionability.md) checks, then tries to scroll element into view, unless it is
361
+ # This method waits for [actionability](../actionability.md) checks, then tries to scroll element into view, unless it is
360
362
  # completely visible as defined by
361
363
  # [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
362
364
  #
@@ -366,7 +368,7 @@ module Playwright
366
368
  wrap_impl(@impl.scroll_into_view_if_needed(timeout: unwrap_impl(timeout)))
367
369
  end
368
370
 
369
- # This method waits for [actionability](./actionability.md) checks, waits until all specified options are present in the
371
+ # This method waits for [actionability](../actionability.md) checks, waits until all specified options are present in the
370
372
  # `<select>` element and selects these options.
371
373
  #
372
374
  # If the target element is not a `<select>` element, this method throws an error. However, if the element is inside the
@@ -407,7 +409,7 @@ module Playwright
407
409
  wrap_impl(@impl.select_option(element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
408
410
  end
409
411
 
410
- # This method waits for [actionability](./actionability.md) checks, then focuses the element and selects all its text
412
+ # This method waits for [actionability](../actionability.md) checks, then focuses the element and selects all its text
411
413
  # content.
412
414
  def select_text(force: nil, timeout: nil)
413
415
  wrap_impl(@impl.select_text(force: unwrap_impl(force), timeout: unwrap_impl(timeout)))
@@ -416,7 +418,7 @@ module Playwright
416
418
  # This method checks or unchecks an element by performing the following steps:
417
419
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws.
418
420
  # 1. If the element already has the right checked state, this method returns immediately.
419
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
421
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
420
422
  # element is detached during the checks, the whole action is retried.
421
423
  # 1. Scroll the element into view if needed.
422
424
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -447,7 +449,7 @@ module Playwright
447
449
  alias_method :input_files=, :set_input_files
448
450
 
449
451
  # This method taps the element by performing the following steps:
450
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
452
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
451
453
  # 1. Scroll the element into view if needed.
452
454
  # 1. Use [`property: Page.touchscreen`] to tap the center of the element, or the specified `position`.
453
455
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -496,7 +498,7 @@ module Playwright
496
498
  # This method checks the element by performing the following steps:
497
499
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
498
500
  # unchecked, this method returns immediately.
499
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
501
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
500
502
  # 1. Scroll the element into view if needed.
501
503
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
502
504
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -517,16 +519,16 @@ module Playwright
517
519
 
518
520
  # Returns when the element satisfies the `state`.
519
521
  #
520
- # Depending on the `state` parameter, this method waits for one of the [actionability](./actionability.md) checks to pass.
521
- # This method throws when the element is detached while waiting, unless waiting for the `"hidden"` state.
522
- # - `"visible"` Wait until the element is [visible](./actionability.md#visible).
523
- # - `"hidden"` Wait until the element is [not visible](./actionability.md#visible) or
524
- # [not attached](./actionability.md#attached). Note that waiting for hidden does not throw when the element detaches.
525
- # - `"stable"` Wait until the element is both [visible](./actionability.md#visible) and
526
- # [stable](./actionability.md#stable).
527
- # - `"enabled"` Wait until the element is [enabled](./actionability.md#enabled).
528
- # - `"disabled"` Wait until the element is [not enabled](./actionability.md#enabled).
529
- # - `"editable"` Wait until the element is [editable](./actionability.md#editable).
522
+ # Depending on the `state` parameter, this method waits for one of the [actionability](../actionability.md) checks to
523
+ # pass. This method throws when the element is detached while waiting, unless waiting for the `"hidden"` state.
524
+ # - `"visible"` Wait until the element is [visible](../actionability.md#visible).
525
+ # - `"hidden"` Wait until the element is [not visible](../actionability.md#visible) or
526
+ # [not attached](../actionability.md#attached). Note that waiting for hidden does not throw when the element detaches.
527
+ # - `"stable"` Wait until the element is both [visible](../actionability.md#visible) and
528
+ # [stable](../actionability.md#stable).
529
+ # - `"enabled"` Wait until the element is [enabled](../actionability.md#enabled).
530
+ # - `"disabled"` Wait until the element is [not enabled](../actionability.md#enabled).
531
+ # - `"editable"` Wait until the element is [editable](../actionability.md#editable).
530
532
  #
531
533
  # If the element does not satisfy the condition for the `timeout` milliseconds, this method will throw.
532
534
  def wait_for_element_state(state, timeout: nil)
@@ -553,12 +555,6 @@ module Playwright
553
555
  wrap_impl(@impl.wait_for_selector(unwrap_impl(selector), state: unwrap_impl(state), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
554
556
  end
555
557
 
556
- # -- inherited from EventEmitter --
557
- # @nodoc
558
- def off(event, callback)
559
- event_emitter_proxy.off(event, callback)
560
- end
561
-
562
558
  # -- inherited from EventEmitter --
563
559
  # @nodoc
564
560
  def once(event, callback)
@@ -571,6 +567,12 @@ module Playwright
571
567
  event_emitter_proxy.on(event, callback)
572
568
  end
573
569
 
570
+ # -- inherited from EventEmitter --
571
+ # @nodoc
572
+ def off(event, callback)
573
+ event_emitter_proxy.off(event, callback)
574
+ end
575
+
574
576
  private def event_emitter_proxy
575
577
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
576
578
  end
@@ -51,7 +51,7 @@ module Playwright
51
51
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
52
52
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is already
53
53
  # checked, this method returns immediately.
54
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
54
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
55
55
  # element is detached during the checks, the whole action is retried.
56
56
  # 1. Scroll the element into view if needed.
57
57
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -77,7 +77,7 @@ module Playwright
77
77
 
78
78
  # This method clicks an element matching `selector` by performing the following steps:
79
79
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
80
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
80
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
81
81
  # element is detached during the checks, the whole action is retried.
82
82
  # 1. Scroll the element into view if needed.
83
83
  # 1. Use [`property: Page.mouse`] to click in the center of the element, or the specified `position`.
@@ -107,7 +107,7 @@ module Playwright
107
107
 
108
108
  # This method double clicks an element matching `selector` by performing the following steps:
109
109
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
110
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
110
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
111
111
  # element is detached during the checks, the whole action is retried.
112
112
  # 1. Scroll the element into view if needed.
113
113
  # 1. Use [`property: Page.mouse`] to double click in the center of the element, or the specified `position`.
@@ -187,7 +187,7 @@ module Playwright
187
187
  # tests. Use [`method: Locator.evaluate`], other `Locator` helper methods or web-first assertions instead.
188
188
  #
189
189
  # The method finds an element matching the specified selector within the frame and passes it as a first argument to
190
- # `expression`. See [Working with selectors](./selectors.md) for more details. If no elements match the selector, the
190
+ # `expression`. See [Working with selectors](../selectors.md) for more details. If no elements match the selector, the
191
191
  # method throws an error.
192
192
  #
193
193
  # If `expression` returns a [Promise], then [`method: Frame.evalOnSelector`] would wait for the promise to resolve and
@@ -210,7 +210,7 @@ module Playwright
210
210
  # better job.
211
211
  #
212
212
  # The method finds all elements matching the specified selector within the frame and passes an array of matched elements
213
- # as a first argument to `expression`. See [Working with selectors](./selectors.md) for more details.
213
+ # as a first argument to `expression`. See [Working with selectors](../selectors.md) for more details.
214
214
  #
215
215
  # If `expression` returns a [Promise], then [`method: Frame.evalOnSelectorAll`] would wait for the promise to resolve and
216
216
  # return its value.
@@ -288,7 +288,7 @@ module Playwright
288
288
  wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg)))
289
289
  end
290
290
 
291
- # This method waits for an element matching `selector`, waits for [actionability](./actionability.md) checks, focuses the
291
+ # This method waits for an element matching `selector`, waits for [actionability](../actionability.md) checks, focuses the
292
292
  # element, fills it and triggers an `input` event after filling. Note that you can pass an empty string to clear the input
293
293
  # field.
294
294
  #
@@ -371,7 +371,7 @@ module Playwright
371
371
 
372
372
  # This method hovers over an element matching `selector` by performing the following steps:
373
373
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
374
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
374
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
375
375
  # element is detached during the checks, the whole action is retried.
376
376
  # 1. Scroll the element into view if needed.
377
377
  # 1. Use [`property: Page.mouse`] to hover over the center of the element, or the specified `position`.
@@ -415,28 +415,28 @@ module Playwright
415
415
  wrap_impl(@impl.detached?)
416
416
  end
417
417
 
418
- # Returns whether the element is disabled, the opposite of [enabled](./actionability.md#enabled).
418
+ # Returns whether the element is disabled, the opposite of [enabled](../actionability.md#enabled).
419
419
  def disabled?(selector, strict: nil, timeout: nil)
420
420
  wrap_impl(@impl.disabled?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
421
421
  end
422
422
 
423
- # Returns whether the element is [editable](./actionability.md#editable).
423
+ # Returns whether the element is [editable](../actionability.md#editable).
424
424
  def editable?(selector, strict: nil, timeout: nil)
425
425
  wrap_impl(@impl.editable?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
426
426
  end
427
427
 
428
- # Returns whether the element is [enabled](./actionability.md#enabled).
428
+ # Returns whether the element is [enabled](../actionability.md#enabled).
429
429
  def enabled?(selector, strict: nil, timeout: nil)
430
430
  wrap_impl(@impl.enabled?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
431
431
  end
432
432
 
433
- # Returns whether the element is hidden, the opposite of [visible](./actionability.md#visible). `selector` that does not
433
+ # Returns whether the element is hidden, the opposite of [visible](../actionability.md#visible). `selector` that does not
434
434
  # match any elements is considered hidden.
435
435
  def hidden?(selector, strict: nil, timeout: nil)
436
436
  wrap_impl(@impl.hidden?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
437
437
  end
438
438
 
439
- # Returns whether the element is [visible](./actionability.md#visible). `selector` that does not match any elements is
439
+ # Returns whether the element is [visible](../actionability.md#visible). `selector` that does not match any elements is
440
440
  # considered not visible.
441
441
  def visible?(selector, strict: nil, timeout: nil)
442
442
  wrap_impl(@impl.visible?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
@@ -499,7 +499,7 @@ module Playwright
499
499
  # > NOTE: The use of `ElementHandle` is discouraged, use `Locator` objects and web-first assertions instead.
500
500
  #
501
501
  # The method finds an element matching the specified selector within the frame. See
502
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns `null`.
502
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns `null`.
503
503
  def query_selector(selector, strict: nil)
504
504
  wrap_impl(@impl.query_selector(unwrap_impl(selector), strict: unwrap_impl(strict)))
505
505
  end
@@ -509,12 +509,12 @@ module Playwright
509
509
  # > NOTE: The use of `ElementHandle` is discouraged, use `Locator` objects instead.
510
510
  #
511
511
  # The method finds all elements matching the specified selector within the frame. See
512
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns empty array.
512
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns empty array.
513
513
  def query_selector_all(selector)
514
514
  wrap_impl(@impl.query_selector_all(unwrap_impl(selector)))
515
515
  end
516
516
 
517
- # This method waits for an element matching `selector`, waits for [actionability](./actionability.md) checks, waits until
517
+ # This method waits for an element matching `selector`, waits for [actionability](../actionability.md) checks, waits until
518
518
  # all specified options are present in the `<select>` element and selects these options.
519
519
  #
520
520
  # If the target element is not a `<select>` element, this method throws an error. However, if the element is inside the
@@ -550,7 +550,7 @@ module Playwright
550
550
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
551
551
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.
552
552
  # 1. If the element already has the right checked state, this method returns immediately.
553
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
553
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
554
554
  # element is detached during the checks, the whole action is retried.
555
555
  # 1. Scroll the element into view if needed.
556
556
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -592,7 +592,7 @@ module Playwright
592
592
 
593
593
  # This method taps an element matching `selector` by performing the following steps:
594
594
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
595
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
595
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
596
596
  # element is detached during the checks, the whole action is retried.
597
597
  # 1. Scroll the element into view if needed.
598
598
  # 1. Use [`property: Page.touchscreen`] to tap the center of the element, or the specified `position`.
@@ -647,7 +647,7 @@ module Playwright
647
647
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
648
648
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is already
649
649
  # unchecked, this method returns immediately.
650
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
650
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
651
651
  # element is detached during the checks, the whole action is retried.
652
652
  # 1. Scroll the element into view if needed.
653
653
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -793,12 +793,6 @@ module Playwright
793
793
  wrap_impl(@impl.highlight(unwrap_impl(selector)))
794
794
  end
795
795
 
796
- # -- inherited from EventEmitter --
797
- # @nodoc
798
- def off(event, callback)
799
- event_emitter_proxy.off(event, callback)
800
- end
801
-
802
796
  # -- inherited from EventEmitter --
803
797
  # @nodoc
804
798
  def once(event, callback)
@@ -811,6 +805,12 @@ module Playwright
811
805
  event_emitter_proxy.on(event, callback)
812
806
  end
813
807
 
808
+ # -- inherited from EventEmitter --
809
+ # @nodoc
810
+ def off(event, callback)
811
+ event_emitter_proxy.off(event, callback)
812
+ end
813
+
814
814
  private def event_emitter_proxy
815
815
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
816
816
  end
@@ -52,7 +52,7 @@ module Playwright
52
52
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
53
53
  end
54
54
 
55
- # Returns locator to the n-th matching frame.
55
+ # Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame.
56
56
  def nth(index)
57
57
  wrap_impl(@impl.nth(unwrap_impl(index)))
58
58
  end
@@ -88,12 +88,6 @@ module Playwright
88
88
  wrap_impl(@impl.to_s)
89
89
  end
90
90
 
91
- # -- inherited from EventEmitter --
92
- # @nodoc
93
- def off(event, callback)
94
- event_emitter_proxy.off(event, callback)
95
- end
96
-
97
91
  # -- inherited from EventEmitter --
98
92
  # @nodoc
99
93
  def once(event, callback)
@@ -106,6 +100,12 @@ module Playwright
106
100
  event_emitter_proxy.on(event, callback)
107
101
  end
108
102
 
103
+ # -- inherited from EventEmitter --
104
+ # @nodoc
105
+ def off(event, callback)
106
+ event_emitter_proxy.off(event, callback)
107
+ end
108
+
109
109
  private def event_emitter_proxy
110
110
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
111
111
  end
@@ -2,7 +2,7 @@ module Playwright
2
2
  # Locators are the central piece of Playwright's auto-waiting and retry-ability. In a nutshell, locators represent a way
3
3
  # to find element(s) on the page at any moment. Locator can be created with the [`method: Page.locator`] method.
4
4
  #
5
- # [Learn more about locators](./locators.md).
5
+ # [Learn more about locators](../locators.md).
6
6
  class Locator < PlaywrightApi
7
7
 
8
8
  # Returns an array of `node.innerText` values for all matching nodes.
@@ -39,7 +39,7 @@ module Playwright
39
39
  # This method checks the element by performing the following steps:
40
40
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already checked,
41
41
  # this method returns immediately.
42
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
42
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
43
43
  # 1. Scroll the element into view if needed.
44
44
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
45
45
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -59,7 +59,7 @@ module Playwright
59
59
  end
60
60
 
61
61
  # This method clicks the element by performing the following steps:
62
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
62
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
63
63
  # 1. Scroll the element into view if needed.
64
64
  # 1. Use [`property: Page.mouse`] to click in the center of the element, or the specified `position`.
65
65
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -87,7 +87,7 @@ module Playwright
87
87
  end
88
88
 
89
89
  # This method double clicks the element by performing the following steps:
90
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
90
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
91
91
  # 1. Scroll the element into view if needed.
92
92
  # 1. Use [`property: Page.mouse`] to double click in the center of the element, or the specified `position`.
93
93
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set. Note that if the
@@ -211,7 +211,7 @@ module Playwright
211
211
  wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg), timeout: unwrap_impl(timeout)))
212
212
  end
213
213
 
214
- # This method waits for [actionability](./actionability.md) checks, focuses the element, fills it and triggers an `input`
214
+ # This method waits for [actionability](../actionability.md) checks, focuses the element, fills it and triggers an `input`
215
215
  # event after filling. Note that you can pass an empty string to clear the input field.
216
216
  #
217
217
  # If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an error.
@@ -257,7 +257,7 @@ module Playwright
257
257
  end
258
258
 
259
259
  # This method hovers over the element by performing the following steps:
260
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
260
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
261
261
  # 1. Scroll the element into view if needed.
262
262
  # 1. Use [`property: Page.mouse`] to hover over the center of the element, or the specified `position`.
263
263
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -295,27 +295,27 @@ module Playwright
295
295
  wrap_impl(@impl.checked?(timeout: unwrap_impl(timeout)))
296
296
  end
297
297
 
298
- # Returns whether the element is disabled, the opposite of [enabled](./actionability.md#enabled).
298
+ # Returns whether the element is disabled, the opposite of [enabled](../actionability.md#enabled).
299
299
  def disabled?(timeout: nil)
300
300
  wrap_impl(@impl.disabled?(timeout: unwrap_impl(timeout)))
301
301
  end
302
302
 
303
- # Returns whether the element is [editable](./actionability.md#editable).
303
+ # Returns whether the element is [editable](../actionability.md#editable).
304
304
  def editable?(timeout: nil)
305
305
  wrap_impl(@impl.editable?(timeout: unwrap_impl(timeout)))
306
306
  end
307
307
 
308
- # Returns whether the element is [enabled](./actionability.md#enabled).
308
+ # Returns whether the element is [enabled](../actionability.md#enabled).
309
309
  def enabled?(timeout: nil)
310
310
  wrap_impl(@impl.enabled?(timeout: unwrap_impl(timeout)))
311
311
  end
312
312
 
313
- # Returns whether the element is hidden, the opposite of [visible](./actionability.md#visible).
313
+ # Returns whether the element is hidden, the opposite of [visible](../actionability.md#visible).
314
314
  def hidden?(timeout: nil)
315
315
  wrap_impl(@impl.hidden?(timeout: unwrap_impl(timeout)))
316
316
  end
317
317
 
318
- # Returns whether the element is [visible](./actionability.md#visible).
318
+ # Returns whether the element is [visible](../actionability.md#visible).
319
319
  def visible?(timeout: nil)
320
320
  wrap_impl(@impl.visible?(timeout: unwrap_impl(timeout)))
321
321
  end
@@ -330,7 +330,7 @@ module Playwright
330
330
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
331
331
  end
332
332
 
333
- # Returns locator to the n-th matching element.
333
+ # Returns locator to the n-th matching element. It's zero based, `nth(0)` selects the first element.
334
334
  def nth(index)
335
335
  wrap_impl(@impl.nth(unwrap_impl(index)))
336
336
  end
@@ -364,27 +364,29 @@ module Playwright
364
364
 
365
365
  # Returns the buffer with the captured screenshot.
366
366
  #
367
- # This method waits for the [actionability](./actionability.md) checks, then scrolls element into view before taking a
367
+ # This method waits for the [actionability](../actionability.md) checks, then scrolls element into view before taking a
368
368
  # screenshot. If the element is detached from DOM, the method throws an error.
369
369
  def screenshot(
370
370
  animations: nil,
371
+ caret: nil,
371
372
  mask: nil,
372
373
  omitBackground: nil,
373
374
  path: nil,
374
375
  quality: nil,
376
+ scale: nil,
375
377
  timeout: nil,
376
378
  type: nil)
377
- wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
379
+ wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
378
380
  end
379
381
 
380
- # This method waits for [actionability](./actionability.md) checks, then tries to scroll element into view, unless it is
382
+ # This method waits for [actionability](../actionability.md) checks, then tries to scroll element into view, unless it is
381
383
  # completely visible as defined by
382
384
  # [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
383
385
  def scroll_into_view_if_needed(timeout: nil)
384
386
  wrap_impl(@impl.scroll_into_view_if_needed(timeout: unwrap_impl(timeout)))
385
387
  end
386
388
 
387
- # This method waits for [actionability](./actionability.md) checks, waits until all specified options are present in the
389
+ # This method waits for [actionability](../actionability.md) checks, waits until all specified options are present in the
388
390
  # `<select>` element and selects these options.
389
391
  #
390
392
  # If the target element is not a `<select>` element, this method throws an error. However, if the element is inside the
@@ -425,7 +427,7 @@ module Playwright
425
427
  wrap_impl(@impl.select_option(element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
426
428
  end
427
429
 
428
- # This method waits for [actionability](./actionability.md) checks, then focuses the element and selects all its text
430
+ # This method waits for [actionability](../actionability.md) checks, then focuses the element and selects all its text
429
431
  # content.
430
432
  def select_text(force: nil, timeout: nil)
431
433
  wrap_impl(@impl.select_text(force: unwrap_impl(force), timeout: unwrap_impl(timeout)))
@@ -434,7 +436,7 @@ module Playwright
434
436
  # This method checks or unchecks an element by performing the following steps:
435
437
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.
436
438
  # 1. If the element already has the right checked state, this method returns immediately.
437
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
439
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
438
440
  # element is detached during the checks, the whole action is retried.
439
441
  # 1. Scroll the element into view if needed.
440
442
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -465,7 +467,7 @@ module Playwright
465
467
  alias_method :input_files=, :set_input_files
466
468
 
467
469
  # This method taps the element by performing the following steps:
468
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
470
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
469
471
  # 1. Scroll the element into view if needed.
470
472
  # 1. Use [`property: Page.touchscreen`] to tap the center of the element, or the specified `position`.
471
473
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -514,7 +516,7 @@ module Playwright
514
516
  # This method checks the element by performing the following steps:
515
517
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
516
518
  # unchecked, this method returns immediately.
517
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
519
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
518
520
  # 1. Scroll the element into view if needed.
519
521
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
520
522
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.