playwright-ruby-client 0.6.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -0
  3. data/documentation/docs/api/browser.md +10 -0
  4. data/documentation/docs/api/browser_context.md +10 -0
  5. data/documentation/docs/api/browser_type.md +53 -0
  6. data/documentation/docs/api/cdp_session.md +41 -1
  7. data/documentation/docs/api/element_handle.md +11 -2
  8. data/documentation/docs/api/frame.md +15 -1
  9. data/documentation/docs/api/page.md +33 -1
  10. data/documentation/docs/api/response.md +16 -0
  11. data/documentation/docs/api/route.md +20 -21
  12. data/documentation/docs/api/web_socket.md +38 -1
  13. data/documentation/docs/article/guides/launch_browser.md +2 -0
  14. data/documentation/docs/article/guides/rails_integration.md +2 -2
  15. data/documentation/docs/article/guides/semi_automation.md +67 -0
  16. data/documentation/docs/include/api_coverage.md +19 -13
  17. data/lib/playwright.rb +36 -3
  18. data/lib/playwright/channel_owners/browser.rb +5 -0
  19. data/lib/playwright/channel_owners/browser_context.rb +5 -0
  20. data/lib/playwright/channel_owners/browser_type.rb +18 -0
  21. data/lib/playwright/channel_owners/cdp_session.rb +19 -0
  22. data/lib/playwright/channel_owners/element_handle.rb +11 -4
  23. data/lib/playwright/channel_owners/frame.rb +14 -2
  24. data/lib/playwright/channel_owners/page.rb +21 -2
  25. data/lib/playwright/channel_owners/response.rb +9 -1
  26. data/lib/playwright/channel_owners/web_socket.rb +87 -0
  27. data/lib/playwright/connection.rb +2 -4
  28. data/lib/playwright/transport.rb +0 -1
  29. data/lib/playwright/version.rb +2 -2
  30. data/lib/playwright/web_socket_client.rb +164 -0
  31. data/lib/playwright/web_socket_transport.rb +104 -0
  32. data/lib/playwright_api/android.rb +6 -6
  33. data/lib/playwright_api/android_device.rb +8 -8
  34. data/lib/playwright_api/browser.rb +7 -7
  35. data/lib/playwright_api/browser_context.rb +7 -7
  36. data/lib/playwright_api/browser_type.rb +9 -8
  37. data/lib/playwright_api/cdp_session.rb +30 -8
  38. data/lib/playwright_api/console_message.rb +6 -6
  39. data/lib/playwright_api/dialog.rb +6 -6
  40. data/lib/playwright_api/element_handle.rb +17 -11
  41. data/lib/playwright_api/frame.rb +20 -9
  42. data/lib/playwright_api/js_handle.rb +6 -6
  43. data/lib/playwright_api/page.rb +28 -17
  44. data/lib/playwright_api/playwright.rb +6 -6
  45. data/lib/playwright_api/request.rb +6 -6
  46. data/lib/playwright_api/response.rb +15 -10
  47. data/lib/playwright_api/route.rb +11 -6
  48. data/lib/playwright_api/selectors.rb +6 -6
  49. data/lib/playwright_api/web_socket.rb +28 -6
  50. data/lib/playwright_api/worker.rb +6 -6
  51. data/playwright.gemspec +2 -1
  52. metadata +37 -18
@@ -50,7 +50,7 @@ module Playwright
50
50
  #
51
51
  # Returns the newly created browser session.
52
52
  def new_browser_cdp_session
53
- raise NotImplementedError.new('new_browser_cdp_session is not implemented yet.')
53
+ wrap_impl(@impl.new_browser_cdp_session)
54
54
  end
55
55
 
56
56
  # Creates a new browser context. It won't share cookies/cache with other browser contexts.
@@ -158,20 +158,20 @@ module Playwright
158
158
 
159
159
  # -- inherited from EventEmitter --
160
160
  # @nodoc
