playwright-ruby-client 1.15.beta2 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/api_request_context.md +10 -0
  3. data/documentation/docs/api/browser_context.md +1 -1
  4. data/documentation/docs/api/locator.md +18 -0
  5. data/documentation/docs/api/mouse.md +11 -0
  6. data/documentation/docs/api/page.md +2 -1
  7. data/documentation/docs/api/request.md +10 -3
  8. data/documentation/docs/api/response.md +20 -2
  9. data/documentation/docs/include/api_coverage.md +17 -0
  10. data/documentation/package.json +2 -2
  11. data/documentation/yarn.lock +1430 -1486
  12. data/lib/playwright/channel_owners/api_request_context.rb +4 -0
  13. data/lib/playwright/channel_owners/browser_context.rb +5 -0
  14. data/lib/playwright/channel_owners/fetch_request.rb +6 -0
  15. data/lib/playwright/channel_owners/frame.rb +3 -1
  16. data/lib/playwright/channel_owners/page.rb +5 -0
  17. data/lib/playwright/channel_owners/request.rb +19 -16
  18. data/lib/playwright/channel_owners/response.rb +16 -13
  19. data/lib/playwright/http_headers.rb +0 -11
  20. data/lib/playwright/locator_impl.rb +4 -0
  21. data/lib/playwright/mouse_impl.rb +9 -0
  22. data/lib/playwright/raw_headers.rb +61 -0
  23. data/lib/playwright/route_handler.rb +13 -1
  24. data/lib/playwright/version.rb +2 -2
  25. data/lib/playwright.rb +1 -0
  26. data/lib/playwright_api/android.rb +6 -6
  27. data/lib/playwright_api/android_device.rb +6 -6
  28. data/lib/playwright_api/api_request_context.rb +146 -0
  29. data/lib/playwright_api/browser.rb +6 -6
  30. data/lib/playwright_api/browser_context.rb +7 -7
  31. data/lib/playwright_api/browser_type.rb +6 -6
  32. data/lib/playwright_api/cdp_session.rb +7 -7
  33. data/lib/playwright_api/console_message.rb +6 -6
  34. data/lib/playwright_api/dialog.rb +6 -6
  35. data/lib/playwright_api/element_handle.rb +6 -6
  36. data/lib/playwright_api/frame.rb +6 -6
  37. data/lib/playwright_api/js_handle.rb +6 -6
  38. data/lib/playwright_api/locator.rb +13 -0
  39. data/lib/playwright_api/mouse.rb +8 -0
  40. data/lib/playwright_api/page.rb +8 -7
  41. data/lib/playwright_api/playwright.rb +8 -8
  42. data/lib/playwright_api/request.rb +15 -11
  43. data/lib/playwright_api/response.rb +20 -13
  44. data/lib/playwright_api/route.rb +6 -6
  45. data/lib/playwright_api/selectors.rb +6 -6
  46. data/lib/playwright_api/web_socket.rb +6 -6
  47. data/lib/playwright_api/worker.rb +8 -8
  48. metadata +10 -5
@@ -0,0 +1,4 @@
1
+ module Playwright
2
+ define_channel_owner :APIRequestContext do
3
+ end
4
+ end
@@ -72,6 +72,11 @@ module Playwright
72
72
 
73
73
  if @routes.none? { |handler_entry| handler_entry.handle(wrapped_route, wrapped_request) }
74
74
  route.continue
75
+ else
76
+ @routes.reject!(&:expired?)
77
+ if @routes.count == 0
78
+ @channel.async_send_message_to_server('setNetworkInterceptionEnabled', enabled: false)
79
+ end
75
80
  end
76
81
  end
77
82
 
@@ -0,0 +1,6 @@
1
+ module Playwright
2
+ module ChannelOwners
3
+ class FetchRequest < APIRequestContext
4
+ end
5
+ end
6
+ end
@@ -593,7 +593,9 @@ module Playwright
593
593
  end
594
594
 
595
595
  def wait_for_timeout(timeout)
596
- sleep(timeout / 1000.0)
596
+ @channel.send_message_to_server('waitForTimeout', timeout: timeout)
597
+
598
+ nil
597
599
  end
598
600
 
599
601
  def wait_for_function(pageFunction, arg: nil, polling: nil, timeout: nil)
@@ -100,6 +100,11 @@ module Playwright
100
100
 
