playwright-ruby-client 0.6.1 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/browser.md +4 -1
  3. data/documentation/docs/api/browser_context.md +3 -4
  4. data/documentation/docs/api/browser_type.md +54 -1
  5. data/documentation/docs/api/dialog.md +15 -18
  6. data/documentation/docs/api/element_handle.md +28 -50
  7. data/documentation/docs/api/experimental/android.md +3 -2
  8. data/documentation/docs/api/experimental/android_device.md +1 -0
  9. data/documentation/docs/api/file_chooser.md +4 -5
  10. data/documentation/docs/api/frame.md +3 -4
  11. data/documentation/docs/api/js_handle.md +11 -14
  12. data/documentation/docs/api/page.md +163 -230
  13. data/documentation/docs/api/route.md +20 -21
  14. data/documentation/docs/api/tracing.md +8 -15
  15. data/documentation/docs/api/web_socket.md +1 -1
  16. data/documentation/docs/api/worker.md +18 -1
  17. data/documentation/docs/article/guides/rails_integration.md +156 -2
  18. data/documentation/docs/article/guides/recording_video.md +79 -0
  19. data/documentation/docs/include/api_coverage.md +5 -4
  20. data/documentation/package.json +1 -1
  21. data/documentation/yarn.lock +478 -498
  22. data/lib/playwright/channel_owners/binding_call.rb +1 -1
  23. data/lib/playwright/channel_owners/browser.rb +15 -27
  24. data/lib/playwright/channel_owners/browser_context.rb +13 -5
  25. data/lib/playwright/channel_owners/browser_type.rb +23 -8
  26. data/lib/playwright/channel_owners/page.rb +8 -7
  27. data/lib/playwright/channel_owners/web_socket.rb +4 -0
  28. data/lib/playwright/channel_owners/worker.rb +4 -0
  29. data/lib/playwright/playwright_api.rb +16 -1
  30. data/lib/playwright/tracing_impl.rb +9 -9
  31. data/lib/playwright/version.rb +1 -1
  32. data/lib/playwright_api/android.rb +9 -8
  33. data/lib/playwright_api/android_device.rb +8 -7
  34. data/lib/playwright_api/browser.rb +12 -9
  35. data/lib/playwright_api/browser_context.rb +13 -14
  36. data/lib/playwright_api/browser_type.rb +13 -11
  37. data/lib/playwright_api/console_message.rb +6 -6
  38. data/lib/playwright_api/dialog.rb +6 -6
  39. data/lib/playwright_api/element_handle.rb +6 -6
  40. data/lib/playwright_api/frame.rb +6 -6
  41. data/lib/playwright_api/js_handle.rb +6 -6
  42. data/lib/playwright_api/page.rb +38 -24
  43. data/lib/playwright_api/playwright.rb +6 -6
  44. data/lib/playwright_api/request.rb +6 -6
  45. data/lib/playwright_api/response.rb +8 -8
  46. data/lib/playwright_api/route.rb +6 -6
  47. data/lib/playwright_api/selectors.rb +6 -6
  48. data/lib/playwright_api/tracing.rb +6 -12
  49. data/lib/playwright_api/web_socket.rb +22 -0
  50. data/lib/playwright_api/worker.rb +22 -0
  51. metadata +5 -2
@@ -30,7 +30,7 @@ module Playwright
30
30
  end
31
31
 
32
32
  begin
33
- result = callback.call(source, *args)
33
+ result = PlaywrightApi.unwrap(callback.call(source, *args))
34
34
  @channel.send_message_to_server('resolve', result: JavaScript::ValueSerializer.new(result).serialize)
35
35
  rescue => err
36
36
  @channel.send_message_to_server('reject', error: { error: { message: err.message, name: 'Error' }})
@@ -7,7 +7,7 @@ module Playwright
7
7
  private def after_initialize
8
8
  @connected = true
9
9
  @closed_or_closing = false
