playwright-ruby-client 1.18.3 → 1.19.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.
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: []