playwright-ruby-client 1.18.3 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61c1d2ea0171ac16b6687a7e48411d1c8ec0f61e40794628c1ac4e248fdce06a
4
- data.tar.gz: 0ebea8c18299effd7f13ab1f7f8f96b043bb0ef2c215481943a8ba4df96abb7c
3
+ metadata.gz: bfbbc528927aa551597f30f0abb057a13609726f473cfd6c625a97d135d0b705
4
+ data.tar.gz: f3f8dda3439bfaa0d3a8796ee8ed6eb453ae9934e9bf0b1768a8a0c9a62d5e4f
5
5
  SHA512:
6
- metadata.gz: 11c4ee9385a617b09ac668f9659193062b77b6d273c24c7ee73038f5a0279a811420fd2a13f1bee86d83f5e2ddbbf9720ad362ca6514ba445d3b4a1e5c77c372
7
- data.tar.gz: cb0ddd6cad0c1d289014c0fddf2b2336885c46410c3501444d80fbee9947603f46b8d6e72a9e0244d1a8adf4550f25c0297d0263508cb8e918d93ded9063827e
6
+ metadata.gz: 14e62113089e96e77fd11dabdda86582ac5c4004465a4007396b71a954927396e1a77c5abf2c10199e43b41b119a5879bbdf491400ec8de5d9f1bd2b3da19ef8
7
+ data.tar.gz: 6ee4b4854cf14ba4cd1cad9dd4c847cea5dea58c892298e15daecce174754b35beccfaff8386f9c97ca103d500aeea476f82c232fa88291741d075685d2fc789
@@ -28,7 +28,17 @@ playwright.chromium.launch do |browser|
28
28
  data: { name: 'test-repo-1' },
29
29
  )
30
30
  response.ok? # => true
31
- response.json['name'] # => "tes≈-repo-1"
31
+ response.json['name'] # => "test-repo-1"
32
+
33
+ # Delete a repository.
34
+ response = api_request_context.delete(
35
+ "/repos/YourName/test-repo-1",
36
+ headers: {
37
+ "Accept": "application/vnd.github.v3+json",
38
+ "Authorization": "Bearer #{API_TOKEN}",
39
+ },
40
+ )
41
+ response.ok? # => true
32
42
  end
33
43
  ```
34
44
 
@@ -549,7 +549,7 @@ considered not visible.
549
549
  ## locator
550
550
 
551
551
  ```
552
- def locator(selector, hasText: nil)
552
+ def locator(selector, has: nil, hasText: nil)
553
553
  ```
554
554
 
555
555
  The method returns an element locator that can be used to perform actions in the frame. Locator is resolved to the
@@ -65,7 +65,7 @@ Returns locator to the last matching frame.
65
65
  ## locator
66
66
 
67
67
  ```
68
- def locator(selector, hasText: nil)
68
+ def locator(selector, has: nil, hasText: nil)
69
69
  ```
70
70
 
71
71
  The method finds an element matching the specified selector in the FrameLocator's subtree.
@@ -311,7 +311,7 @@ When working with iframes, you can create a frame locator that will enter the if
311
311
  that iframe:
312
312
 
313
313
  ```ruby
314
- locator = page.frame_locator("text=Submit").locator("text=Submit")
314
+ locator = page.frame_locator("iframe").locator("text=Submit")
315
315
  locator.click
316
316
  ```
317
317
 
@@ -430,7 +430,7 @@ Returns locator to the last matching element.
430
430
  ## locator
431
431
 
432
432
  ```
433
- def locator(selector, hasText: nil)
433
+ def locator(selector, has: nil, hasText: nil)
434
434
  ```
435
435
 
436
436
  The method finds an element matching the specified selector in the [Locator](./locator)'s subtree.
@@ -443,6 +443,14 @@ def nth(index)
443
443
 
444
444
  Returns locator to the n-th matching element.
445
445
 
446
+ ## page
447
+
448
+ ```
449
+ def page
450
+ ```
451
+
452
+ A page this locator belongs to.
453
+
446
454
  ## press
447
455
 
448
456
  ```
@@ -774,7 +774,7 @@ considered not visible.
774
774
  ## locator
775
775
 
