playwright-ruby-client 0.6.6 → 0.8.1

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -0
  3. data/documentation/docs/api/browser.md +18 -2
  4. data/documentation/docs/api/browser_context.md +10 -0
  5. data/documentation/docs/api/browser_type.md +1 -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/experimental/android_device.md +1 -0
  9. data/documentation/docs/api/frame.md +29 -1
  10. data/documentation/docs/api/keyboard.md +11 -20
  11. data/documentation/docs/api/page.md +48 -2
  12. data/documentation/docs/api/response.md +16 -0
  13. data/documentation/docs/api/web_socket.md +37 -0
  14. data/documentation/docs/article/guides/launch_browser.md +2 -0
  15. data/documentation/docs/article/guides/playwright_on_alpine_linux.md +91 -0
  16. data/documentation/docs/article/guides/rails_integration.md +1 -1
  17. data/documentation/docs/article/guides/semi_automation.md +71 -0
  18. data/documentation/docs/include/api_coverage.md +18 -11
  19. data/lib/playwright.rb +36 -3
  20. data/lib/playwright/channel_owners/artifact.rb +4 -0
  21. data/lib/playwright/channel_owners/browser.rb +5 -0
  22. data/lib/playwright/channel_owners/browser_context.rb +12 -3
  23. data/lib/playwright/channel_owners/cdp_session.rb +19 -0
  24. data/lib/playwright/channel_owners/element_handle.rb +11 -4
  25. data/lib/playwright/channel_owners/frame.rb +36 -4
  26. data/lib/playwright/channel_owners/page.rb +45 -16
  27. data/lib/playwright/channel_owners/response.rb +9 -1
  28. data/lib/playwright/channel_owners/web_socket.rb +83 -0
  29. data/lib/playwright/connection.rb +2 -4
  30. data/lib/playwright/download.rb +4 -0
  31. data/lib/playwright/route_handler_entry.rb +3 -2
  32. data/lib/playwright/transport.rb +0 -1
  33. data/lib/playwright/url_matcher.rb +12 -2
  34. data/lib/playwright/version.rb +2 -2
  35. data/lib/playwright/web_socket_client.rb +164 -0
  36. data/lib/playwright/web_socket_transport.rb +104 -0
  37. data/lib/playwright_api/android.rb +6 -6
  38. data/lib/playwright_api/android_device.rb +10 -9
  39. data/lib/playwright_api/browser.rb +17 -11
  40. data/lib/playwright_api/browser_context.rb +7 -7
  41. data/lib/playwright_api/browser_type.rb +8 -7
  42. data/lib/playwright_api/cdp_session.rb +30 -8
  43. data/lib/playwright_api/console_message.rb +6 -6
  44. data/lib/playwright_api/dialog.rb +6 -6
  45. data/lib/playwright_api/element_handle.rb +17 -11
  46. data/lib/playwright_api/frame.rb +30 -9
  47. data/lib/playwright_api/js_handle.rb +6 -6
  48. data/lib/playwright_api/page.rb +39 -18
  49. data/lib/playwright_api/playwright.rb +6 -6
  50. data/lib/playwright_api/request.rb +6 -6
  51. data/lib/playwright_api/response.rb +15 -10
  52. data/lib/playwright_api/route.rb +6 -6
  53. data/lib/playwright_api/selectors.rb +6 -6
  54. data/lib/playwright_api/web_socket.rb +12 -12
  55. data/lib/playwright_api/worker.rb +6 -6
  56. data/playwright.gemspec +2 -1
  57. metadata +37 -18
@@ -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
@@ -96,6 +96,7 @@ module Playwright
96
96
  userDataDir,
97
97
  acceptDownloads: nil,
98
98
  args: nil,
99
+ baseURL: nil,
99
100
  bypassCSP: nil,
100
101
  channel: nil,
101
102
  chromiumSandbox: nil,
@@ -135,7 +136,7 @@ module Playwright
135
136
  userAgent: nil,
136
137
  viewport: nil,
137
138
  &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)))
139
+ wrap_impl(@impl.launch_persistent_context(unwrap_impl(userDataDir), acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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)))
139
140
  end
140
141
 
141
142
  # Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
@@ -145,20 +146,20 @@ module Playwright
145
146
 
146
147
  # -- inherited from EventEmitter --
147
148
  # @nodoc
148
- def once(event, callback)
149
- event_emitter_proxy.once(event, callback)
149
+ def off(event, callback)
150
+ event_emitter_proxy.off(event, callback)
150
151
  end
151
152
 
152
153
  # -- inherited from EventEmitter --
153
154
  # @nodoc
