playwright-ruby-client 1.47.0 → 1.48.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/accessibility.md +6 -0
  3. data/documentation/docs/api/api_request_context.md +1 -1
  4. data/documentation/docs/api/browser_context.md +2 -2
  5. data/documentation/docs/api/element_handle.md +6 -0
  6. data/documentation/docs/api/frame.md +12 -0
  7. data/documentation/docs/api/frame_locator.md +23 -5
  8. data/documentation/docs/api/locator.md +9 -1
  9. data/documentation/docs/api/page.md +15 -4
  10. data/documentation/docs/include/api_coverage.md +3 -0
  11. data/lib/playwright/test.rb +15 -9
  12. data/lib/playwright/version.rb +2 -2
  13. data/lib/playwright_api/accessibility.rb +2 -0
  14. data/lib/playwright_api/android.rb +6 -6
  15. data/lib/playwright_api/android_device.rb +6 -6
  16. data/lib/playwright_api/api_request_context.rb +7 -7
  17. data/lib/playwright_api/browser.rb +6 -6
  18. data/lib/playwright_api/browser_context.rb +34 -8
  19. data/lib/playwright_api/browser_type.rb +6 -6
  20. data/lib/playwright_api/cdp_session.rb +6 -6
  21. data/lib/playwright_api/dialog.rb +6 -6
  22. data/lib/playwright_api/element_handle.rb +8 -6
  23. data/lib/playwright_api/frame.rb +10 -6
  24. data/lib/playwright_api/frame_locator.rb +11 -5
  25. data/lib/playwright_api/js_handle.rb +6 -6
  26. data/lib/playwright_api/locator.rb +5 -1
  27. data/lib/playwright_api/page.rb +55 -14
  28. data/lib/playwright_api/playwright.rb +8 -8
  29. data/lib/playwright_api/request.rb +6 -6
  30. data/lib/playwright_api/response.rb +6 -6
  31. data/lib/playwright_api/route.rb +6 -6
  32. data/lib/playwright_api/selectors.rb +6 -6
  33. data/lib/playwright_api/tracing.rb +6 -6
  34. data/lib/playwright_api/web_socket.rb +6 -6
  35. data/lib/playwright_api/worker.rb +6 -6
  36. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ba01989399fc2a5a939b0471703384bafe37c0dda1e303dfb4f5c187d1e2f32
4
- data.tar.gz: 98ab56b3079b654287aa4521b261745892222b699e696f016b90c09258796b1e
3
+ metadata.gz: d2395db25eb38153f747d215212bc8256364e3b705a1aa674e486e25b75e19f2
4
+ data.tar.gz: b253eb7836baa12a6a9caebc9a3a96d982d49063324631a4cba6a8fa9a2eaaca
5
5
  SHA512:
6
- metadata.gz: 24d8ef9d5fb812b46494ebdec1adf2412e7a129368ea1b6e58883e73f028af1b2912e8a14a56e204a5d01c094a75c9e812b2a7df9fc42a3039f736ca267389a9
7
- data.tar.gz: fdcd1a66ec8a5db98e094126e3bfde6c0d0c43aae68c56926f8779ebab4d394cb4715f66bb69c7b37e21c0daea4cf1c92723123e9263342b42a6b6721052c52e
6
+ metadata.gz: e323743b057fbd6c736e78a1c74d9a7f728a998c3f94771b62a58ddd2c203541f0376cd53947e644232f2614d328d9c09165823a0676b5a0a95778afa72eb044
7
+ data.tar.gz: 67367108051427ecd042eac7d241b5452ccd8b53ee69644eec6700e1b12e1b2899712e88d94808f387d10eeb2dc5512e44d92ea4cfc5b09d5fd6947193c82e19
@@ -25,6 +25,12 @@ assistive technologies themselves. By default, Playwright tries to approximate t
25
25
  def snapshot(interestingOnly: nil, root: nil)
26
26
  ```
27
27
 
28
+ :::warning
29
+
30
+ This method is deprecated. Please use other libraries such as [Axe](https://www.deque.com/axe/) if you need to test page accessibility. See our Node.js [guide](https://playwright.dev/docs/accessibility-testing) for integration with Axe.
31
+
32
+ :::
33
+
28
34
 
29
35
  Captures the current state of the accessibility tree. The returned object represents the root accessible node of the
30
36
  page.
@@ -122,7 +122,7 @@ data = {
122
122
  api_request_context.fetch("https://example.com/api/create_book", method: 'post', data: data)
123
123
  ```
124
124
 
125
- The common way to send file(s) in the body of a request is to upload them as form fields with `multipart/form-data` encoding. Use `FormData` to construct request body and pass it to the request as `multipart` parameter:
125
+ The common way to send file(s) in the body of a request is to upload them as form fields with `multipart/form-data` encoding, by specifiying the `multipart` parameter:
126
126
 