161
- def once(event, callback)
162
- event_emitter_proxy.once(event, callback)
161
+ def off(event, callback)
162
+ event_emitter_proxy.off(event, callback)
163
163
  end
164
164
 
165
165
  # -- inherited from EventEmitter --
166
166
  # @nodoc
167
- def on(event, callback)
168
- event_emitter_proxy.on(event, callback)
167
+ def once(event, callback)
168
+ event_emitter_proxy.once(event, callback)
169
169
  end
170
170
 
171
171
  # -- inherited from EventEmitter --
172
172
  # @nodoc
173
- def off(event, callback)
174
- event_emitter_proxy.off(event, callback)
173
+ def on(event, callback)
174
+ event_emitter_proxy.on(event, callback)
175
175
  end
176
176
 
177
177
  private def event_emitter_proxy
@@ -204,7 +204,7 @@ module Playwright
204
204
  #
205
205
  # Returns the newly created session.
206
206
  def new_cdp_session(page)
207
- raise NotImplementedError.new('new_cdp_session is not implemented yet.')
207
+ wrap_impl(@impl.new_cdp_session(unwrap_impl(page)))
208
208
  end
209
209
 
210
210
  # Creates a new page in the browser context.
@@ -384,20 +384,20 @@ module Playwright
384
384
 
385
385
  # -- inherited from EventEmitter --
386
386
  # @nodoc
387
- def once(event, callback)
388
- event_emitter_proxy.once(event, callback)
387
+ def off(event, callback)
388
+ event_emitter_proxy.off(event, callback)
389
389
  end
390
390
 
391
391
  # -- inherited from EventEmitter --
392
392
  # @nodoc
393
- def on(event, callback)
394
- event_emitter_proxy.on(event, callback)
393
+ def once(event, callback)
394
+ event_emitter_proxy.once(event, callback)
395
395
  end
396
396
 
397
397
  # -- inherited from EventEmitter --
398
398
  # @nodoc
399
- def off(event, callback)
400
- event_emitter_proxy.off(event, callback)
399
+ def on(event, callback)
400
+ event_emitter_proxy.on(event, callback)
401
401
  end
402
402
 
403
403
  private def event_emitter_proxy
@@ -133,8 +133,9 @@ module Playwright
133
133
  timezoneId: nil,
134
134
  tracesDir: nil,
135
135
  userAgent: nil,
136
- viewport: nil)
137
- raise NotImplementedError.new('launch_persistent_context is not implemented yet.')
136
+ viewport: nil,
137
+ &block)
138
+ wrap_impl(@impl.launch_persistent_context(unwrap_impl(userDataDir), acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), bypassCSP: unwrap_impl(bypassCSP), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), hasTouch: unwrap_impl(hasTouch), headless: unwrap_impl(headless), httpCredentials: unwrap_impl(httpCredentials), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), slowMo: unwrap_impl(slowMo), timeout: unwrap_impl(timeout), timezoneId: unwrap_impl(timezoneId), tracesDir: unwrap_impl(tracesDir), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
138
139
  end
139
140
 
140
141
  # Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
@@ -144,20 +145,20 @@ module Playwright
144
145
 
145
146
  # -- inherited from EventEmitter --
146
147
  # @nodoc
147
- def once(event, callback)
148
- event_emitter_proxy.once(event, callback)
148
+ def off(event, callback)
149
+ event_emitter_proxy.off(event, callback)
149
150
  end
150
151
 
151
152
  # -- inherited from EventEmitter --
152
153
  # @nodoc
153
- def on(event, callback)
154
- event_emitter_proxy.on(event, callback)
154
+ def once(event, callback)
155
+ event_emitter_proxy.once(event, callback)
155
156
  end
156
157
 
157
158
  # -- inherited from EventEmitter --
158
159
  # @nodoc
159
- def off(event, callback)
160
- event_emitter_proxy.off(event, callback)
160
+ def on(event, callback)
161
+ event_emitter_proxy.on(event, callback)
161
162
  end
162
163
 