776
776
  ```
777
- def locator(selector, hasText: nil)
777
+ def locator(selector, has: nil, hasText: nil)
778
778
  ```
779
779
 
780
780
  The method returns an element locator that can be used to perform actions on the page. Locator is resolved to the
@@ -1491,6 +1491,9 @@ response = page.expect_response(/example.com\/resource/) do
1491
1491
  page.click("input")
1492
1492
  end
1493
1493
  puts response.body
1494
+ puts response.ok?
1495
+
1496
+ page.wait_for_load_state # wait for request finished.
1494
1497
 
1495
1498
  # or with a predicate
1496
1499
  page.content = '<form action="https://example.com/resource"><input type="submit" /></form>'
@@ -1498,6 +1501,7 @@ response = page.expect_response(->(res) { res.url.start_with? 'https://example.c
1498
1501
  page.click("input")
1499
1502
  end
1500
1503
  puts response.body
1504
+ puts response.ok?
1501
1505
  ```
1502
1506
 
1503
1507
 
@@ -45,6 +45,7 @@ def fulfill(
45
45
  contentType: nil,
46
46
  headers: nil,
47
47
  path: nil,
48
+ response: nil,
48
49
  status: nil)
49
50
  ```
50
51
 
@@ -23,7 +23,12 @@ end
23
23
  ## start
24
24
 
25
25
  ```
26
- def start(name: nil, screenshots: nil, snapshots: nil, title: nil)
26
+ def start(
27
+ name: nil,
28
+ screenshots: nil,
29
+ snapshots: nil,
30
+ sources: nil,
31
+ title: nil)
27
32
  ```
28
33
 
29
34
  Start tracing.
@@ -430,6 +430,7 @@
430
430
  * last
431
431
  * locator
432
432
  * nth
433
+ * page
433
434
  * press
434
435
  * screenshot
435
436
  * scroll_into_view_if_needed
@@ -66,6 +66,10 @@ module Playwright
66
66
  @request.channel.send_message_to_server("disposeAPIResponse", fetchUid: fetch_uid)
67
67
  end
68
68
 
69
+ private def _request
70
+ @request
71
+ end
72
+
69
73
  private def fetch_uid
70
74
  @initializer['fetchUid']
71
75
  end
@@ -72,6 +72,10 @@ module Playwright
72
72
  private def delete_object_from_child(guid)
73
73
  @objects.delete(guid)
74
74
  end
75
+
76
+ private def same_connection?(other)
77
+ @connection == other.instance_variable_get(:@connection)
78
+ end
75
79
  end
76
80
 
77
81
  class RootChannelOwner < ChannelOwner
@@ -2,6 +2,10 @@ require 'base64'
2
2
 
3
3
  module Playwright
4
4
  define_channel_owner :APIRequestContext do
5
+ private def after_initialize
6
+ @tracing = ChannelOwners::Tracing.from(@initializer['tracing'])
7
+ end
8
+
5
9
  def dispose
6
10
  @channel.send_message_to_server('dispose')
7
11
  end
@@ -14,7 +14,7 @@ module Playwright
14
14
  @service_workers = Set.new
15
15
  @background_pages = Set.new
16
16
 
17
- @tracing = TracingImpl.new(@channel, self)
17
+ @tracing = ChannelOwners::Tracing.from(@initializer['tracing'])
18
18
  @request = ChannelOwners::APIRequestContext.from(@initializer['APIRequestContext'])
19
19
 
20
20
  @channel.on('bindingCall', ->(params) { on_binding(ChannelOwners::BindingCall.from(params['binding'])) })
@@ -72,13 +72,19 @@ module Playwright
72
72
  wrapped_route = PlaywrightApi.wrap(route)
73
73
  wrapped_request = PlaywrightApi.wrap(request)
74
74
 
75
- if @routes.none? { |handler_entry| handler_entry.handle(wrapped_route, wrapped_request) }
76
- route.continue
77
- else
75
+ handler_entry = @routes.find do |entry|
76
+ entry.match?(request.url)
77
+ end
78
+
79
+ if handler_entry
80
+ handler_entry.async_handle(wrapped_route, wrapped_request)
81
+
78
82
  @routes.reject!(&:expired?)
79
83
  if @routes.count == 0
80
84
  @channel.async_send_message_to_server('setNetworkInterceptionEnabled', enabled: false)
81
85
  end
86
+ else
87
+ route.continue
82
88
  end
83
89
  end
84
90
 
@@ -360,10 +366,5 @@ module Playwright
360
366
  private def base_url
361
367
  @options[:baseURL]
362
368
  end
363
-
364
- # called from Tracing
365
- private def remote_connection?
366
- @connection.remote?
367
- end
368
369
  end
369
370
  end
@@ -400,8 +400,8 @@ module Playwright
400
400
  nil
401
401
  end
402
402
 
403
- def locator(selector, hasText: nil)
404
- LocatorImpl.new(frame: self, timeout_settings: @page.send(:timeout_settings), selector: selector, hasText: hasText)
403
+ def locator(selector, hasText: nil, has: nil)
404
+ LocatorImpl.new(frame: self, timeout_settings: @page.send(:timeout_settings), selector: selector, hasText: hasText, has: has)
405
405
  end
406
406
 
407
407
  def frame_locator(selector)
@@ -98,13 +98,19 @@ module Playwright
98
98
  wrapped_route = PlaywrightApi.wrap(route)
99
99
  wrapped_request = PlaywrightApi.wrap(request)
100
100
 
101
- if @routes.none? { |handler_entry| handler_entry.handle(wrapped_route, wrapped_request) }
102
- @browser_context.send(:on_route, route, request)
103
- else
101
+ handler_entry = @routes.find do |entry|
102
+ entry.match?(request.url)
103
+ end
104
+
105
+ if handler_entry
106
+ handler_entry.async_handle(wrapped_route, wrapped_request)
107
+
104
108
  @routes.reject!(&:expired?)
105
109
  if @routes.count == 0
106
110
  @channel.async_send_message_to_server('setNetworkInterceptionEnabled', enabled: false)
107
111
  end
112
+ else
113
+ @browser_context.send(:on_route, route, request)
108
114
  end
109
115
  end
110
116
 
@@ -558,8 +564,8 @@ module Playwright
558
564
  timeout: timeout)
559
565
  end
560
566
 
561
- def locator(selector, hasText: nil)
562
- @main_frame.locator(selector, hasText: hasText)
567
+ def locator(selector, hasText: nil, has: nil)
568
+ @main_frame.locator(selector, hasText: hasText, has: has)
563
569
  end
564
570
 
565
571
  def frame_locator(selector)
@@ -17,16 +17,30 @@ module Playwright
17
17
  contentType: nil,
18
18
  headers: nil,
19
19
  path: nil,
20
- status: nil)
20
+ status: nil,
21
+ response: nil)
21
22
  params = {
22
23
  contentType: contentType,
23
24
  status: status,
24
25
  }.compact