10
- @remote = true
10
+ @remote = false
11
11
 
12
12
  @contexts = Set.new
13
13
  @channel.on('close', method(:on_close))
@@ -30,36 +30,32 @@ module Playwright
30
30
  @contexts << context
31
31
  context.browser = self
32
32
  context.options = params
33
+ return context unless block
33
34
 
34
- if block
35
- begin
36
- block.call(context)
37
- ensure
38
- context.close
39
- end
40
- else
41
- context
35
+ begin
36
+ block.call(context)
37
+ ensure
38
+ context.close
42
39
  end
43
40
  end
44
41
 
45
- def new_page(**options)
42
+ def new_page(**options, &block)
46
43
  context = new_context(**options)
47
44
  page = context.new_page
48
45
  page.owned_context = context
49
46
  context.owner_page = page
50
- page
47
+
48
+ return page unless block
49
+
50
+ begin
51
+ block.call(page)
52
+ ensure
53
+ page.close
54
+ end
51
55
  end
52
56
 
53
57
  def close
54
58
  return if @closed_or_closing
55
- if @remote
56
- @contexts.each do |context|
57
- context.pages.each do |page|
58
- page.send(:on_close)
59
- end
60
- context.send(:on_close)
61
- end
62
- end
63
59
  @closed_or_closing = true
64
60
  @channel.send_message_to_server('close')
65
61
  nil
@@ -89,14 +85,6 @@ module Playwright
89
85
 
90
86
  private def on_close(_ = {})
91
87
  @connected = false
92
- if @remote
93
- @contexts.each do |context|
94
- context.pages.each do |page|
95
- page.send(:on_close)
96
- end
97
- context.send(:on_close)
98
- end
99
- end
100
88
  emit(Events::Browser::Disconnected, self)
101
89
  @closed_or_closing = true
102
90
  end
@@ -46,6 +46,8 @@ module Playwright
46
46
  ChannelOwners::Request.from_nullable(params['page']),
47
47
  )
48
48
  })
49
+
50
+ @closed_promise = Concurrent::Promises.resolvable_future
49
51
  end
50
52
 
51
53
  private def on_page(page)
@@ -111,10 +113,17 @@ module Playwright
111
113
  end
112
114
 
113
115
  # @returns [Playwright::Page]
114
- def new_page
116
+ def new_page(&block)
115
117
  raise 'Please use browser.new_context' if @owner_page
116
118
  resp = @channel.send_message_to_server('newPage')
117
- ChannelOwners::Page.from(resp)
119
+ page = ChannelOwners::Page.from(resp)
120
+ return page unless block
121
+
122
+ begin
123
+ block.call(page)
124
+ ensure
125
+ page.close
126
+ end
118
127
  end
119
128
 
120
129
  def cookies(urls: nil)
@@ -223,15 +232,14 @@ module Playwright
223
232
  end
224
233
 
225
234
  private def on_close
226
- @closed_or_closing = true
227
235
  @browser&.send(:remove_context, self)
228
236
  emit(Events::BrowserContext::Close)
237
+ @closed_promise.fulfill(true)
229
238
  end
230
239
 
231
240
  def close
232
- return if @closed_or_closing
233
- @closed_or_closing = true
234
241
  @channel.send_message_to_server('close')
242
+ @closed_promise.value!
235
243
  nil
236
244
  rescue => err
237
245
  raise unless safe_close_error?(err)
@@ -1,5 +1,7 @@
1
1
  module Playwright
2
2
  define_channel_owner :BrowserType do
3
+ include Utils::PrepareBrowserContextOptions
4
+
3
5
  def name
4
6
  @initializer['name']
5
7
  end
@@ -11,15 +13,28 @@ module Playwright
11
13
  def launch(options, &block)
12
14
  resp = @channel.send_message_to_server('launch', options.compact)
13
15
  browser = ChannelOwners::Browser.from(resp)
16
+ return browser unless block
14
17
 