154
- def on(event, callback)
155
- event_emitter_proxy.on(event, callback)
155
+ def once(event, callback)
156
+ event_emitter_proxy.once(event, callback)
156
157
  end
157
158
 
158
159
  # -- inherited from EventEmitter --
159
160
  # @nodoc
160
- def off(event, callback)
161
- event_emitter_proxy.off(event, callback)
161
+ def on(event, callback)
162
+ event_emitter_proxy.on(event, callback)
162
163
  end
163
164
 
164
165
  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
@@ -160,6 +160,16 @@ module Playwright
160
160
  wrap_impl(@impl.dispatch_event(unwrap_impl(selector), unwrap_impl(type), eventInit: unwrap_impl(eventInit), timeout: unwrap_impl(timeout)))
161
161
  end
162
162
 
163
+ def drag_and_drop(
164
+ source,
165
+ target,
166
+ force: nil,
167
+ noWaitAfter: nil,
168
+ timeout: nil,
169
+ trial: nil)
170
+ wrap_impl(@impl.drag_and_drop(unwrap_impl(source), unwrap_impl(target), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
171
+ end
172
+
163
173
  # Returns the return value of `expression`.
164
174
  #
165
175
  # The method finds an element matching the specified selector within the frame and passes it as a first argument to
@@ -271,8 +281,13 @@ module Playwright
271
281
  # instead.
272
282
  #
273
283
  # 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)))
284
+ def fill(
285
+ selector,
286
+ value,
287
+ force: nil,
288
+ noWaitAfter: nil,
289
+ timeout: nil)
290
+ wrap_impl(@impl.fill(unwrap_impl(selector), unwrap_impl(value), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
276
291
  end
277
292
 
278
293
  # This method fetches an element with `selector` and focuses it. If there's no element matching `selector`, the method
@@ -354,6 +369,11 @@ module Playwright
354
369
  wrap_impl(@impl.inner_text(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
355
370
  end
356
371
 
372
+ # Returns `input.value` for the selected `<input>` or `<textarea>` element. Throws for non-input elements.
373
+ def input_value(selector, timeout: nil)
374
+ wrap_impl(@impl.input_value(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
375
+ end
376
+
357
377
  # Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
358
378
  def checked?(selector, timeout: nil)
359
379
  wrap_impl(@impl.checked?(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
@@ -476,9 +496,10 @@ module Playwright
476
496
  index: nil,
477
497
  value: nil,
478
498
  label: nil,
499
+ force: nil,
479
500
  noWaitAfter: nil,
480
501
  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)))
502
+ 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
503
  end
483
504
 
484
505
  def set_content(html, timeout: nil, waitUntil: nil)
@@ -689,20 +710,20 @@ module Playwright
689
710
 
690
711
  # -- inherited from EventEmitter --
691
712
  # @nodoc
692
- def once(event, callback)
693
- event_emitter_proxy.once(event, callback)
713
+ def off(event, callback)
714
+ event_emitter_proxy.off(event, callback)
694
715
  end
695
716
 
696
717
  # -- inherited from EventEmitter --
697
718
  # @nodoc
698
- def on(event, callback)
699
- event_emitter_proxy.on(event, callback)
719
+ def once(event, callback)
720
+ event_emitter_proxy.once(event, callback)
700
721
  end
701
722
 
702
723
  # -- inherited from EventEmitter --
703
724
  # @nodoc
704
- def off(event, callback)
705
- event_emitter_proxy.off(event, callback)
725
+ def on(event, callback)
726
+ event_emitter_proxy.on(event, callback)
706
727
  end
707
728
 
708
729
  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
@@ -233,6 +233,16 @@ module Playwright
233
233
  wrap_impl(@impl.dispatch_event(unwrap_impl(selector), unwrap_impl(type), eventInit: unwrap_impl(eventInit), timeout: unwrap_impl(timeout)))
234
234
  end
235
235
 
236
+ def drag_and_drop(
237
+ source,
238
+ target,
239
+ force: nil,
240
+ noWaitAfter: nil,
241
+ timeout: nil,
242
+ trial: nil)
243
+ wrap_impl(@impl.drag_and_drop(unwrap_impl(source), unwrap_impl(target), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
244
+ end
245
+
236
246
  # This method changes the `CSS media type` through the `media` argument, and/or the `'prefers-colors-scheme'` media
237
247
  # feature, using the `colorScheme` argument.
238
248
  #
@@ -481,8 +491,13 @@ module Playwright
481
491
  # To send fine-grained keyboard events, use [`method: Page.type`].
482
492
  #
483
493
  # 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)))
494
+ def fill(
495
+ selector,
496
+ value,
497
+ force: nil,
498
+ noWaitAfter: nil,
499
+ timeout: nil)
500
+ wrap_impl(@impl.fill(unwrap_impl(selector), unwrap_impl(value), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
486
501
  end
487
502
 
488
503
  # This method fetches an element with `selector` and focuses it. If there's no element matching `selector`, the method
@@ -588,6 +603,11 @@ module Playwright
588
603
  wrap_impl(@impl.inner_text(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
589
604
  end
590
605
 
606
+ # Returns `input.value` for the selected `<input>` or `<textarea>` element. Throws for non-input elements.
607
+ def input_value(selector, timeout: nil)
608
+ wrap_impl(@impl.input_value(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
609
+ end
610
+
591
611
  # Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
592
612
  def checked?(selector, timeout: nil)
593
613
  wrap_impl(@impl.checked?(unwrap_impl(selector), timeout: unwrap_impl(timeout)))
@@ -855,9 +875,10 @@ module Playwright
855
875
  index: nil,
856
876
  value: nil,
857
877
  label: nil,
878
+ force: nil,
858
879
  noWaitAfter: nil,
859
880
  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)))
881
+ 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
882
  end
862
883
 
863
884
  def set_content(html, timeout: nil, waitUntil: nil)
@@ -1138,7 +1159,7 @@ module Playwright
1138
1159
  wrap_impl(@impl.expect_popup(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
1139
1160
  end
1140
1161
 
1141
- # Waits for the matching request and returns it. See [waiting for event](./events.md#waiting-for-event) for more details
1162
+ # Waits for the matching request and returns it. See [waiting for event](./events.md#waiting-for-event) for more details
1142
1163
  # about events.
1143
1164
  #
1144
1165
  # ```python sync
@@ -1158,8 +1179,8 @@ module Playwright
1158
1179
  # Performs action and waits for a `Request` to finish loading. If predicate is provided, it passes `Request` value into
1159
1180
  # the `predicate` function and waits for `predicate(request)` to return a truthy value. Will throw an error if the page is
1160
1181
  # 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.')
1182
+ def expect_request_finished(predicate: nil, timeout: nil, &block)
1183
+ wrap_impl(@impl.expect_request_finished(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
1163
1184
  end
1164
1185
 
1165
1186
  # Returns the matched response. See [waiting for event](./events.md#waiting-for-event) for more details about events.
@@ -1239,8 +1260,8 @@ module Playwright
1239
1260
  # Performs action and waits for a new `WebSocket`. If predicate is provided, it passes `WebSocket` value into the
1240
1261
  # `predicate` function and waits for `predicate(webSocket)` to return a truthy value. Will throw an error if the page is
1241
1262
  # 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.')
1263
+ def expect_websocket(predicate: nil, timeout: nil, &block)
1264
+ wrap_impl(@impl.expect_websocket(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
1244
1265
  end
1245
1266
 
1246
1267
  # Performs action and waits for a new `Worker`. If predicate is provided, it passes `Worker` value into the `predicate`
@@ -1272,6 +1293,11 @@ module Playwright
1272
1293
  wrap_impl(@impl.owned_context=(unwrap_impl(req)))
1273
1294
  end
1274
1295
 
1296
+ # @nodoc
1297
+ def start_js_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1298
+ wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1299
+ end
1300
+
1275
1301
  # @nodoc
1276
1302
  def stop_js_coverage
1277
1303
  wrap_impl(@impl.stop_js_coverage)
@@ -1288,13 +1314,14 @@ module Playwright
1288
1314
  end
1289
1315
 
1290
1316
  # @nodoc
1291
- def start_js_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1292
- wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1317
+ def guid
1318
+ wrap_impl(@impl.guid)
1293
1319
  end
1294
1320
 
1321
+ # -- inherited from EventEmitter --
1295
1322
  # @nodoc
1296
- def guid
1297
- wrap_impl(@impl.guid)
1323
+ def off(event, callback)
1324
+ event_emitter_proxy.off(event, callback)
1298
1325
  end
1299
1326
 
1300
1327
  # -- inherited from EventEmitter --
@@ -1309,12 +1336,6 @@ module Playwright
1309
1336
  event_emitter_proxy.on(event, callback)
1310
1337
  end
1311
1338
 
1312
- # -- inherited from EventEmitter --
1313
- # @nodoc
1314
- def off(event, callback)
1315
- event_emitter_proxy.off(event, callback)
1316
- end
1317
-
1318
1339
  private def event_emitter_proxy
1319
1340
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
1320
1341
  end