26
+ option_body = body
27
+
28
+ if response
29
+ params[:status] ||= response.status
30
+ params[:headers] ||= response.headers
31
+
32
+ if !body && !path && response.is_a?(APIResponse)
33
+ if response.send(:_request).send(:same_connection?, self)
34
+ params[:fetchResponseUid] = response.send(:fetch_uid)
35
+ else
36
+ option_body = response.body
37
+ end
38
+ end
39
+ end
25
40
 
26
- length = 0
27
41
  content =
28
- if body
29
- body
42
+ if option_body
43
+ option_body
30
44
  elsif path
31
45
  File.read(path)
32
46
  else
@@ -1,15 +1,11 @@
1
1
  module Playwright
2
- define_api_implementation :TracingImpl do
3
- def initialize(channel, context)
4
- @channel = channel
5
- @context = context
6
- end
7
-
8
- def start(name: nil, title: nil, screenshots: nil, snapshots: nil)
2
+ define_channel_owner :Tracing do
3
+ def start(name: nil, title: nil, screenshots: nil, snapshots: nil, sources: nil)
9
4
  params = {
10
5
  name: name,
11
6
  screenshots: screenshots,
12
7
  snapshots: snapshots,
8
+ sources: sources,
13
9
  }.compact
14
10
  @channel.send_message_to_server('tracingStart', params)
15
11
  @channel.send_message_to_server('tracingStartChunk', { title: title }.compact)