15
- if block
16
- begin
17
- block.call(browser)
18
- ensure
19
- browser.close
20
- end
21
- else
22
- browser
18
+ begin
19
+ block.call(browser)
20
+ ensure
21
+ browser.close
22
+ end
23
+ end
24
+
25
+ def launch_persistent_context(userDataDir, **options, &block)
26
+ params = options.dup
27
+ prepare_browser_context_options(params)
28
+ params['userDataDir'] = userDataDir
29
+
30
+ resp = @channel.send_message_to_server('launchPersistentContext', params.compact)
31
+ context = ChannelOwners::Browser.from(resp)
32
+ return context unless block
33
+
34
+ begin
35
+ block.call(context)
36
+ ensure
37
+ context.close
23
38
  end
24
39
  end
25
40
 
@@ -65,7 +65,8 @@ module Playwright
65
65
  emit(Events::Page::WebSocket, ChannelOwners::WebSocket.from(params['webSocket']))
66
66
  })
67
67
  @channel.on('worker', ->(params) {
68
- on_worker(ChannelOwners::Worker.from(params['worker']))
68
+ worker = ChannelOwners::Worker.from(params['worker'])
69
+ # on_worker(worker)
69
70
  })
70
71
  end
71
72
 
@@ -339,10 +340,11 @@ module Playwright
339
340
  ChannelOwners::Response.from_nullable(resp)
340
341
  end
341
342
 
342
- def emulate_media(colorScheme: nil, media: nil)
343
+ def emulate_media(colorScheme: nil, media: nil, reducedMotion: nil)
343
344
  params = {
344
345
  colorScheme: colorScheme,
345
346
  media: media,
347
+ reducedMotion: reducedMotion,
346
348
  }.compact
347
349
  @channel.send_message_to_server('emulateMedia', params)
348
350
 
@@ -713,7 +715,6 @@ module Playwright
713
715
  end
714
716
 
715
717
  wait_helper.wait_for_event(self, event, predicate: predicate)
716
-
717
718
  block&.call
718
719
 
719
720
  wait_helper.promise.value!
@@ -743,7 +744,7 @@ module Playwright
743
744
  expect_event(Events::Page::Popup, predicate: predicate, timeout: timeout, &block)
744
745
  end
745
746
 
746
- def expect_request(urlOrPredicate, timeout: nil)
747
+ def expect_request(urlOrPredicate, timeout: nil, &block)
747
748
  predicate =
748
749
  case urlOrPredicate
749
750
  when String, Regexp
@@ -755,10 +756,10 @@ module Playwright
755
756
  -> (_) { true }
756
757
  end
757
758
 
758
- expect_event(Events::Page::Request, predicate: predicate, timeout: timeout)
759
+ expect_event(Events::Page::Request, predicate: predicate, timeout: timeout, &block)
759
760
  end
760
761
 
761
- def expect_response(urlOrPredicate, timeout: nil)
762
+ def expect_response(urlOrPredicate, timeout: nil, &block)
762
763
  predicate =
763
764
  case urlOrPredicate
764
765
  when String, Regexp
@@ -770,7 +771,7 @@ module Playwright
770
771
  -> (_) { true }
771
772
  end
772
773
 
773
- expect_event(Events::Page::Response, predicate: predicate, timeout: timeout)
774
+ expect_event(Events::Page::Response, predicate: predicate, timeout: timeout, &block)
774
775
  end
775
776
 
776
777
  # called from Frame with send(:timeout_settings)
@@ -0,0 +1,4 @@
1
+ module Playwright
2
+ define_channel_owner :WebSocket do
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Playwright
2
+ define_channel_owner :Worker do
3
+ end
4
+ end
@@ -18,6 +18,17 @@ module Playwright
18
18
  end
19
19
  end
20
20
 