163
164
  private def event_emitter_proxy
@@ -13,12 +13,12 @@ module Playwright
13
13
  #
14
14
  # ```python sync
15
15
  # client = page.context().new_cdp_session(page)
16
- # client.send("animation.enable")
17
- # client.on("animation.animation_created", lambda: print("animation created!"))
18
- # response = client.send("animation.get_playback_rate")
19
- # print("playback rate is " + response["playback_rate"])
20
- # client.send("animation.set_playback_rate", {
21
- # playback_rate: response["playback_rate"] / 2
16
+ # client.send("Animation.enable")
17
+ # client.on("Animation.animationCreated", lambda: print("animation created!"))
18
+ # response = client.send("Animation.getPlaybackRate")
19
+ # print("playback rate is " + str(response["playbackRate"]))
20
+ # client.send("Animation.setPlaybackRate", {
21
+ # playbackRate: response["playbackRate"] / 2
22
22
  # })
23
23
  # ```
24
24
  class CDPSession < PlaywrightApi
@@ -26,11 +26,33 @@ module Playwright
26
26
  # Detaches the CDPSession from the target. Once detached, the CDPSession object won't emit any events and can't be used to
27
27
  # send messages.
28
28
  def detach
29
- raise NotImplementedError.new('detach is not implemented yet.')
29
+ wrap_impl(@impl.detach)
30
30
  end
31
31
 
32
32
  def send_message(method, params: nil)
33
- raise NotImplementedError.new('send_message is not implemented yet.')
33
+ wrap_impl(@impl.send_message(unwrap_impl(method), params: unwrap_impl(params)))
34
+ end
35
+
36
+ # -- inherited from EventEmitter --
37
+ # @nodoc
38
+ def off(event, callback)
39
+ event_emitter_proxy.off(event, callback)
40
+ end
41
+
42
+ # -- inherited from EventEmitter --
43
+ # @nodoc
44
+ def once(event, callback)
45
+ event_emitter_proxy.once(event, callback)
46
+ end
47
+
48
+ # -- inherited from EventEmitter --
49
+ # @nodoc
50
+ def on(event, callback)
51
+ event_emitter_proxy.on(event, callback)
52
+ end
53
+
54
+ private def event_emitter_proxy
55
+ @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
34
56
  end
35
57
  end
36
58
  end
@@ -25,20 +25,20 @@ module Playwright
25
25
 
26
26
  # -- inherited from EventEmitter --
27
27
  # @nodoc
28
- def once(event, callback)
29
- event_emitter_proxy.once(event, callback)
28
+ def off(event, callback)
29
+ event_emitter_proxy.off(event, callback)
30
30
  end
31
31
 
32
32
  # -- inherited from EventEmitter --
33
33
  # @nodoc
34
- def on(event, callback)
35
- event_emitter_proxy.on(event, callback)
34
+ def once(event, callback)
35
+ event_emitter_proxy.once(event, callback)
36
36
  end
37
37
 
38
38
  # -- inherited from EventEmitter --
39
39
  # @nodoc
40
- def off(event, callback)
41
- event_emitter_proxy.off(event, callback)
40
+ def on(event, callback)
41
+ event_emitter_proxy.on(event, callback)
42
42
  end
43
43
 
44
44
  private def event_emitter_proxy
@@ -60,20 +60,20 @@ module Playwright
60
60
 
61
61
  # -- inherited from EventEmitter --
62
62
  # @nodoc
63
- def once(event, callback)
64
- event_emitter_proxy.once(event, callback)
63
+ def off(event, callback)
64
+ event_emitter_proxy.off(event, callback)
65
65
  end
66
66
 
67
67
  # -- inherited from EventEmitter --
68
68
  # @nodoc
69
- def on(event, callback)
70
- event_emitter_proxy.on(event, callback)
69
+ def once(event, callback)
70
+ event_emitter_proxy.once(event, callback)
71
71
  end
72
72
 
73
73
  # -- inherited from EventEmitter --
74
74
  # @nodoc