127
127
  ```ruby
128
128
  api_request_context.fetch(
@@ -273,7 +273,7 @@ def route(url, handler, times: nil)
273
273
  Routing provides the capability to modify network requests that are made by any page in the browser context. Once route
274
274
  is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
275
275
 
276
- **NOTE**: [BrowserContext#route](./browser_context#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'`.
276
+ **NOTE**: [BrowserContext#route](./browser_context#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 `serviceWorkers` to `'block'`.
277
277
 
278
278
  **Usage**
279
279
 
@@ -331,7 +331,7 @@ def route_from_har(
331
331
 
332
332
  If specified the network requests that are made in the context will be served from the HAR file. Read more about [Replaying from HAR](https://playwright.dev/python/docs/mock#replaying-from-har).
333
333
 
334
- 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'`.
334
+ 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 `serviceWorkers` to `'block'`.
335
335
 
336
336
  ## service_workers
337
337
 
@@ -609,6 +609,12 @@ Returns the `node.textContent`.
609
609
  def type(text, delay: nil, noWaitAfter: nil, timeout: nil)
610
610
  ```
611
611
 
612
+ :::warning
613
+
614
+ In most cases, you should use [Locator#fill](./locator#fill) instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator#press_sequentially](./locator#press_sequentially).
615
+
616
+ :::
617
+
612
618
 
613
619
  Focuses the element, and then sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text.
614
620
 
@@ -1032,6 +1032,12 @@ def type(
1032
1032
  timeout: nil)
1033
1033
  ```
1034
1034
 
1035
+ :::warning
1036
+
1037
+ In most cases, you should use [Locator#fill](./locator#fill) instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator#press_sequentially](./locator#press_sequentially).
1038
+
1039
+ :::
1040
+
1035
1041
 
1036
1042
  Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text. `frame.type` can be used to
1037
1043
  send fine-grained keyboard events. To fill values in form fields, use [Frame#fill](./frame#fill).
@@ -1126,6 +1132,12 @@ frame.wait_for_load_state # the promise resolves after "load" event.
1126
1132
  def expect_navigation(timeout: nil, url: nil, waitUntil: nil, &block)
1127
1133
  ```
1128
1134
 
1135
+ :::warning
1136
+
1137
+ This method is inherently racy, please use [Frame#wait_for_url](./frame#wait_for_url) instead.
1138
+
1139
+ :::
1140
+
1129
1141
 
1130
1142
  Waits for the frame navigation and returns the main resource response. In case of multiple redirects, the navigation
1131
1143
  will resolve with the response of the last redirect. In case of navigation to a different anchor or navigation due to
@@ -5,10 +5,10 @@ sidebar_position: 10
5
5
  # FrameLocator
6
6
 
7
7
 
8
- FrameLocator represents a view to the `iframe` on the page. It captures the logic sufficient to retrieve the `iframe` and locate elements in that iframe. FrameLocator can be created with either [Page#frame_locator](./page#frame_locator) or [Locator#frame_locator](./locator#frame_locator) method.
8
+ FrameLocator represents a view to the `iframe` on the page. It captures the logic sufficient to retrieve the `iframe` and locate elements in that iframe. FrameLocator can be created with either [Locator#content_frame](./locator#content_frame), [Page#frame_locator](./page#frame_locator) or [Locator#frame_locator](./locator#frame_locator) method.
9
9
 
10
10
  ```ruby
11
- locator = page.frame_locator("my-frame").get_by_text("Submit")
11
+ locator = page.locator("my-frame").content_frame.get_by_text("Submit")
12
12
  locator.click
13
13
  ```
14
14
 
@@ -18,10 +18,10 @@ Frame locators are strict. This means that all operations on frame locators will
18
18
 
19
19
  ```ruby
20
20
  # Throws if there are several frames in DOM:
21
- page.frame_locator('.result-frame').get_by_role('button').click
21
+ page.locator('.result-frame').content_frame.get_by_role('button').click
22
22
 
23
23
  # Works because we explicitly tell locator to pick the first frame:
24
- page.frame_locator('.result-frame').first.get_by_role('button').click
24
+ page.locator('.result-frame').first.content_frame.get_by_role('button').click
25
25
  ```
26
26
 
27
27
  **Converting Locator to FrameLocator**
@@ -38,6 +38,12 @@ If you have a [FrameLocator](./frame_locator) object it can be converted to [Loc
38
38
  def first
39
39
  ```
40
40
 
41
+ :::warning
42
+
43
+ Use [Locator#first](./locator#first) followed by [Locator#content_frame](./locator#content_frame) instead.
44
+
45
+ :::
46
+
41
47
 
42
48
  Returns locator to the first matching frame.
43
49
 
@@ -278,6 +284,12 @@ page.get_by_title("Issues count").text_content # => "25 issues"
278
284
  def last
279
285
  ```
280
286
 
287
+ :::warning
288
+
289
+ Use [Locator#last](./locator#last) followed by [Locator#content_frame](./locator#content_frame) instead.
290
+
291
+ :::
292
+
281
293
 
282
294
  Returns locator to the last matching frame.
283
295
 
@@ -303,6 +315,12 @@ The method finds an element matching the specified selector in the locator's sub
303
315
  def nth(index)
304
316
  ```
305
317
 
318
+ :::warning
319
+
320
+ Use [Locator#nth](./locator#nth) followed by [Locator#content_frame](./locator#content_frame) instead.
321
+
322
+ :::
323
+
306
324
 
307
325
  Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame.
308
326
 
@@ -322,7 +340,7 @@ For a reverse operation, use [Locator#content_frame](./locator#content_frame).
322
340
  **Usage**
323
341
 
324
342
  ```ruby
325
- frame_locator = page.frame_locator('iframe[name="embedded"]')
343
+ frame_locator = page.locator('iframe[name="embedded"]').content_frame
326
344
  # ...
327
345
  locator = frame_locator.owner
328
346
  locator.get_attribute('src') # => frame1.html
@@ -1016,7 +1016,9 @@ def or(locator)
1016
1016
  ```
1017
1017
 
1018
1018
 
1019
- Creates a locator that matches either of the two locators.
1019
+ Creates a locator matching all elements that match one or both of the two locators.
1020
+
1021
+ Note that when both locators match something, the resulting locator will have multiple matches and violate [locator strictness](https://playwright.dev/python/docs/locators#strictness) guidelines.
1020
1022
 
1021
1023
  **Usage**
1022
1024
 
@@ -1335,6 +1337,12 @@ Returns the [`node.textContent`](https://developer.mozilla.org/en-US/docs/Web/AP
1335
1337
  def type(text, delay: nil, noWaitAfter: nil, timeout: nil)
1336
1338
  ```
1337
1339
 
1340
+ :::warning
1341
+
1342
+ In most cases, you should use [Locator#fill](./locator#fill) instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator#press_sequentially](./locator#press_sequentially).
1343
+
1344
+ :::
1345
+
1338
1346
 
1339
1347
  Focuses the element, and then sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text.
1340
1348
 
@@ -1038,8 +1038,7 @@ button in the page overlay or to call `playwright.resume()` in the DevTools cons
1038
1038
  User can inspect selectors or perform manual steps while paused. Resume will continue running the original script from
1039
1039
  the place it was paused.
1040
1040
 
1041
- **NOTE**: This method requires Playwright to be started in a headed mode, with a falsy `headless` value in
1042
- the [BrowserType#launch](./browser_type#launch).
1041
+ **NOTE**: This method requires Playwright to be started in a headed mode, with a falsy `headless` option.
1043
1042
 
1044
1043
  ## pdf
1045
1044
 
@@ -1202,7 +1201,7 @@ Once routing is enabled, every request matching the url pattern will stall unles
1202
1201
 
1203
1202
  **NOTE**: The handler will only be called for the first url if the response is a redirect.
1204
1203
 
1205
- **NOTE**: [Page#route](./page#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'`.
1204
+ **NOTE**: [Page#route](./page#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 `serviceWorkers` to `'block'`.
1206
1205
 
1207
1206
  **NOTE**: [Page#route](./page#route) will not intercept the first request of a popup page. Use [BrowserContext#route](./browser_context#route) instead.
1208
1207
 
@@ -1258,7 +1257,7 @@ def route_from_har(
1258
1257
 
1259
1258
  If specified the network requests that are made in the page will be served from the HAR file. Read more about [Replaying from HAR](https://playwright.dev/python/docs/mock#replaying-from-har).
1260
1259
 
1261
- 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'`.
1260
+ 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 `serviceWorkers` to `'block'`.
1262
1261
 
1263
1262
  ## screenshot
1264
1263
 
@@ -1494,6 +1493,12 @@ def type(
1494
1493
  timeout: nil)
1495
1494
  ```
1496
1495
 
1496
+ :::warning
1497
+
1498
+ In most cases, you should use [Locator#fill](./locator#fill) instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator#press_sequentially](./locator#press_sequentially).
1499
+
1500
+ :::
1501
+
1497
1502
 
1498
1503
  Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text. `page.type` can be used to send
1499
1504
  fine-grained keyboard events. To fill values in form fields, use [Page#fill](./page#fill).
@@ -1684,6 +1689,12 @@ puts popup.title # popup is ready to use.
1684
1689
  def expect_navigation(timeout: nil, url: nil, waitUntil: nil, &block)
1685
1690
  ```
1686
1691
 
1692
+ :::warning
1693
+
1694
+ This method is inherently racy, please use [Page#wait_for_url](./page#wait_for_url) instead.
1695
+
1696
+ :::
1697
+
1687
1698
 
1688
1699
  Waits for the main frame navigation and returns the main resource response. In case of multiple redirects, the navigation
1689
1700
  will resolve with the response of the last redirect. In case of navigation to a different anchor or navigation due to
@@ -288,6 +288,7 @@
288
288
  * get_by_title
289
289
  * go_back
290
290
  * go_forward
291
+ * ~~request_gc~~
291
292
  * goto
292
293
  * hover
293
294
  * inner_html
@@ -313,6 +314,7 @@
313
314
  * reload
314
315
  * route
315
316
  * route_from_har
317
+ * ~~route_web_socket~~
316
318
  * screenshot
317
319
  * select_option
318
320
  * set_checked
@@ -375,6 +377,7 @@
375
377
  * pages
376
378
  * route
377
379
  * route_from_har
380
+ * ~~route_web_socket~~
378
381
  * service_workers
379
382
  * set_default_navigation_timeout
380
383
  * set_default_timeout
@@ -8,15 +8,15 @@ module Playwright
8
8
  @timeout_settings = TimeoutSettings.new
9
9
  end
10
10
 
11
- def call(actual, message = nil)
11
+ def call(actual, is_not)
12
12
  case actual
13
13
  when Page
14
14
  PageAssertions.new(
15
15
  PageAssertionsImpl.new(
16
16
  actual,
17
17
  @timeout_settings.timeout,
18
- false,
19
- message,
18
+ is_not,
19
+ nil,
20
20
  )
21
21
  )
22
22
  when Locator
@@ -24,8 +24,8 @@ module Playwright
24
24
  LocatorAssertionsImpl.new(
25
25
  actual,
26
26
  @timeout_settings.timeout,
27
- false,
28
- message,
27
+ is_not,
28
+ nil,
29
29
  )
30
30
  )
31
31
  else
@@ -43,7 +43,15 @@ module Playwright
43
43
  end
44
44
 
45
45
  def matches?(actual)
46
- Expect.new.call(actual).send(@method, *@args, **@kwargs)
46
+ Expect.new.call(actual, false).send(@method, *@args, **@kwargs)
47
+ true
48
+ rescue AssertionError => e
49
+ @failure_message = e.full_message
50
+ false
51
+ end
52
+
53
+ def does_not_match?(actual)
54
+ Expect.new.call(actual, true).send(@method, *@args, **@kwargs)
47
55
  true
48
56
  rescue AssertionError => e
49
57
  @failure_message = e.full_message
@@ -54,10 +62,8 @@ module Playwright
54
62
  @failure_message
55
63
  end
56
64
 
57
- # we have to invert the message again here because RSpec wants to control
58
- # its own negation
59
65
  def failure_message_when_negated
60
- @failure_message.gsub("expected to", "not expected to")
66
+ @failure_message
61
67
  end
62
68
  end
63
69
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.47.0'
5
- COMPATIBLE_PLAYWRIGHT_VERSION = '1.47.1'
4
+ VERSION = '1.48.0'
5
+ COMPATIBLE_PLAYWRIGHT_VERSION = '1.48.2'
6
6
  end
@@ -48,6 +48,8 @@ module Playwright
48
48
  # if node:
49
49
  # print(node["name"])
50
50
  # ```
51
+ #
52
+ # @deprecated This method is deprecated. Please use other libraries such as [Axe](https://www.deque.com/axe/) if you need to test page accessibility. See our Node.js [guide](https://playwright.dev/docs/accessibility-testing) for integration with Axe.
51
53
  def snapshot(interestingOnly: nil, root: nil)
52
54
  wrap_impl(@impl.snapshot(interestingOnly: unwrap_impl(interestingOnly), root: unwrap_impl(root)))
53
55
  end
@@ -38,12 +38,6 @@ module Playwright
38
38
  end
39
39
  alias_method :default_timeout=, :set_default_timeout
40
40
 
41
- # -- inherited from EventEmitter --
42
- # @nodoc
43
- def once(event, callback)
44
- event_emitter_proxy.once(event, callback)
45
- end
46
-
47
41
  # -- inherited from EventEmitter --
48
42
  # @nodoc
49
43
  def on(event, callback)
@@ -56,6 +50,12 @@ module Playwright
56
50
  event_emitter_proxy.off(event, callback)
57
51
  end
58
52
 
53
+ # -- inherited from EventEmitter --
54
+ # @nodoc
55
+ def once(event, callback)
56
+ event_emitter_proxy.once(event, callback)
57
+ end
58
+
59
59
  private def event_emitter_proxy
60
60
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
61
61
  end
@@ -203,12 +203,6 @@ module Playwright
203
203
  wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
204
204
  end
205
205
 
206
- # -- inherited from EventEmitter --
207
- # @nodoc
208
- def once(event, callback)
209
- event_emitter_proxy.once(event, callback)
210
- end
211
-
212
206
  # -- inherited from EventEmitter --
213
207
  # @nodoc
214
208
  def on(event, callback)
@@ -221,6 +215,12 @@ module Playwright
221
215
  event_emitter_proxy.off(event, callback)
222
216
  end
223
217
 
218
+ # -- inherited from EventEmitter --
219
+ # @nodoc
220
+ def once(event, callback)
221
+ event_emitter_proxy.once(event, callback)
222
+ end
223
+
224
224
  private def event_emitter_proxy
225
225
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
226
226
  end
@@ -108,7 +108,7 @@ module Playwright
108
108
  # api_request_context.fetch("https://example.com/api/createBook", method="post", data=data)
109
109
  # ```
110
110
  #
111
- # The common way to send file(s) in the body of a request is to upload them as form fields with `multipart/form-data` encoding. Use `FormData` to construct request body and pass it to the request as `multipart` parameter:
111
+ # The common way to send file(s) in the body of a request is to upload them as form fields with `multipart/form-data` encoding, by specifiying the `multipart` parameter:
112
112
  #
113
113
  # ```python
114
114
  # api_request_context.fetch(
@@ -286,12 +286,6 @@ module Playwright
286
286
  raise NotImplementedError.new('storage_state is not implemented yet.')
287
287
  end
288
288
 
289
- # -- inherited from EventEmitter --
290
- # @nodoc
291
- def once(event, callback)
292
- event_emitter_proxy.once(event, callback)
293
- end
294
-
295
289
  # -- inherited from EventEmitter --
296
290
  # @nodoc
297
291
  def on(event, callback)
@@ -304,6 +298,12 @@ module Playwright
304
298
  event_emitter_proxy.off(event, callback)
305
299
  end
306
300
 
301
+ # -- inherited from EventEmitter --
302
+ # @nodoc
303
+ def once(event, callback)
304
+ event_emitter_proxy.once(event, callback)
305
+ end
306
+
307
307
  private def event_emitter_proxy
308
308
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
309
309
  end
@@ -201,12 +201,6 @@ module Playwright
201
201
  wrap_impl(@impl.version)
202
202
  end
203
203
 
204
- # -- inherited from EventEmitter --
205
- # @nodoc
206
- def once(event, callback)
207
- event_emitter_proxy.once(event, callback)
208
- end
209
-
210
204
  # -- inherited from EventEmitter --
211
205
  # @nodoc
212
206
  def on(event, callback)
@@ -219,6 +213,12 @@ module Playwright
219
213
  event_emitter_proxy.off(event, callback)
220
214
  end
221
215
 
216
+ # -- inherited from EventEmitter --
217
+ # @nodoc
218
+ def once(event, callback)
219
+ event_emitter_proxy.once(event, callback)
220
+ end
221
+
222
222
  private def event_emitter_proxy
223
223
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
224
224
  end
@@ -250,7 +250,7 @@ module Playwright
250
250
  # Routing provides the capability to modify network requests that are made by any page in the browser context. Once route
251
251
  # is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
252
252
  #
253
- # **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'`.
253
+ # **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 `serviceWorkers` to `'block'`.
254
254
  #
255
255
  # **Usage**
256
256
  #
@@ -300,7 +300,7 @@ module Playwright
300
300
  #
301
301
  # If specified the network requests that are made in the context will be served from the HAR file. Read more about [Replaying from HAR](../mock.md#replaying-from-har).
302
302
  #
303
- # 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'`.
303
+ # 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 `serviceWorkers` to `'block'`.
304
304
  def route_from_har(
305
305
  har,
306
306
  notFound: nil,
@@ -311,6 +311,32 @@ module Playwright
311
311
  wrap_impl(@impl.route_from_har(unwrap_impl(har), notFound: unwrap_impl(notFound), update: unwrap_impl(update), updateContent: unwrap_impl(updateContent), updateMode: unwrap_impl(updateMode), url: unwrap_impl(url)))
312
312
  end
313
313
 
314
+ #
315
+ # This method allows to modify websocket connections that are made by any page in the browser context.
316
+ #
317
+ # Note that only `WebSocket`s created after this method was called will be routed. It is recommended to call this method before creating any pages.
318
+ #
319
+ # **Usage**
320
+ #
321
+ # Below is an example of a simple handler that blocks some websocket messages.
322
+ # See `WebSocketRoute` for more details and examples.
323
+ #
324
+ # ```python sync
325
+ # def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
326
+ # if message == "to-be-blocked":
327
+ # return
328
+ # ws.send(message)
329
+ #
330
+ # def handler(ws: WebSocketRoute):
331
+ # ws.route_send(lambda message: message_handler(ws, message))
332
+ # ws.connect()
333
+ #
334
+ # context.route_web_socket("/ws", handler)
335
+ # ```
336
+ def route_web_socket(url, handler)
337
+ raise NotImplementedError.new('route_web_socket is not implemented yet.')
338
+ end
339
+
314
340
  #
315
341
  # **NOTE**: Service workers are only supported on Chromium-based browsers.
316
342
  #
@@ -462,12 +488,6 @@ module Playwright
462
488
  wrap_impl(@impl.browser=(unwrap_impl(req)))
463
489
  end
464
490
 
465
- # -- inherited from EventEmitter --
466
- # @nodoc
467
- def once(event, callback)
468
- event_emitter_proxy.once(event, callback)
469
- end
470
-
471
491
  # -- inherited from EventEmitter --
472
492
  # @nodoc
473
493
  def on(event, callback)
@@ -480,6 +500,12 @@ module Playwright
480
500
  event_emitter_proxy.off(event, callback)
481
501
  end
482
502
 
503
+ # -- inherited from EventEmitter --
504
+ # @nodoc
505
+ def once(event, callback)
506
+ event_emitter_proxy.once(event, callback)
507
+ end
508
+
483
509
  private def event_emitter_proxy
484
510
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
485
511
  end
@@ -175,12 +175,6 @@ module Playwright
175
175
  wrap_impl(@impl.name)
176
176
  end
177
177
 
178
- # -- inherited from EventEmitter --
179
- # @nodoc
180
- def once(event, callback)
181
- event_emitter_proxy.once(event, callback)
182
- end
183
-
184
178
  # -- inherited from EventEmitter --
185
179
  # @nodoc
186
180
  def on(event, callback)
@@ -193,6 +187,12 @@ module Playwright
193
187
  event_emitter_proxy.off(event, callback)
194
188
  end
195
189
 
190
+ # -- inherited from EventEmitter --
191
+ # @nodoc
192
+ def once(event, callback)
193
+ event_emitter_proxy.once(event, callback)
194
+ end
195
+
196
196
  private def event_emitter_proxy
197
197
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
198
198
  end
@@ -31,12 +31,6 @@ module Playwright
31
31
  wrap_impl(@impl.send_message(unwrap_impl(method), params: unwrap_impl(params)))
32
32
  end
33
33
 
34
- # -- inherited from EventEmitter --
35
- # @nodoc
36
- def once(event, callback)
37
- event_emitter_proxy.once(event, callback)
38
- end
39
-
40
34
  # -- inherited from EventEmitter --
41
35
  # @nodoc
42
36
  def on(event, callback)
@@ -49,6 +43,12 @@ module Playwright
49
43
  event_emitter_proxy.off(event, callback)
50
44
  end
51
45
 
46
+ # -- inherited from EventEmitter --
47
+ # @nodoc
48
+ def once(event, callback)
49
+ event_emitter_proxy.once(event, callback)
50
+ end
51
+
52
52
  private def event_emitter_proxy
53
53
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
54
54
  end
@@ -68,12 +68,6 @@ module Playwright
68
68
  wrap_impl(@impl.accept_async(promptText: unwrap_impl(promptText)))
69
69
  end
70
70
 
71
- # -- inherited from EventEmitter --
72
- # @nodoc
73
- def once(event, callback)
74
- event_emitter_proxy.once(event, callback)
75
- end
76
-
77
71
  # -- inherited from EventEmitter --
78
72
  # @nodoc
79
73
  def on(event, callback)
@@ -86,6 +80,12 @@ module Playwright
86
80
  event_emitter_proxy.off(event, callback)
87
81
  end
88
82
 
83
+ # -- inherited from EventEmitter --
84
+ # @nodoc
85
+ def once(event, callback)
86
+ event_emitter_proxy.once(event, callback)
87
+ end
88
+
89
89
  private def event_emitter_proxy
90
90
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
91
91
  end
@@ -505,6 +505,8 @@ module Playwright
505
505
  # To press a special key, like `Control` or `ArrowDown`, use [`method: ElementHandle.press`].
506
506
  #
507
507
  # **Usage**
508
+ #
509
+ # @deprecated In most cases, you should use [`method: Locator.fill`] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [`method: Locator.pressSequentially`].
508
510
  def type(text, delay: nil, noWaitAfter: nil, timeout: nil)
509
511
  wrap_impl(@impl.type(unwrap_impl(text), delay: unwrap_impl(delay), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
510
512
  end
@@ -570,12 +572,6 @@ module Playwright
570
572
  wrap_impl(@impl.wait_for_selector(unwrap_impl(selector), state: unwrap_impl(state), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
571
573
  end
572
574
 
573
- # -- inherited from EventEmitter --
574
- # @nodoc
575
- def once(event, callback)
576
- event_emitter_proxy.once(event, callback)
577
- end
578
-
579
575
  # -- inherited from EventEmitter --
580
576
  # @nodoc
581
577
  def on(event, callback)
@@ -588,6 +584,12 @@ module Playwright
588
584
  event_emitter_proxy.off(event, callback)
589
585
  end
590
586
 
587
+ # -- inherited from EventEmitter --
588
+ # @nodoc
589
+ def once(event, callback)
590
+ event_emitter_proxy.once(event, callback)
591
+ end
592
+
591
593
  private def event_emitter_proxy
592
594
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
593
595
  end
@@ -866,6 +866,8 @@ module Playwright
866
866
  # To press a special key, like `Control` or `ArrowDown`, use [`method: Keyboard.press`].
867
867
  #
868
868
  # **Usage**
869
+ #
870
+ # @deprecated In most cases, you should use [`method: Locator.fill`] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [`method: Locator.pressSequentially`].
869
871
  def type(
870
872
  selector,
871
873
  text,
@@ -972,6 +974,8 @@ module Playwright
972
974
  #
973
975
  # **NOTE**: Usage of the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is considered
974
976
  # a navigation.
977
+ #
978
+ # @deprecated This method is inherently racy, please use [`method: Frame.waitForURL`] instead.
975
979
  def expect_navigation(timeout: nil, url: nil, waitUntil: nil, &block)
976
980
  wrap_impl(@impl.expect_navigation(timeout: unwrap_impl(timeout), url: unwrap_impl(url), waitUntil: unwrap_impl(waitUntil), &wrap_block_call(block)))
977
981
  end
@@ -1044,12 +1048,6 @@ module Playwright
1044
1048
  wrap_impl(@impl.highlight(unwrap_impl(selector)))
1045
1049
  end
1046
1050
 
1047
- # -- inherited from EventEmitter --
1048
- # @nodoc
1049
- def once(event, callback)
1050
- event_emitter_proxy.once(event, callback)
1051
- end
1052
-
1053
1051
  # -- inherited from EventEmitter --
1054
1052
  # @nodoc
1055
1053
  def on(event, callback)
@@ -1062,6 +1060,12 @@ module Playwright
1062
1060
  event_emitter_proxy.off(event, callback)
1063
1061
  end
1064
1062
 
1063
+ # -- inherited from EventEmitter --
1064
+ # @nodoc
1065
+ def once(event, callback)
1066
+ event_emitter_proxy.once(event, callback)
1067
+ end
1068
+
1065
1069
  private def event_emitter_proxy
1066
1070
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
1067
1071
  end
@@ -1,9 +1,9 @@
1
1
  module Playwright
2
2
  #
3
- # FrameLocator represents a view to the `iframe` on the page. It captures the logic sufficient to retrieve the `iframe` and locate elements in that iframe. FrameLocator can be created with either [`method: Page.frameLocator`] or [`method: Locator.frameLocator`] method.
3
+ # FrameLocator represents a view to the `iframe` on the page. It captures the logic sufficient to retrieve the `iframe` and locate elements in that iframe. FrameLocator can be created with either [`method: Locator.contentFrame`], [`method: Page.frameLocator`] or [`method: Locator.frameLocator`] method.
4
4
  #
5
5
  # ```python sync
6
- # locator = page.frame_locator("my-frame").get_by_text("Submit")
6
+ # locator = page.locator("my-frame").content_frame.get_by_text("Submit")
7
7
  # locator.click()
8
8
  # ```
9
9
  #
@@ -13,10 +13,10 @@ module Playwright
13
13
  #
14
14
  # ```python sync
15
15
  # # Throws if there are several frames in DOM:
16
- # page.frame_locator('.result-frame').get_by_role('button').click()
16
+ # page.locator('.result-frame').content_frame.get_by_role('button').click()
17
17
  #
18
18
  # # Works because we explicitly tell locator to pick the first frame:
19
- # page.frame_locator('.result-frame').first.get_by_role('button').click()
19
+ # page.locator('.result-frame').first.content_frame.get_by_role('button').click()
20
20
  # ```
21
21
  #
22
22
  # **Converting Locator to FrameLocator**
@@ -30,6 +30,8 @@ module Playwright
30
30
 
31
31
  #
32
32
  # Returns locator to the first matching frame.
33
+ #
34
+ # @deprecated Use [`method: Locator.first`] followed by [`method: Locator.contentFrame`] instead.
33
35
  def first
34
36
  wrap_impl(@impl.first)
35
37
  end
@@ -233,6 +235,8 @@ module Playwright
233
235
 
234
236
  #
235
237
  # Returns locator to the last matching frame.
238
+ #
239
+ # @deprecated Use [`method: Locator.last`] followed by [`method: Locator.contentFrame`] instead.
236
240
  def last
237
241
  wrap_impl(@impl.last)
238
242
  end
@@ -252,6 +256,8 @@ module Playwright
252
256
 
253
257
  #
254
258
  # Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame.
259
+ #
260
+ # @deprecated Use [`method: Locator.nth`] followed by [`method: Locator.contentFrame`] instead.
255
261
  def nth(index)
256
262
  wrap_impl(@impl.nth(unwrap_impl(index)))
257
263
  end
@@ -266,7 +272,7 @@ module Playwright
266
272
  # **Usage**
267
273
  #
268
274
  # ```python sync
269
- # frame_locator = page.frame_locator("iframe[name=\"embedded\"]")
275
+ # frame_locator = page.locator("iframe[name=\"embedded\"]").content_frame
270
276
  # # ...
271
277
  # locator = frame_locator.owner
272
278
  # expect(locator).to_be_visible()
@@ -98,12 +98,6 @@ module Playwright
98
98
  wrap_impl(@impl.to_s)
99
99
  end
100
100
 
101
- # -- inherited from EventEmitter --
102
- # @nodoc
103
- def once(event, callback)
104
- event_emitter_proxy.once(event, callback)
105
- end
106
-
107
101
  # -- inherited from EventEmitter --
108
102
  # @nodoc
109
103
  def on(event, callback)
@@ -116,6 +110,12 @@ module Playwright
116
110
  event_emitter_proxy.off(event, callback)
117
111
  end
118
112
 
113
+ # -- inherited from EventEmitter --
114
+ # @nodoc
115
+ def once(event, callback)
116
+ event_emitter_proxy.once(event, callback)
117
+ end
118
+
119
119
  private def event_emitter_proxy
120
120
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
121
121
  end
@@ -854,7 +854,9 @@ module Playwright
854
854
  end
855
855
 
856
856
  #
857
- # Creates a locator that matches either of the two locators.
857
+ # Creates a locator matching all elements that match one or both of the two locators.
858
+ #
859
+ # Note that when both locators match something, the resulting locator will have multiple matches and violate [locator strictness](../locators.md#strictness) guidelines.
858
860
  #
859
861
  # **Usage**
860
862
  #
@@ -1148,6 +1150,8 @@ module Playwright
1148
1150
  # To press a special key, like `Control` or `ArrowDown`, use [`method: Locator.press`].
1149
1151
  #
1150
1152
  # **Usage**
1153
+ #
1154
+ # @deprecated In most cases, you should use [`method: Locator.fill`] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [`method: Locator.pressSequentially`].
1151
1155
  def type(text, delay: nil, noWaitAfter: nil, timeout: nil)
1152
1156
  wrap_impl(@impl.type(unwrap_impl(text), delay: unwrap_impl(delay), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
1153
1157
  end
@@ -793,6 +793,23 @@ module Playwright
793
793
  wrap_impl(@impl.go_forward(timeout: unwrap_impl(timeout), waitUntil: unwrap_impl(waitUntil)))
794
794
  end
795
795
 
796
+ #
797
+ # Request the page to perform garbage collection. Note that there is no guarantee that all unreachable objects will be collected.
798
+ #
799
+ # This is useful to help detect memory leaks. For example, if your page has a large object `'suspect'` that might be leaked, you can check that it does not leak by using a [`WeakRef`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakRef).
800
+ #
801
+ # ```python sync
802
+ # # 1. In your page, save a WeakRef for the "suspect".
803
+ # page.evaluate("globalThis.suspectWeakRef = new WeakRef(suspect)")
804
+ # # 2. Request garbage collection.
805
+ # page.request_gc()
806
+ # # 3. Check that weak ref does not deref to the original object.
807
+ # assert page.evaluate("!globalThis.suspectWeakRef.deref()")
808
+ # ```
809
+ def request_gc
810
+ raise NotImplementedError.new('request_gc is not implemented yet.')
811
+ end
812
+
796
813
  #
797
814
  # Returns the main resource response. In case of multiple redirects, the navigation will resolve with the first
798
815
  # non-redirect response.
@@ -933,8 +950,7 @@ module Playwright
933
950
  # User can inspect selectors or perform manual steps while paused. Resume will continue running the original script from
934
951
  # the place it was paused.
935
952
  #
936
- # **NOTE**: This method requires Playwright to be started in a headed mode, with a falsy `headless` value in
937
- # the [`method: BrowserType.launch`].
953
+ # **NOTE**: This method requires Playwright to be started in a headed mode, with a falsy `headless` option.
938
954
  def pause
939
955
  wrap_impl(@impl.pause)
940
956
  end
@@ -1079,11 +1095,9 @@ module Playwright
1079
1095
  # - You can register multiple handlers. However, only a single handler will be running at a time. Make sure the actions within a handler don't depend on another handler.
1080
1096
  #
1081
1097
  # **NOTE**: Running the handler will alter your page state mid-test. For example it will change the currently focused element and move the mouse. Make sure that actions that run after the handler are self-contained and do not rely on the focus and mouse state being unchanged.
1082
- # <br />
1083
- # <br />
1098
+ #
1084
1099
  # For example, consider a test that calls [`method: Locator.focus`] followed by [`method: Keyboard.press`]. If your handler clicks a button between these two actions, the focused element most likely will be wrong, and key press will happen on the unexpected element. Use [`method: Locator.press`] instead to avoid this problem.
1085
- # <br />
1086
- # <br />
1100
+ #
1087
1101
  # Another example is a series of mouse actions, where [`method: Mouse.move`] is followed by [`method: Mouse.down`]. Again, when the handler runs between these two actions, the mouse position will be wrong during the mouse down. Prefer self-contained actions like [`method: Locator.click`] that do not rely on the state being unchanged by a handler.
1088
1102
  #
1089
1103
  # **Usage**
@@ -1159,7 +1173,7 @@ module Playwright
1159
1173
  #
1160
1174
  # **NOTE**: The handler will only be called for the first url if the response is a redirect.
1161
1175
  #
1162
- # **NOTE**: [`method: Page.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'`.
1176
+ # **NOTE**: [`method: Page.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 `serviceWorkers` to `'block'`.
1163
1177
  #
1164
1178
  # **NOTE**: [`method: Page.route`] will not intercept the first request of a popup page. Use [`method: BrowserContext.route`] instead.
1165
1179
  #
@@ -1207,7 +1221,7 @@ module Playwright
1207
1221
  #
1208
1222
  # If specified the network requests that are made in the page will be served from the HAR file. Read more about [Replaying from HAR](../mock.md#replaying-from-har).
1209
1223
  #
1210
- # 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'`.
1224
+ # 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 `serviceWorkers` to `'block'`.
1211
1225
  def route_from_har(
1212
1226
  har,
1213
1227
  notFound: nil,
@@ -1218,6 +1232,29 @@ module Playwright
1218
1232
  wrap_impl(@impl.route_from_har(unwrap_impl(har), notFound: unwrap_impl(notFound), update: unwrap_impl(update), updateContent: unwrap_impl(updateContent), updateMode: unwrap_impl(updateMode), url: unwrap_impl(url)))
1219
1233
  end
1220
1234
 
1235
+ #
1236
+ # This method allows to modify websocket connections that are made by the page.
1237
+ #
1238
+ # Note that only `WebSocket`s created after this method was called will be routed. It is recommended to call this method before navigating the page.
1239
+ #
1240
+ # **Usage**
1241
+ #
1242
+ # Below is an example of a simple mock that responds to a single message. See `WebSocketRoute` for more details and examples.
1243
+ #
1244
+ # ```python sync
1245
+ # def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
1246
+ # if message == "request":
1247
+ # ws.send("response")
1248
+ #
1249
+ # def handler(ws: WebSocketRoute):
1250
+ # ws.on_message(lambda message: message_handler(ws, message))
1251
+ #
1252
+ # page.route_web_socket("/ws", handler)
1253
+ # ```
1254
+ def route_web_socket(url, handler)
1255
+ raise NotImplementedError.new('route_web_socket is not implemented yet.')
1256
+ end
1257
+
1221
1258
  #
1222
1259
  # Returns the buffer with the captured screenshot.
1223
1260
  def screenshot(
@@ -1412,6 +1449,8 @@ module Playwright
1412
1449
  # To press a special key, like `Control` or `ArrowDown`, use [`method: Keyboard.press`].
1413
1450
  #
1414
1451
  # **Usage**
1452
+ #
1453
+ # @deprecated In most cases, you should use [`method: Locator.fill`] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [`method: Locator.pressSequentially`].
1415
1454
  def type(
1416
1455
  selector,
1417
1456
  text,
@@ -1589,6 +1628,8 @@ module Playwright
1589
1628
  #
1590
1629
  # **NOTE**: Usage of the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is considered
1591
1630
  # a navigation.
1631
+ #
1632
+ # @deprecated This method is inherently racy, please use [`method: Page.waitForURL`] instead.
1592
1633
  def expect_navigation(timeout: nil, url: nil, waitUntil: nil, &block)
1593
1634
  wrap_impl(@impl.expect_navigation(timeout: unwrap_impl(timeout), url: unwrap_impl(url), waitUntil: unwrap_impl(waitUntil), &wrap_block_call(block)))
1594
1635
  end
@@ -1779,12 +1820,6 @@ module Playwright
1779
1820
  wrap_impl(@impl.owned_context=(unwrap_impl(req)))
1780
1821
  end
1781
1822
 
1782
- # -- inherited from EventEmitter --
1783
- # @nodoc
1784
- def once(event, callback)
1785
- event_emitter_proxy.once(event, callback)
1786
- end
1787
-
1788
1823
  # -- inherited from EventEmitter --
1789
1824
  # @nodoc
1790
1825
  def on(event, callback)
@@ -1797,6 +1832,12 @@ module Playwright
1797
1832
  event_emitter_proxy.off(event, callback)
1798
1833
  end
1799
1834
 
1835
+ # -- inherited from EventEmitter --
1836
+ # @nodoc
1837
+ def once(event, callback)
1838
+ event_emitter_proxy.once(event, callback)
1839
+ end
1840
+
1800
1841
  private def event_emitter_proxy
1801
1842
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
1802
1843
  end
@@ -93,20 +93,14 @@ module Playwright
93
93
  raise NotImplementedError.new('stop is not implemented yet.')
94
94
  end
95
95
 
96
- # @nodoc
97
- def electron
98
- wrap_impl(@impl.electron)
99
- end
100
-
101
96
  # @nodoc
102
97
  def android
103
98
  wrap_impl(@impl.android)
104
99
  end
105
100
 
106
- # -- inherited from EventEmitter --
107
101
  # @nodoc
108
- def once(event, callback)
109
- event_emitter_proxy.once(event, callback)
102
+ def electron
103
+ wrap_impl(@impl.electron)
110
104
  end
111
105
 
112
106
  # -- inherited from EventEmitter --
@@ -121,6 +115,12 @@ module Playwright
121
115
  event_emitter_proxy.off(event, callback)
122
116
  end
123
117
 
118
+ # -- inherited from EventEmitter --
119
+ # @nodoc
120
+ def once(event, callback)
121
+ event_emitter_proxy.once(event, callback)
122
+ end
123
+
124
124
  private def event_emitter_proxy
125
125
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
126
126
  end
@@ -205,12 +205,6 @@ module Playwright
205
205
  wrap_impl(@impl.header_values(unwrap_impl(name)))
206
206
  end
207
207
 
208
- # -- inherited from EventEmitter --
209
- # @nodoc
210
- def once(event, callback)
211
- event_emitter_proxy.once(event, callback)
212
- end
213
-
214
208
  # -- inherited from EventEmitter --
215
209
  # @nodoc
216
210
  def on(event, callback)
@@ -223,6 +217,12 @@ module Playwright
223
217
  event_emitter_proxy.off(event, callback)
224
218
  end
225
219
 
220
+ # -- inherited from EventEmitter --
221
+ # @nodoc
222
+ def once(event, callback)
223
+ event_emitter_proxy.once(event, callback)
224
+ end
225
+
226
226
  private def event_emitter_proxy
227
227
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
228
228
  end
@@ -127,12 +127,6 @@ module Playwright
127
127
  wrap_impl(@impl.from_service_worker?)
128
128
  end
129
129
 
130
- # -- inherited from EventEmitter --
131
- # @nodoc
132
- def once(event, callback)
133
- event_emitter_proxy.once(event, callback)
134
- end
135
-
136
130
  # -- inherited from EventEmitter --
137
131
  # @nodoc
138
132
  def on(event, callback)
@@ -145,6 +139,12 @@ module Playwright
145
139
  event_emitter_proxy.off(event, callback)
146
140
  end
147
141
 
142
+ # -- inherited from EventEmitter --
143
+ # @nodoc
144
+ def once(event, callback)
145
+ event_emitter_proxy.once(event, callback)
146
+ end
147
+
148
148
  private def event_emitter_proxy
149
149
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
150
150
  end
@@ -172,12 +172,6 @@ module Playwright
172
172
  wrap_impl(@impl.redirect_navigation_request(unwrap_impl(url)))
173
173
  end
174
174
 
175
- # -- inherited from EventEmitter --
176
- # @nodoc
177
- def once(event, callback)
178
- event_emitter_proxy.once(event, callback)
179
- end
180
-
181
175
  # -- inherited from EventEmitter --
182
176
  # @nodoc
183
177
  def on(event, callback)
@@ -190,6 +184,12 @@ module Playwright
190
184
  event_emitter_proxy.off(event, callback)
191
185
  end
192
186
 
187
+ # -- inherited from EventEmitter --
188
+ # @nodoc
189
+ def once(event, callback)
190
+ event_emitter_proxy.once(event, callback)
191
+ end
192
+
193
193
  private def event_emitter_proxy
194
194
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
195
195
  end
@@ -61,12 +61,6 @@ module Playwright
61
61
  wrap_impl(@impl.text_id_attribute=(unwrap_impl(attribute_name)))
62
62
  end
63
63
 
64
- # -- inherited from EventEmitter --
65
- # @nodoc
66
- def once(event, callback)
67
- event_emitter_proxy.once(event, callback)
68
- end
69
-
70
64
  # -- inherited from EventEmitter --
71
65
  # @nodoc
72
66
  def on(event, callback)
@@ -79,6 +73,12 @@ module Playwright
79
73
  event_emitter_proxy.off(event, callback)
80
74
  end
81
75
 
76
+ # -- inherited from EventEmitter --
77
+ # @nodoc
78
+ def once(event, callback)
79
+ event_emitter_proxy.once(event, callback)
80
+ end
81
+
82
82
  private def event_emitter_proxy
83
83
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
84
84
  end
@@ -70,12 +70,6 @@ module Playwright
70
70
  wrap_impl(@impl.stop_chunk(path: unwrap_impl(path)))
71
71
  end
72
72
 
73
- # -- inherited from EventEmitter --
74
- # @nodoc
75
- def once(event, callback)
76
- event_emitter_proxy.once(event, callback)
77
- end
78
-
79
73
  # -- inherited from EventEmitter --
80
74
  # @nodoc
81
75
  def on(event, callback)
@@ -88,6 +82,12 @@ module Playwright
88
82
  event_emitter_proxy.off(event, callback)
89
83
  end
90
84
 
85
+ # -- inherited from EventEmitter --
86
+ # @nodoc
87
+ def once(event, callback)
88
+ event_emitter_proxy.once(event, callback)
89
+ end
90
+
91
91
  private def event_emitter_proxy
92
92
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
93
93
  end
@@ -32,12 +32,6 @@ module Playwright
32
32
  wrap_impl(@impl.wait_for_event(unwrap_impl(event), predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
33
33
  end
34
34
 
35
- # -- inherited from EventEmitter --
36
- # @nodoc
37
- def once(event, callback)
38
- event_emitter_proxy.once(event, callback)
39
- end
40
-
41
35
  # -- inherited from EventEmitter --
42
36
  # @nodoc
43
37
  def on(event, callback)
@@ -50,6 +44,12 @@ module Playwright
50
44
  event_emitter_proxy.off(event, callback)
51
45
  end
52
46
 
47
+ # -- inherited from EventEmitter --
48
+ # @nodoc
49
+ def once(event, callback)
50
+ event_emitter_proxy.once(event, callback)
51
+ end
52
+
53
53
  private def event_emitter_proxy
54
54
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
55
55
  end
@@ -56,12 +56,6 @@ module Playwright
56
56
  wrap_impl(@impl.page=(unwrap_impl(req)))
57
57
  end
58
58
 
59
- # -- inherited from EventEmitter --
60
- # @nodoc
61
- def once(event, callback)
62
- event_emitter_proxy.once(event, callback)
63
- end
64
-
65
59
  # -- inherited from EventEmitter --
66
60
  # @nodoc
67
61
  def on(event, callback)
@@ -74,6 +68,12 @@ module Playwright
74
68
  event_emitter_proxy.off(event, callback)
75
69
  end
76
70
 
71
+ # -- inherited from EventEmitter --
72
+ # @nodoc
73
+ def once(event, callback)
74
+ event_emitter_proxy.once(event, callback)
75
+ end
76
+
77
77
  private def event_emitter_proxy
78
78
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
79
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playwright-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.47.0
4
+ version: 1.48.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-14 00:00:00.000000000 Z
11
+ date: 2024-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -413,5 +413,5 @@ requirements: []
413
413
  rubygems_version: 3.3.27
414
414
  signing_key:
415
415
  specification_version: 4
416
- summary: The Ruby binding of playwright driver 1.47.1
416
+ summary: The Ruby binding of playwright driver 1.48.2
417
417
  test_files: []