101
101
  if @routes.none? { |handler_entry| handler_entry.handle(wrapped_route, wrapped_request) }
102
102
  @browser_context.send(:on_route, route, request)
103
+ else
104
+ @routes.reject!(&:expired?)
105
+ if @routes.count == 0
106
+ @channel.async_send_message_to_server('setNetworkInterceptionEnabled', enabled: false)
107
+ end
103
108
  end
104
109
  end
105
110
 
@@ -1,14 +1,12 @@
1
1
  require 'base64'
2
- require_relative '../http_headers'
3
2
 
4
3
  module Playwright
5
4
  # @ref https://github.com/microsoft/playwright-python/blob/master/playwright/_impl/_network.py
6
5
  define_channel_owner :Request do
7
- include HttpHeaders::Parser
8
-
9
6
  private def after_initialize
10
7
  @redirected_from = ChannelOwners::Request.from_nullable(@initializer['redirectedFrom'])
11
8
  @redirected_from&.send(:update_redirected_to, self)
9
+ @provisional_headers = RawHeaders.new(@initializer['headers'])
12
10
  @timing = {
13
11
  startTime: 0,
14
12
  domainLookupStart: -1,
@@ -81,27 +79,32 @@ module Playwright
81
79
  attr_reader :redirected_from, :redirected_to, :timing
82
80
 
83
81
  def headers
84
- parse_headers_as_array(@initializer['headers'], true).to_h
82
+ @provisional_headers.headers
83
+ end
84
+
85
+ # @return [RawHeaders|nil]
86
+ private def actual_headers
87
+ @actual_headers ||= raw_request_headers
85
88
  end
86
89
 
87
- private def raw_headers
88
- @raw_headers ||= response&.send(:raw_request_headers)
90
+ private def raw_request_headers
91
+ RawHeaders.new(@channel.send_message_to_server('rawRequestHeaders'))
89
92
  end
90
93
 
91
94
  def all_headers
92
- if raw_headers
93
- parse_headers_as_array(raw_headers, true).to_h
94
- else
95
- parse_headers_as_array(@initializer['headers'], true).to_h
96
- end
95
+ actual_headers.headers
97
96
  end
98
97
 
99
98
  def headers_array
100
- if raw_headers
101
- parse_headers_as_array(raw_headers, false)
102
- else
103
- parse_headers_as_array(@initializer['headers'], false)
104
- end
99
+ actual_headers.headers_array
100
+ end
101
+
102
+ def header_value(name)
103
+ actual_headers.get(name)
104
+ end
105
+
106
+ def header_values(name)
107
+ actual_headers.get_all(name)
105
108
  end
106
109
 
107
110
  def sizes
@@ -1,13 +1,11 @@
1
1
  require 'base64'
2
2
  require 'json'
3
- require_relative '../http_headers'
4
3
 
5
4
  module Playwright
6
5
  # @ref https://github.com/microsoft/playwright-python/blob/master/playwright/_impl/_network.py
7
6
  define_channel_owner :Response do
8
- include HttpHeaders::Parser
9
-
10
7
  private def after_initialize
8
+ @provisional_headers = RawHeaders.new(@initializer['headers'])
11
9
  @request = ChannelOwners::Request.from(@initializer['request'])
12
10
  timing = @initializer['timing']
13
11
  @request.send(:update_timings,
@@ -42,27 +40,32 @@ module Playwright
42
40
  end
43
41
 
44
42
  def headers
45
- parse_headers_as_array(@initializer['headers'], true).to_h
46
- end
47
-
48
- private def raw_headers
49
- @raw_headers ||= raw_response_headers
43
+ @provisional_headers.headers
50
44
  end
51
45
 
52
- private def raw_request_headers
53
- @channel.send_message_to_server('rawRequestHeaders')
46
+ # @return [RawHeaders]
47
+ private def actual_headers
48
+ @actual_headers ||= raw_response_headers
54
49
  end
55
50
 
56
51
  private def raw_response_headers
57
- @channel.send_message_to_server('rawResponseHeaders')
52
+ RawHeaders.new(@channel.send_message_to_server('rawResponseHeaders'))
58
53
  end
59
54
 
60
55
  def all_headers
61
- parse_headers_as_array(raw_headers, true).to_h
56
+ actual_headers.headers
62
57
  end
63
58
 
64
59
  def headers_array
65
- parse_headers_as_array(raw_headers, false)
60
+ actual_headers.headers_array
61
+ end
62
+
63
+ def header_value(name)
64
+ actual_headers.get(name)
65
+ end
66
+
67
+ def header_values(name)
68
+ actual_headers.get_all(name)
66
69
  end
67
70
 
68
71
  def server_addr
@@ -10,16 +10,5 @@ module Playwright
10
10
  { name: key, value: value }
11
11
  end
12
12
  end
13
-
14
- module Parser
15
- def parse_headers_as_array(serialized_headers, downcase)
16
- serialized_headers.map do |header|
17
- name = downcase ? header['name'].downcase : header['name']
18
- value = header['value']
19
-
20
- [name, value]
21
- end
22
- end
23
- end
24
13
  end
25
14
  end
@@ -303,6 +303,10 @@ module Playwright
303
303
  trial: trial)
304
304
  end
305
305
 
306
+ def wait_for(state: nil, timeout: nil)
307
+ @frame.wait_for_selector(@selector, strict: true, state: state, timeout: timeout)
308
+ end
309
+
306
310
  def set_checked(checked, **options)
307
311
  if checked
308
312
  check(**options)
@@ -44,5 +44,14 @@ module Playwright
44
44
  def dblclick(x, y, button: nil, delay: nil)
45
45
  click(x, y, button: button, clickCount: 2, delay: delay)
46
46
  end
47
+
48
+ def wheel(deltaX, deltaY)
49
+ params = {
50
+ deltaX: deltaX,
51
+ deltaY: deltaY,
52
+ }
53
+ @channel.send_message_to_server('mouseWheel', params)
54
+ nil
55
+ end
47
56
  end
48
57
  end
@@ -0,0 +1,61 @@
1
+ module Playwright
2
+ class RawHeaders
3
+ def initialize(headers_array)
4
+ h_array = []
5
+ h_map = {}
6
+ headers_array.each do |header|
7
+ name = header['name']
8
+ key = name.downcase
9
+ value = header['value']
10
+
11
+ h_array << [name, value]
12
+ h_map[key] ||= []
13
+ h_map[key] << value
14
+ end
15
+
16
+ @headers_array = h_array
17
+ @headers_map = h_map
18
+ end
19
+
20
+ # @return [String|nil]
21
+ def get(name)
22
+ key = name.downcase
23
+ values = @headers_map[key]
24
+ if values
25
+ join(key, values)
26
+ else
27
+ nil
28
+ end
29
+ end
30
+
31
+ # @return [Array<String>]
32
+ def get_all(name)
33
+ values = @headers_map[name.downcase]
34
+ if values
35
+ values.dup
36
+ else
37
+ []
38
+ end
39
+ end
40
+
41
+ def headers
42
+ @headers_map.map do |key, values|
43
+ [key, join(key, values)]
44
+ end.to_h
45
+ end
46
+
47
+ def headers_array
48
+ @headers_array.map do |name, value|
49
+ { name: name, value: value }
50
+ end
51
+ end
52
+
53
+ private def join(key, values)
54
+ if key == 'set-cookie'
55
+ values.join("\n")
56
+ else
57
+ values.join(", ")
58
+ end
59
+ end
60
+ end
61
+ end
@@ -6,17 +6,25 @@ module Playwright
6
6
  end
7
7
 
8
8
  def handle
9
- return false if @count <= 0
9
+ return false if expired?
10
10
 
11
11
  @count = @count - 1
12
12
  true
13
13
  end
14
+
15
+ def expired?
16
+ @count <= 0
17
+ end
14
18
  end
15
19
 
16
20
  class StubCounter
17
21
  def handle
18
22
  true
19
23
  end
24
+
25
+ def expired?
26
+ false
27
+ end
20
28
  end
21
29
 
22
30
  # @param url [String]
@@ -46,6 +54,10 @@ module Playwright
46
54
  end
47
55
  end
48
56
 
57
+ def expired?
58
+ @counter.expired?
59
+ end
60
+
49
61
  def same_value?(url:, handler: nil)
50
62
  if handler
51
63
  @url_value == url && @handler == handler
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.15.beta2'
5
- COMPATIBLE_PLAYWRIGHT_VERSION = '1.15.0'
4
+ VERSION = '1.16.0'
5
+ COMPATIBLE_PLAYWRIGHT_VERSION = '1.16.0'
6
6
  end
data/lib/playwright.rb CHANGED
@@ -20,6 +20,7 @@ require 'playwright/channel_owner'
20
20
  require 'playwright/http_headers'
21
21
  require 'playwright/input_files'
22
22
  require 'playwright/connection'
23
+ require 'playwright/raw_headers'
23
24
  require 'playwright/route_handler'
24
25
  require 'playwright/select_option_values'
25
26
  require 'playwright/timeout_settings'
@@ -36,12 +36,6 @@ module Playwright
36
36
  end
37
37
  alias_method :default_timeout=, :set_default_timeout
38
38
 
39
- # -- inherited from EventEmitter --
40
- # @nodoc
41
- def off(event, callback)
42
- event_emitter_proxy.off(event, callback)
43
- end
44
-
45
39
  # -- inherited from EventEmitter --
46
40
  # @nodoc
47
41
  def once(event, callback)
@@ -54,6 +48,12 @@ module Playwright
54
48
  event_emitter_proxy.on(event, callback)
55
49
  end
56
50
 
51
+ # -- inherited from EventEmitter --
52
+ # @nodoc
53
+ def off(event, callback)
54
+ event_emitter_proxy.off(event, callback)
55
+ end
56
+
57
57
  private def event_emitter_proxy
58
58
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
59
59
  end
@@ -174,12 +174,6 @@ module Playwright
174
174
  wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
175
175
  end
176
176
 
177
- # -- inherited from EventEmitter --
178
- # @nodoc
179
- def off(event, callback)
180
- event_emitter_proxy.off(event, callback)
181
- end
182
-
183
177
  # -- inherited from EventEmitter --
184
178
  # @nodoc
185
179
  def once(event, callback)
@@ -192,6 +186,12 @@ module Playwright
192
186
  event_emitter_proxy.on(event, callback)
193
187
  end
194
188
 
189
+ # -- inherited from EventEmitter --
190
+ # @nodoc
191
+ def off(event, callback)
192
+ event_emitter_proxy.off(event, callback)
193
+ end
194
+
195
195
  private def event_emitter_proxy
196
196
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
197
197
  end
@@ -0,0 +1,146 @@
1
+ module Playwright
2
+ # This API is used for the Web API testing. You can use it to trigger API endpoints, configure micro-services, prepare
3
+ # environment or the service to your e2e test. When used on `Page` or a `BrowserContext`, this API will automatically use
4
+ # the cookies from the corresponding `BrowserContext`. This means that if you log in using this API, your e2e test will be
5
+ # logged in and vice versa.
6
+ class APIRequestContext < PlaywrightApi
7
+
8
+ # Sends HTTP(S) [DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE) request and returns its
9
+ # response. The method will populate request cookies from the context and update context cookies from the response. The
10
+ # method will automatically follow redirects.
11
+ def delete(
12
+ url,
13
+ failOnStatusCode: nil,
14
+ headers: nil,
15
+ ignoreHTTPSErrors: nil,
16
+ params: nil,
17
+ timeout: nil)
18
+ raise NotImplementedError.new('delete is not implemented yet.')
19
+ end
20
+
21
+ # All responses returned by [`method: APIRequestContext.get`] and similar methods are stored in the memory, so that you
22
+ # can later call [`method: APIResponse.body`]. This method discards all stored responses, and makes
23
+ # [`method: APIResponse.body`] throw "Response disposed" error.
24
+ def dispose
25
+ raise NotImplementedError.new('dispose is not implemented yet.')
26
+ end
27
+
28
+ # Sends HTTP(S) request and returns its response. The method will populate request cookies from the context and update
29
+ # context cookies from the response. The method will automatically follow redirects.
30
+ def fetch(
31
+ urlOrRequest,
32
+ data: nil,
33
+ failOnStatusCode: nil,
34
+ form: nil,
35
+ headers: nil,
36
+ ignoreHTTPSErrors: nil,
37
+ method: nil,
38
+ multipart: nil,
39
+ params: nil,
40
+ timeout: nil)
41
+ raise NotImplementedError.new('fetch is not implemented yet.')
42
+ end
43
+
44
+ # Sends HTTP(S) [GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET) request and returns its response. The
45
+ # method will populate request cookies from the context and update context cookies from the response. The method will
46
+ # automatically follow redirects.
47
+ def get(
48
+ url,
49
+ failOnStatusCode: nil,
50
+ headers: nil,
51
+ ignoreHTTPSErrors: nil,
52
+ params: nil,
53
+ timeout: nil)
54
+ raise NotImplementedError.new('get is not implemented yet.')
55
+ end
56
+
57
+ # Sends HTTP(S) [HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD) request and returns its response.
58
+ # The method will populate request cookies from the context and update context cookies from the response. The method will
59
+ # automatically follow redirects.
60
+ def head(
61
+ url,
62
+ failOnStatusCode: nil,
63
+ headers: nil,
64
+ ignoreHTTPSErrors: nil,
65
+ params: nil,
66
+ timeout: nil)
67
+ raise NotImplementedError.new('head is not implemented yet.')
68
+ end
69
+
70
+ # Sends HTTP(S) [PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH) request and returns its response.
71
+ # The method will populate request cookies from the context and update context cookies from the response. The method will
72
+ # automatically follow redirects.
73
+ def patch(
74
+ url,
75
+ data: nil,
76
+ failOnStatusCode: nil,
77
+ form: nil,
78
+ headers: nil,
79
+ ignoreHTTPSErrors: nil,
80
+ multipart: nil,
81
+ params: nil,
82
+ timeout: nil)
83
+ raise NotImplementedError.new('patch is not implemented yet.')
84
+ end
85
+
86
+ # Sends HTTP(S) [POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) request and returns its response.
87
+ # The method will populate request cookies from the context and update context cookies from the response. The method will
88
+ # automatically follow redirects.
89
+ def post(
90
+ url,
91
+ data: nil,
92
+ failOnStatusCode: nil,
93
+ form: nil,
94
+ headers: nil,
95
+ ignoreHTTPSErrors: nil,
96
+ multipart: nil,
97
+ params: nil,
98
+ timeout: nil)
99
+ raise NotImplementedError.new('post is not implemented yet.')
100
+ end
101
+
102
+ # Sends HTTP(S) [PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) request and returns its response. The
103
+ # method will populate request cookies from the context and update context cookies from the response. The method will
104
+ # automatically follow redirects.
105
+ def put(
106
+ url,
107
+ data: nil,
108
+ failOnStatusCode: nil,
109
+ form: nil,
110
+ headers: nil,
111
+ ignoreHTTPSErrors: nil,
112
+ multipart: nil,
113
+ params: nil,
114
+ timeout: nil)
115
+ raise NotImplementedError.new('put is not implemented yet.')
116
+ end
117
+
118
+ # Returns storage state for this request context, contains current cookies and local storage snapshot if it was passed to
119
+ # the constructor.
120
+ def storage_state(path: nil)
121
+ raise NotImplementedError.new('storage_state is not implemented yet.')
122
+ end
123
+
124
+ # -- inherited from EventEmitter --
125
+ # @nodoc
126
+ def once(event, callback)
127
+ event_emitter_proxy.once(event, callback)
128
+ end
129
+
130
+ # -- inherited from EventEmitter --
131
+ # @nodoc
132
+ def on(event, callback)
133
+ event_emitter_proxy.on(event, callback)
134
+ end
135
+
136
+ # -- inherited from EventEmitter --
137
+ # @nodoc
138
+ def off(event, callback)
139
+ event_emitter_proxy.off(event, callback)
140
+ end
141
+
142
+ private def event_emitter_proxy
143
+ @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
144
+ end
145
+ end
146
+ end
@@ -166,12 +166,6 @@ module Playwright
166
166
  wrap_impl(@impl.version)
167
167
  end
168
168
 
169
- # -- inherited from EventEmitter --
170
- # @nodoc
171
- def off(event, callback)
172
- event_emitter_proxy.off(event, callback)
173
- end
174
-
175
169
  # -- inherited from EventEmitter --
176
170
  # @nodoc
177
171
  def once(event, callback)
@@ -184,6 +178,12 @@ module Playwright
184
178
  event_emitter_proxy.on(event, callback)
185
179
  end
186
180
 
181
+ # -- inherited from EventEmitter --
182
+ # @nodoc
183
+ def off(event, callback)
184
+ event_emitter_proxy.off(event, callback)
185
+ end
186
+
187
187
  private def event_emitter_proxy
188
188
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
189
189
  end
@@ -6,7 +6,7 @@ module Playwright
6
6
  # If a page opens another page, e.g. with a `window.open` call, the popup will belong to the parent page's browser
7
7
  # context.
8
8
  #
9
- # Playwright allows creation of "incognito" browser contexts with `browser.newContext()` method. "Incognito" browser
9
+ # Playwright allows creating "incognito" browser contexts with [`method: Browser.newContext`] method. "Incognito" browser
10
10
  # contexts don't write any browsing data to disk.
11
11
  #
12
12
  # ```python sync
@@ -391,12 +391,6 @@ module Playwright
391
391
  wrap_impl(@impl.options=(unwrap_impl(req)))
392
392
  end
393
393
 
394
- # -- inherited from EventEmitter --
395
- # @nodoc
396
- def off(event, callback)
397
- event_emitter_proxy.off(event, callback)
398
- end
399
-
400
394
  # -- inherited from EventEmitter --
401
395
  # @nodoc
402
396
  def once(event, callback)
@@ -409,6 +403,12 @@ module Playwright
409
403
  event_emitter_proxy.on(event, callback)
410
404
  end
411
405
 
406
+ # -- inherited from EventEmitter --
407
+ # @nodoc
408
+ def off(event, callback)
409
+ event_emitter_proxy.off(event, callback)
410
+ end
411
+
412
412
  private def event_emitter_proxy
413
413
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
414
414
  end
@@ -146,12 +146,6 @@ module Playwright
146
146
  wrap_impl(@impl.name)
147
147
  end
148
148
 
149
- # -- inherited from EventEmitter --
150
- # @nodoc
151
- def off(event, callback)
152
- event_emitter_proxy.off(event, callback)
153
- end
154
-
155
149
  # -- inherited from EventEmitter --
156
150
  # @nodoc
157
151
  def once(event, callback)
@@ -164,6 +158,12 @@ module Playwright
164
158
  event_emitter_proxy.on(event, callback)
165
159
  end
166
160
 
161
+ # -- inherited from EventEmitter --
162
+ # @nodoc
163
+ def off(event, callback)
164
+ event_emitter_proxy.off(event, callback)
165
+ end
166
+
167
167
  private def event_emitter_proxy
168
168
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
169
169
  end
@@ -12,7 +12,7 @@ module Playwright
12
12
  # https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
13
13
  #
14
14
  # ```python sync
15
- # client = page.context().new_cdp_session(page)
15
+ # client = page.context.new_cdp_session(page)
16
16
  # client.send("Animation.enable")
17
17
  # client.on("Animation.animationCreated", lambda: print("animation created!"))
18
18
  # response = client.send("Animation.getPlaybackRate")
@@ -33,12 +33,6 @@ module Playwright
33
33
  wrap_impl(@impl.send_message(unwrap_impl(method), params: unwrap_impl(params)))
34
34
  end
35
35
 
36
- # -- inherited from EventEmitter --
37
- # @nodoc
38
- def off(event, callback)
39
- event_emitter_proxy.off(event, callback)
40
- end
41
-
42
36
  # -- inherited from EventEmitter --
43
37
  # @nodoc
44
38
  def once(event, callback)
@@ -51,6 +45,12 @@ module Playwright
51
45
  event_emitter_proxy.on(event, callback)
52
46
  end
53
47
 
48
+ # -- inherited from EventEmitter --
49
+ # @nodoc
50
+ def off(event, callback)
51
+ event_emitter_proxy.off(event, callback)
52
+ end
53
+
54
54
  private def event_emitter_proxy
55
55
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
56
56
  end
@@ -23,12 +23,6 @@ module Playwright
23
23
  wrap_impl(@impl.type)
24
24
  end
25
25
 
26
- # -- inherited from EventEmitter --
27
- # @nodoc
28
- def off(event, callback)
29
- event_emitter_proxy.off(event, callback)
30
- end
31
-
32
26
  # -- inherited from EventEmitter --
33
27
  # @nodoc
34
28
  def once(event, callback)
@@ -41,6 +35,12 @@ module Playwright
41
35
  event_emitter_proxy.on(event, callback)
42
36
  end
43
37
 
38
+ # -- inherited from EventEmitter --
39
+ # @nodoc
40
+ def off(event, callback)
41
+ event_emitter_proxy.off(event, callback)
42
+ end
43
+
44
44
  private def event_emitter_proxy
45
45
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
46
46
  end