@@ -31,7 +27,7 @@ module Playwright
31
27
  private def do_stop_chunk(file_path:)
32
28
  mode = 'doNotSave'
33
29
  if file_path
34
- if @context.send(:remote_connection?)
30
+ if @connection.remote?
35
31
  mode = 'compressTrace'
36
32
  else
37
33
  mode = 'compressTraceAndSources'
@@ -6,12 +6,13 @@ module Playwright
6
6
  @frame_selector = frame_selector
7
7
  end
8
8
 
9
- def locator(selector, hasText: nil)
9
+ def locator(selector, hasText: nil, has: nil)
10
10
  LocatorImpl.new(
11
11
  frame: @frame,
12
12
  timeout_settings: @timeout_settings,
13
13
  selector: "#{@frame_selector} >> control=enter-frame >> #{selector}",
14
14
  hasText: hasText,
15
+ has: has,
15
16
  )
16
17
  end
17
18
 
@@ -24,29 +24,51 @@ module Playwright
24
24
  end
25
25
 
26
26
  define_api_implementation :LocatorImpl do
27
- def initialize(frame:, timeout_settings:, selector:, hasText: nil)
27
+ def initialize(frame:, timeout_settings:, selector:, hasText: nil, has: nil)
28
28
  @frame = frame
29
29
  @timeout_settings = timeout_settings
30
- @selector =
31
- case hasText
32
- when Regexp
33
- source = EscapeWithQuotes.new(hasText.source, '"')
34
- flags = []
35
- flags << 'ms' if (hasText.options & Regexp::MULTILINE) != 0
36
- flags << 'i' if (hasText.options & Regexp::IGNORECASE) != 0
37
- "#{selector} >> :scope:text-matches(#{source}, \"#{flags.join('')}\")"
38
- when String
39
- text = EscapeWithQuotes.new(hasText, '"')
40
- "#{selector} >> :scope:has-text(#{text})"
41
- else
42
- selector
30
+ selector_scopes = [selector]
31
+
32
+ case hasText
33
+ when Regexp
34
+ source = EscapeWithQuotes.new(hasText.source, '"')
35
+ flags = []
36
+ flags << 'ms' if (hasText.options & Regexp::MULTILINE) != 0
37
+ flags << 'i' if (hasText.options & Regexp::IGNORECASE) != 0
38
+ selector_scopes << ":scope:text-matches(#{source}, \"#{flags.join('')}\")"
39
+ when String
40
+ text = EscapeWithQuotes.new(hasText, '"')
41
+ selector_scopes << ":scope:has-text(#{text})"
42
+ end
43
+
44
+ if has
45
+ unless same_frame?(has)
46
+ raise DifferentFrameError.new
43
47
  end
48
+ selector_scopes << "has=#{has.send(:selector_json)}"
49
+ end
50
+
51
+ @selector = selector_scopes.join(' >> ')
44
52
  end
45
53
 
46
54
  def to_s
47
55
  "Locator@#{@selector}"
48
56
  end
49
57
 
58
+ class DifferentFrameError < StandardError
59
+ def initialize
60
+ super('Inner "has" locator must belong to the same frame.')
61
+ end
62
+ end
63
+
64
+ private def same_frame?(other)
65
+ @frame == other.instance_variable_get(:@frame)
66
+ end
67
+
68
+ private def selector_json
69
+ @selector.to_json
70
+ end
71
+
50
72
  private def with_element(timeout: nil, &block)
51
73
  timeout_or_default = @timeout_settings.timeout(timeout)
52
74
  start_time = Time.now
@@ -67,6 +89,10 @@ module Playwright
67
89
  end
68
90
  end
69
91
 
92
+ def page
93
+ @frame.page
94
+ end
95
+
70
96
  def bounding_box(timeout: nil)
71
97
  with_element(timeout: timeout) do |handle|
72
98
  handle.bounding_box
@@ -180,12 +206,13 @@ module Playwright
180
206
  @frame.fill(@selector, value, strict: true, force: force, noWaitAfter: noWaitAfter, timeout: timeout)
181
207
  end
182
208
 