21
+ # Unwrap ChannelOwner / ApiImplementation.
22
+ # @note Intended for internal use only.
23
+ def self.unwrap(api)
24
+ case api
25
+ when PlaywrightApi
26
+ api.instance_variable_get(:@impl)
27
+ else
28
+ api
29
+ end
30
+ end
31
+
21
32
  class ChannelOwnerWrapper
22
33
  def initialize(impl)
23
34
  impl_class_name = impl.class.name
@@ -114,6 +125,8 @@ module Playwright
114
125
  private def wrap_impl(object)
115
126
  if object.is_a?(Array)
116
127
  object.map { |obj| wrap_impl(obj) }
128
+ elsif object.is_a?(Hash)
129
+ object.map { |key, obj| [key, wrap_impl(obj)] }.to_h
117
130
  else
118
131
  ::Playwright::PlaywrightApi.wrap(object)
119
132
  end
@@ -122,8 +135,10 @@ module Playwright
122
135
  private def unwrap_impl(object)
123
136
  if object.is_a?(Array)
124
137
  object.map { |obj| unwrap_impl(obj) }
138
+ elsif object.is_a?(Hash)
139
+ object.map { |key, obj| [key, unwrap_impl(obj)] }.to_h
125
140
  elsif object.is_a?(PlaywrightApi)
126
- object.instance_variable_get(:@impl)
141
+ ::Playwright::PlaywrightApi.unwrap(object)
127
142
  else
128
143
  object
129
144
  end
@@ -15,17 +15,17 @@ module Playwright
15
15
  end
16
16
 
17
17
  # Stop tracing.
18
- def stop
18
+ def stop(path: nil)
19
19
  @channel.send_message_to_server('tracingStop')
20
- end
21
20
 
22
- def export(path)
23
- resp = @channel.send_message_to_server('tracingExport')
24
- artifact = ChannelOwners::Artifact.from(resp)
25
- # if self._context._browser:
26
- # artifact._is_remote = self._context._browser._is_remote
27
- artifact.save_as(path)
28
- artifact.delete
21
+ if path
22
+ resp = @channel.send_message_to_server('tracingExport')
23
+ artifact = ChannelOwners::Artifact.from(resp)
24
+ # if self._context._browser:
25
+ # artifact._is_remote = self._context._browser._is_remote
26
+ artifact.save_as(path)
27
+ artifact.delete
28
+ end
29
29
  end
30
30
  end
31
31
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '0.6.1'
4
+ VERSION = '0.6.6'
5
5
  COMPATIBLE_PLAYWRIGHT_VERSION = '1.12.0'
6
6
  end
@@ -1,12 +1,13 @@
1
1
  module Playwright
2
- # Playwright has **experimental** support for Android automation. You can access android namespace via:
2
+ # Playwright has **experimental** support for Android automation. See [here](./mobile.md) for more information. You can
3
+ # access android namespace via:
3
4
  #
4
5
  # An example of the Android automation script would be:
5
6
  #
6
7
  # Note that since you don't need Playwright to install web browsers when testing Android, you can omit browser download
7
8
  # via setting the following environment variable when installing Playwright:
8
9
  #
9
- # ```sh js
10
+ # ```bash js
10
11
  # PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
11
12
  # ```
12
13
  class Android < PlaywrightApi
@@ -24,20 +25,20 @@ module Playwright
24
25
 
25
26
  # -- inherited from EventEmitter --
26
27
  # @nodoc
27
- def on(event, callback)
28
- event_emitter_proxy.on(event, callback)
28
+ def once(event, callback)
29
+ event_emitter_proxy.once(event, callback)
29
30
  end
30
31
 
31
32
  # -- inherited from EventEmitter --
32
33
  # @nodoc
33
- def off(event, callback)
34
- event_emitter_proxy.off(event, callback)
34
+ def on(event, callback)
35
+ event_emitter_proxy.on(event, callback)
35
36
  end
36
37
 
37
38
  # -- inherited from EventEmitter --
38
39
  # @nodoc