75
- def off(event, callback)
76
- event_emitter_proxy.off(event, callback)
75
+ def on(event, callback)
76
+ event_emitter_proxy.on(event, callback)
77
77
  end
78
78
 
79
79
  private def event_emitter_proxy
@@ -210,8 +210,8 @@ module Playwright
210
210
  # instead.
211
211
  #
212
212
  # To send fine-grained keyboard events, use [`method: ElementHandle.type`].
213
- def fill(value, noWaitAfter: nil, timeout: nil)
214
- wrap_impl(@impl.fill(unwrap_impl(value), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
213
+ def fill(value, force: nil, noWaitAfter: nil, timeout: nil)
214
+ wrap_impl(@impl.fill(unwrap_impl(value), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
215
215
  end
216
216
 
217
217
  # Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element.
@@ -254,6 +254,11 @@ module Playwright
254
254
  wrap_impl(@impl.inner_text)
255
255
  end
256
256
 
257
+ # Returns `input.value` for `<input>` or `<textarea>` element. Throws for non-input elements.
258
+ def input_value(timeout: nil)
259
+ wrap_impl(@impl.input_value(timeout: unwrap_impl(timeout)))
260
+ end
261
+
257
262
  # Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
258
263
  def checked?
259
264
  wrap_impl(@impl.checked?)
@@ -381,15 +386,16 @@ module Playwright
381
386
  index: nil,
382
387
  value: nil,
383
388
  label: nil,
389
+ force: nil,
384
390
  noWaitAfter: nil,
385
391
  timeout: nil)
386
- wrap_impl(@impl.select_option(element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
392
+ 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)))
387
393
  end
388
394
 
389
395
  # This method waits for [actionability](./actionability.md) checks, then focuses the element and selects all its text
390
396
  # content.
391
- def select_text(timeout: nil)
392
- wrap_impl(@impl.select_text(timeout: unwrap_impl(timeout)))
397
+ def select_text(force: nil, timeout: nil)
398
+ wrap_impl(@impl.select_text(force: unwrap_impl(force), timeout: unwrap_impl(timeout)))
393
399
  end
394
400
 
395
401
  # This method expects `elementHandle` to point to an
@@ -511,20 +517,20 @@ module Playwright
511
517
 
512
518
  # -- inherited from EventEmitter --
513
519
  # @nodoc
514
- def once(event, callback)
515
- event_emitter_proxy.once(event, callback)
520
+ def off(event, callback)
521
+ event_emitter_proxy.off(event, callback)
516
522
  end
517
523
 
518
524
  # -- inherited from EventEmitter --
519
525
  # @nodoc
520
- def on(event, callback)
521
- event_emitter_proxy.on(event, callback)
526
+ def once(event, callback)
527
+ event_emitter_proxy.once(event, callback)
522
528
  end
523
529
 
524
530
  # -- inherited from EventEmitter --
525
531
  # @nodoc
526
- def off(event, callback)
527
- event_emitter_proxy.off(event, callback)
532
+ def on(event, callback)
533
+ event_emitter_proxy.on(event, callback)
528
534
  end
529
535
 
530
536
  private def event_emitter_proxy
@@ -271,8 +271,13 @@ module Playwright
271
271
  # instead.
272
272
  #
273
273
  # To send fine-grained keyboard events, use [`method: Frame.type`].
274
- def fill(selector, value, noWaitAfter: nil, timeout: nil)
275
- wrap_impl(@impl.fill(unwrap_impl(selector), unwrap_impl(value), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
274
+ def fill(
275
+ selector,
276
+ value,
277
+ force: nil,
278
+ noWaitAfter: nil,
279
+ timeout: nil)
280
+ wrap_impl(@impl.fill(unwrap_impl(selector), unwrap_impl(value), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
276
281
  end
277
282
 
278
283
  # This method fetches an element with `selector` and focuses it. If there's no element matching `selector`, the method
@@ -354,6 +359,11 @@ module Playwright
354
359
  wrap_impl(@impl.inner_text(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
355
360
  end
356
361
 
362
+ # Returns `input.value` for the selected `<input>` or `<textarea>` element. Throws for non-input elements.
363
+ def input_value(selector, timeout: nil)
364
+ wrap_impl(@impl.input_value(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
365
+ end
366
+
357
367
  # Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
358
368
  def checked?(selector, timeout: nil)
359
369
  wrap_impl(@impl.checked?(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
@@ -476,9 +486,10 @@ module Playwright
476
486
  index: nil,
477
487
  value: nil,
478
488
  label: nil,
489
+ force: nil,
479
490
  noWaitAfter: nil,
480
491
  timeout: nil)
481
- wrap_impl(@impl.select_option(unwrap_impl(selector), element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
492
+ wrap_impl(@impl.select_option(unwrap_impl(selector), 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)))
482
493
  end
483
494
 
484
495
  def set_content(html, timeout: nil, waitUntil: nil)
@@ -689,20 +700,20 @@ module Playwright
689
700
 
690
701
  # -- inherited from EventEmitter --
691
702
  # @nodoc
692
- def once(event, callback)
693
- event_emitter_proxy.once(event, callback)
703
+ def off(event, callback)
704
+ event_emitter_proxy.off(event, callback)
694
705
  end
695
706
 
696
707
  # -- inherited from EventEmitter --
697
708
  # @nodoc
698
- def on(event, callback)
699
- event_emitter_proxy.on(event, callback)
709
+ def once(event, callback)
710
+ event_emitter_proxy.once(event, callback)
700
711
  end
701
712
 
702
713
  # -- inherited from EventEmitter --
703
714
  # @nodoc
704
- def off(event, callback)
705
- event_emitter_proxy.off(event, callback)
715
+ def on(event, callback)
716
+ event_emitter_proxy.on(event, callback)
706
717
  end
707
718
 
708
719
  private def event_emitter_proxy
@@ -90,20 +90,20 @@ module Playwright
90
90
 
91
91
  # -- inherited from EventEmitter --
92
92
  # @nodoc
93
- def once(event, callback)
94
- event_emitter_proxy.once(event, callback)
93
+ def off(event, callback)
94
+ event_emitter_proxy.off(event, callback)
95
95
  end
96
96
 
97
97
  # -- inherited from EventEmitter --
98
98
  # @nodoc
99
- def on(event, callback)
100
- event_emitter_proxy.on(event, callback)
99
+ def once(event, callback)
100
+ event_emitter_proxy.once(event, callback)
101
101
  end
102
102
 
103
103
  # -- inherited from EventEmitter --
104
104
  # @nodoc
105
- def off(event, callback)
106
- event_emitter_proxy.off(event, callback)
105
+ def on(event, callback)
106
+ event_emitter_proxy.on(event, callback)
107
107
  end
108
108
 
109
109
  private def event_emitter_proxy
@@ -481,8 +481,13 @@ module Playwright
481
481
  # To send fine-grained keyboard events, use [`method: Page.type`].
482
482
  #
483
483
  # Shortcut for main frame's [`method: Frame.fill`].
484
- def fill(selector, value, noWaitAfter: nil, timeout: nil)
485
- wrap_impl(@impl.fill(unwrap_impl(selector), unwrap_impl(value), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
484
+ def fill(
485
+ selector,
486
+ value,
487
+ force: nil,
488
+ noWaitAfter: nil,
489
+ timeout: nil)
490
+ wrap_impl(@impl.fill(unwrap_impl(selector), unwrap_impl(value), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
486
491
  end
487
492
 
488
493
  # This method fetches an element with `selector` and focuses it. If there's no element matching `selector`, the method
@@ -588,6 +593,11 @@ module Playwright
588
593
  wrap_impl(@impl.inner_text(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
589
594
  end
590
595
 
596
+ # Returns `input.value` for the selected `<input>` or `<textarea>` element. Throws for non-input elements.
597
+ def input_value(selector, timeout: nil)
598
+ wrap_impl(@impl.input_value(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
599
+ end
600
+
591
601
  # Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
592
602
  def checked?(selector, timeout: nil)
593
603
  wrap_impl(@impl.checked?(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
@@ -855,9 +865,10 @@ module Playwright
855
865
  index: nil,
856
866
  value: nil,
857
867
  label: nil,
868
+ force: nil,
858
869
  noWaitAfter: nil,
859
870
  timeout: nil)
860
- wrap_impl(@impl.select_option(unwrap_impl(selector), element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
871
+ wrap_impl(@impl.select_option(unwrap_impl(selector), 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)))
861
872
  end
862
873
 
863
874
  def set_content(html, timeout: nil, waitUntil: nil)
@@ -1158,8 +1169,8 @@ module Playwright
1158
1169
  # Performs action and waits for a `Request` to finish loading. If predicate is provided, it passes `Request` value into
1159
1170
  # the `predicate` function and waits for `predicate(request)` to return a truthy value. Will throw an error if the page is
1160
1171
  # closed before the [`event: Page.requestFinished`] event is fired.
1161
- def expect_request_finished(predicate: nil, timeout: nil)
1162
- raise NotImplementedError.new('expect_request_finished is not implemented yet.')
1172
+ def expect_request_finished(predicate: nil, timeout: nil, &block)
1173
+ wrap_impl(@impl.expect_request_finished(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
1163
1174
  end
1164
1175
 
1165
1176
  # Returns the matched response. See [waiting for event](./events.md#waiting-for-event) for more details about events.
@@ -1239,8 +1250,8 @@ module Playwright
1239
1250
  # Performs action and waits for a new `WebSocket`. If predicate is provided, it passes `WebSocket` value into the
1240
1251
  # `predicate` function and waits for `predicate(webSocket)` to return a truthy value. Will throw an error if the page is
1241
1252
  # closed before the WebSocket event is fired.
1242
- def expect_websocket(predicate: nil, timeout: nil)
1243
- raise NotImplementedError.new('expect_websocket is not implemented yet.')
1253
+ def expect_websocket(predicate: nil, timeout: nil, &block)
1254
+ wrap_impl(@impl.expect_websocket(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
1244
1255
  end
1245
1256
 
1246
1257
  # Performs action and waits for a new `Worker`. If predicate is provided, it passes `Worker` value into the `predicate`
@@ -1277,6 +1288,11 @@ module Playwright
1277
1288
  wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1278
1289
  end
1279
1290
 
1291
+ # @nodoc
1292
+ def stop_js_coverage
1293
+ wrap_impl(@impl.stop_js_coverage)
1294
+ end
1295
+
1280
1296
  # @nodoc
1281
1297
  def start_css_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1282
1298
  wrap_impl(@impl.start_css_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
@@ -1288,13 +1304,14 @@ module Playwright
1288
1304
  end
1289
1305
 
1290
1306
  # @nodoc
1291
- def stop_js_coverage
1292
- wrap_impl(@impl.stop_js_coverage)
1307
+ def guid
1308
+ wrap_impl(@impl.guid)
1293
1309
  end
1294
1310
 
1311
+ # -- inherited from EventEmitter --
1295
1312
  # @nodoc
1296
- def guid
1297
- wrap_impl(@impl.guid)
1313
+ def off(event, callback)
1314
+ event_emitter_proxy.off(event, callback)
1298
1315
  end
1299
1316
 
1300
1317
  # -- inherited from EventEmitter --
@@ -1309,12 +1326,6 @@ module Playwright
1309
1326
  event_emitter_proxy.on(event, callback)
1310
1327
  end
1311
1328
 
1312
- # -- inherited from EventEmitter --
1313
- # @nodoc
1314
- def off(event, callback)
1315
- event_emitter_proxy.off(event, callback)
1316
- end
1317
-
1318
1329
  private def event_emitter_proxy
1319
1330
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
1320
1331
  end