183
- def locator(selector, hasText: nil)
209
+ def locator(selector, hasText: nil, has: nil)
184
210
  LocatorImpl.new(
185
211
  frame: @frame,
186
212
  timeout_settings: @timeout_settings,
187
213
  selector: "#{@selector} >> #{selector}",
188
214
  hasText: hasText,
215
+ has: has,
189
216
  )
190
217
  end
191
218
 
@@ -5,7 +5,7 @@ module Playwright
5
5
  @count = count
6
6
  end
7
7
 
8
- def handle
8
+ def increment
9
9
  return false if expired?
10
10
 
11
11
  @count = @count - 1
@@ -18,7 +18,7 @@ module Playwright
18
18
  end
19
19
 
20
20
  class StubCounter
21
- def handle
21
+ def increment
22
22
  true
23
23
  end
24
24
 
@@ -43,14 +43,17 @@ module Playwright
43
43
  end
44
44
  end
45
45
 
46
- def handle(route, request)
47
- return false unless @counter.handle
46
+ def match?(url)
47
+ @url_matcher.match?(url)
48
+ end
49
+
50
+ def async_handle(route, request)
51
+ @counter.increment
48
52
 
49
- if @url_matcher.match?(request.url)
53
+ Concurrent::Promises.future do
50
54
  @handler.call(route, request)
51
- true
52
- else
53
- false
55
+ rescue => err
56
+ puts err, err.backtrace
54
57
  end
55
58
  end
56
59
 
@@ -46,8 +46,7 @@ module Playwright
46
46
  #
47
47
  # @note This method blocks until playwright-cli exited. Consider using Thread or Future.
48
48
  def async_run
49
- popen3_args = {}
50
- @stdin, @stdout, @stderr, @thread = run_driver_with_open3
49
+ @stdin, @stdout, @stderr, @thread = Open3.popen3("#{@driver_executable_path} run-driver", { pgroup: true })
51
50
  @stdin.binmode # Ensure Strings are written 1:1 without encoding conversion, necessary for integer values
52
51
 
53
52
  Thread.new { handle_stdout }
@@ -56,18 +55,6 @@ module Playwright
56
55
 
57
56
  private
58
57
 
59
- def run_driver_with_open3
60
- Open3.popen3("#{@driver_executable_path} run-driver", { pgroup: true })
61
- rescue ArgumentError => err
62
- # Windows doesn't accept pgroup parameter.
63
- # ArgumentError: wrong exec option symbol: pgroup
64
- if err.message =~ /pgroup/
65
- Open3.popen3("#{@driver_executable_path} run-driver")
66
- else
67
- raise
68
- end
69
- end
70
-
71
58
  def handle_stdout(packet_size: 32_768)
72
59
  while chunk = @stdout.read(4)
73
60
  length = chunk.unpack1('V') # unsigned 32bit, little endian
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.18.3'
5
- COMPATIBLE_PLAYWRIGHT_VERSION = '1.18.1'
4
+ VERSION = '1.19.0'
5
+ COMPATIBLE_PLAYWRIGHT_VERSION = '1.19.0'
6
6
  end
@@ -16,13 +16,13 @@ module Playwright
16
16
  # # This will launch a new browser, create a context and page. When making HTTP
17
17
  # # requests with the internal APIRequestContext (e.g. `context.request` or `page.request`)
18
18
  # # it will automatically set the cookies to the browser page and vise versa.
19
- # browser = playwright.chromium.launch()
19
+ # browser = p.chromium.launch()
20
20
  # context = browser.new_context(base_url="https://api.github.com")
21
21
  # api_request_context = context.request
22
22
  # page = context.new_page()
23
23
  #
24
24
  # # Alternatively you can create a APIRequestContext manually without having a browser context attached:
25
- # # api_request_context = playwright.request.new_context(base_url="https://api.github.com")
25
+ # # api_request_context = p.request.new_context(base_url="https://api.github.com")
26
26
  #
27
27
  #
28
28
  # # Create a repository.
@@ -445,8 +445,8 @@ module Playwright
445
445
  # The method returns an element locator that can be used to perform actions in the frame. Locator is resolved to the
446
446
  # element immediately before performing an action, so a series of actions on the same locator can in fact be performed on
447
447
  # different DOM elements. That would happen if the DOM structure between those actions has changed.