39
- def once(event, callback)
40
- event_emitter_proxy.once(event, callback)
40
+ def off(event, callback)
41
+ event_emitter_proxy.off(event, callback)
41
42
  end
42
43
 
43
44
  private def event_emitter_proxy
@@ -59,12 +59,13 @@ module Playwright
59
59
  record_har_path: nil,
60
60
  record_video_dir: nil,
61
61
  record_video_size: nil,
62
+ reducedMotion: nil,
62
63
  screen: nil,
63
64
  timezoneId: nil,
64
65
  userAgent: nil,
65
66
  viewport: nil,
66
67
  &block)
67
- wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), 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), 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), screen: unwrap_impl(screen), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
68
+ wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), 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), 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), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
68
69
  end
69
70
 
70
71
  # Performs a long tap on the widget defined by `selector`.
@@ -172,20 +173,20 @@ module Playwright
172
173
 
173
174
  # -- inherited from EventEmitter --
174
175
  # @nodoc
175
- def on(event, callback)
176
- event_emitter_proxy.on(event, callback)
176
+ def once(event, callback)
177
+ event_emitter_proxy.once(event, callback)
177
178
  end
178
179
 
179
180
  # -- inherited from EventEmitter --
180
181
  # @nodoc
181
- def off(event, callback)
182
- event_emitter_proxy.off(event, callback)
182
+ def on(event, callback)
183
+ event_emitter_proxy.on(event, callback)
183
184
  end
184
185
 
185
186
  # -- inherited from EventEmitter --
186
187
  # @nodoc
187
- def once(event, callback)
188
- event_emitter_proxy.once(event, callback)
188
+ def off(event, callback)
189
+ event_emitter_proxy.off(event, callback)
189
190
  end
190
191
 
191
192
  private def event_emitter_proxy
@@ -84,13 +84,14 @@ module Playwright
84
84
  record_har_path: nil,
85
85
  record_video_dir: nil,
86
86
  record_video_size: nil,
87
+ reducedMotion: nil,
87
88
  screen: nil,
88
89
  storageState: nil,
89
90
  timezoneId: nil,
90
91
  userAgent: nil,
91
92
  viewport: nil,
92
93
  &block)
93
- wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), 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), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
94
+ wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), 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), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
94
95
  end
95
96
 
96
97
  # Creates a new page in a new browser context. Closing this page will close the context as well.
@@ -119,12 +120,14 @@ module Playwright
119
120
  record_har_path: nil,
120
121
  record_video_dir: nil,
121
122
  record_video_size: nil,
123
+ reducedMotion: nil,
122
124
  screen: nil,
123
125
  storageState: nil,
124
126
  timezoneId: nil,
125
127
  userAgent: nil,
126
- viewport: nil)
127
- wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), 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), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport)))
128
+ viewport: nil,
129
+ &block)
130
+ wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), 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), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
128
131
  end
129
132
 
130
133
  # > NOTE: Tracing is only supported on Chromium-based browsers.
@@ -155,20 +158,20 @@ module Playwright
155
158
 
156
159
  # -- inherited from EventEmitter --
157
160
  # @nodoc
158
- def on(event, callback)
159
- event_emitter_proxy.on(event, callback)
161
+ def once(event, callback)
162
+ event_emitter_proxy.once(event, callback)
160
163
  end
161
164
 
162
165
  # -- inherited from EventEmitter --
163
166
  # @nodoc
164
- def off(event, callback)
165
- event_emitter_proxy.off(event, callback)
167
+ def on(event, callback)
168
+ event_emitter_proxy.on(event, callback)
166
169
  end
167
170
 
168
171
  # -- inherited from EventEmitter --
169
172
  # @nodoc
170
- def once(event, callback)
171
- event_emitter_proxy.once(event, callback)
173
+ def off(event, callback)
174
+ event_emitter_proxy.off(event, callback)
172
175
  end
173
176
 
174
177
  private def event_emitter_proxy