playwright-ruby-client 1.20.2 → 1.21.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 (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.