448
- def locator(selector, hasText: nil)
449
- wrap_impl(@impl.locator(unwrap_impl(selector), hasText: unwrap_impl(hasText)))
448
+ def locator(selector, has: nil, hasText: nil)
449
+ wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
450
450
  end
451
451
 
452
452
  # Returns frame's name attribute as specified in the tag.
@@ -48,8 +48,8 @@ module Playwright
48
48
  end
49
49
 
50
50
  # The method finds an element matching the specified selector in the FrameLocator's subtree.
51
- def locator(selector, hasText: nil)
52
- wrap_impl(@impl.locator(unwrap_impl(selector), hasText: unwrap_impl(hasText)))
51
+ def locator(selector, has: nil, hasText: nil)
52
+ wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
53
53
  end
54
54
 
55
55
  # Returns locator to the n-th matching frame.
@@ -238,7 +238,7 @@ module Playwright
238
238
  # that iframe:
239
239
  #
240
240
  # ```python sync
241
- # locator = page.frame_locator("text=Submit").locator("text=Submit")
241
+ # locator = page.frame_locator("iframe").locator("text=Submit")
242
242
  # locator.click()
243
243
  # ```
244
244
  def frame_locator(selector)
@@ -320,8 +320,8 @@ module Playwright
320
320
  end
321
321
 
322
322
  # The method finds an element matching the specified selector in the `Locator`'s subtree.
323
- def locator(selector, hasText: nil)
324
- wrap_impl(@impl.locator(unwrap_impl(selector), hasText: unwrap_impl(hasText)))
323
+ def locator(selector, has: nil, hasText: nil)
324
+ wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
325
325
  end
326
326
 
327
327
  # Returns locator to the n-th matching element.
@@ -329,6 +329,11 @@ module Playwright
329
329
  wrap_impl(@impl.nth(unwrap_impl(index)))
330
330
  end
331
331
 
332
+ # A page this locator belongs to.
333
+ def page
334
+ wrap_impl(@impl.page)
335
+ end
336
+
332
337
  # Focuses the element, and then uses [`method: Keyboard.down`] and [`method: Keyboard.up`].
333
338
  #
334
339
  # `key` can specify the intended [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
@@ -686,8 +686,8 @@ module Playwright
686
686
  # different DOM elements. That would happen if the DOM structure between those actions has changed.
687
687
  #
688
688
  # Shortcut for main frame's [`method: Frame.locator`].
689
- def locator(selector, hasText: nil)
690
- wrap_impl(@impl.locator(unwrap_impl(selector), hasText: unwrap_impl(hasText)))
689
+ def locator(selector, has: nil, hasText: nil)
690
+ wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
691
691
  end
692
692
 
693
693
  # The page's main frame. Page is guaranteed to have a main frame which persists during navigations.
@@ -1282,7 +1282,7 @@ module Playwright
1282
1282
  # return response.ok
1283
1283
  #
1284
1284
  # # or with a lambda
1285
- # with page.expect_response(lambda response: response.url == "https://example.com" and response.status === 200) as response_info:
1285
+ # with page.expect_response(lambda response: response.url == "https://example.com" and response.status == 200) as response_info:
1286
1286
  # page.click("input")
1287
1287
  # response = response_info.value
1288
1288
  # return response.ok
@@ -1387,8 +1387,8 @@ module Playwright
1387
1387
  end
1388
1388
 
1389
1389
  # @nodoc
1390
- def start_js_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1391
- wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1390
+ def start_css_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1391
+ wrap_impl(@impl.start_css_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1392
1392
  end
1393
1393
 
1394
1394
  # @nodoc
@@ -1402,8 +1402,8 @@ module Playwright
1402
1402
  end
1403
1403
 
1404
1404
  # @nodoc
1405
- def start_css_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1406
- wrap_impl(@impl.start_css_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1405
+ def start_js_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
1406
+ wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1407
1407
  end
1408
1408
 
1409
1409
  # @nodoc
@@ -87,13 +87,13 @@ module Playwright
87
87
  end
88
88
 
89
89
  # @nodoc
90
- def android
91
- wrap_impl(@impl.android)
90
+ def electron
91
+ wrap_impl(@impl.electron)
92
92
  end
93
93
 
94
94
  # @nodoc
95
- def electron
96
- wrap_impl(@impl.electron)
95
+ def android
96
+ wrap_impl(@impl.android)
97
97
  end
98
98
 
99
99
  # -- inherited from EventEmitter --
@@ -47,8 +47,9 @@ module Playwright
47
47
  contentType: nil,
48
48
  headers: nil,
49
49
  path: nil,
50
+ response: nil,
50
51
  status: nil)
51
- wrap_impl(@impl.fulfill(body: unwrap_impl(body), contentType: unwrap_impl(contentType), headers: unwrap_impl(headers), path: unwrap_impl(path), status: unwrap_impl(status)))
52
+ wrap_impl(@impl.fulfill(body: unwrap_impl(body), contentType: unwrap_impl(contentType), headers: unwrap_impl(headers), path: unwrap_impl(path), response: unwrap_impl(response), status: unwrap_impl(status)))
52
53
  end
53
54
 
54
55
  # A request to be routed.
@@ -22,8 +22,13 @@ module Playwright
22
22
  # page.goto("https://playwright.dev")
23
23
  # context.tracing.stop(path = "trace.zip")
24
24
  # ```
25
- def start(name: nil, screenshots: nil, snapshots: nil, title: nil)
26
- wrap_impl(@impl.start(name: unwrap_impl(name), screenshots: unwrap_impl(screenshots), snapshots: unwrap_impl(snapshots), title: unwrap_impl(title)))
25
+ def start(
26
+ name: nil,
27
+ screenshots: nil,
28
+ snapshots: nil,
29
+ sources: nil,
30
+ title: nil)
31
+ wrap_impl(@impl.start(name: unwrap_impl(name), screenshots: unwrap_impl(screenshots), snapshots: unwrap_impl(snapshots), sources: unwrap_impl(sources), title: unwrap_impl(title)))
27
32
  end
28
33
 
29
34
  # Start a new trace chunk. If you'd like to record multiple traces on the same `BrowserContext`, use
@@ -58,5 +63,27 @@ module Playwright
58
63
  def stop_chunk(path: nil)
59
64
  wrap_impl(@impl.stop_chunk(path: unwrap_impl(path)))
60
65
  end
66
+
67
+ # -- inherited from EventEmitter --
68
+ # @nodoc
69
+ def off(event, callback)
70
+ event_emitter_proxy.off(event, callback)
71
+ end
72
+
73
+ # -- inherited from EventEmitter --
74
+ # @nodoc
75
+ def once(event, callback)
76
+ event_emitter_proxy.once(event, callback)
77
+ end
78
+
79
+ # -- inherited from EventEmitter --
80
+ # @nodoc
81
+ def on(event, callback)
82
+ event_emitter_proxy.on(event, callback)
83
+ end
84
+
85
+ private def event_emitter_proxy
86
+ @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
87
+ end
61
88
  end
62
89
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playwright-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.3
4
+ version: 1.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-08 00:00:00.000000000 Z
11
+ date: 2022-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -304,6 +304,7 @@ files:
304
304
  - lib/playwright/channel_owners/route.rb
305
305
  - lib/playwright/channel_owners/selectors.rb
306
306
  - lib/playwright/channel_owners/stream.rb
307
+ - lib/playwright/channel_owners/tracing.rb
307
308
  - lib/playwright/channel_owners/web_socket.rb
308
309
  - lib/playwright/channel_owners/worker.rb
309
310
  - lib/playwright/connection.rb
@@ -329,7 +330,6 @@ files:
329
330
  - lib/playwright/select_option_values.rb
330
331
  - lib/playwright/timeout_settings.rb
331
332
  - lib/playwright/touchscreen_impl.rb
332
- - lib/playwright/tracing_impl.rb
333
333
  - lib/playwright/transport.rb
334
334
  - lib/playwright/url_matcher.rb
335
335
  - lib/playwright/utils.rb
@@ -396,5 +396,5 @@ requirements: []
396
396
  rubygems_version: 3.3.7
397
397
  signing_key:
398
398
  specification_version: 4
399
- summary: The Ruby binding of playwright driver 1.18.1
399
+ summary: The Ruby binding of playwright driver 1.19.0
400
400
  test_files: []