playwright-ruby-client 1.32.0 → 1.33.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: 495cb2986f254eece67f5db9b5f7f528e6ee4ce450d8cb9f33710fffd33f6f36
4
- data.tar.gz: a77adbc84c2b816988262c71a44772d314c9a6fef5420d8122b71ee698c1bd43
3
+ metadata.gz: ebc7a6ffab254ce53486bcaf8ad642a42fbadd77f33f48598ee721935f795c98
4
+ data.tar.gz: bf6473ce5c3ea31bdcca4f072b68aeb4b1b49b0ffb24cc39a7d17955e5de49cf
5
5
  SHA512:
6
- metadata.gz: 6b4a172fe40f17bd6b6177b623eeb8397d2e696e65c1a84a318dfcd6df6cd134460e1924b30ebf030402d8ba0c20823d178d9a9eef822e66ea39801cf63fa2a7
7
- data.tar.gz: 5682df9be25bd8ff3a97f9b85d925c4ca410c12570f18f238dee17188a3520357b32ad5265f49bcfab371bfb83ae12723c8a039c56608c79832661f7c65c9221
6
+ metadata.gz: 1e36fed96c70031d7b78ffffe1b3408251fb86b64afb634304d8fe3434b263de696e99b42cb330bb75b2f68a80683caf56e050dddf1b9ead61d97f2dd885b270
7
+ data.tar.gz: eb7607a301b420b0c3c587dfa562eccf459a943e425da930c7739a2faccb46888dbfeb84bd83953ef8eb1446322cdc8cd4c4e58f3ca71515999e11dfcd3ba121
@@ -779,7 +779,12 @@ Returns whether the element is [visible](https://playwright.dev/python/docs/acti
779
779
  ## locator
780
780
 
781
781
  ```
782
- def locator(selector, has: nil, hasText: nil)
782
+ def locator(
783
+ selector,
784
+ has: nil,
785
+ hasNot: nil,
786
+ hasNotText: nil,
787
+ hasText: nil)
783
788
  ```
784
789
 
785
790
 
@@ -284,7 +284,12 @@ Returns locator to the last matching frame.
284
284
  ## locator
285
285
 
286
286
  ```
287
- def locator(selectorOrLocator, has: nil, hasText: nil)
287
+ def locator(
288
+ selectorOrLocator,
289
+ has: nil,
290
+ hasNot: nil,
291
+ hasNotText: nil,
292
+ hasText: nil)
288
293
  ```
289
294
 
290
295
 
@@ -20,7 +20,11 @@ def all
20
20
  When locator points to a list of elements, returns array of locators, pointing
21
21
  to respective elements.
22
22
 
23
- Note that [Locator#all](./locator#all) does not wait for elements to match the locator, and instead immediately returns whatever is present in the page. To avoid flakiness when elements are loaded dynamically, wait for the loading to finish before calling [Locator#all](./locator#all).
23
+ **NOTE**: [Locator#all](./locator#all) does not wait for elements to match the locator, and instead immediately returns whatever is present in the page.
24
+
25
+ When the list of elements changes dynamically, [Locator#all](./locator#all) will produce unpredictable and flaky results.
26
+
27
+ When the list of elements is stable, but loaded dynamically, wait for the full list to finish loading before calling [Locator#all](./locator#all).
24
28
 
25
29
  **Usage**
26
30
 
@@ -443,7 +447,7 @@ To send fine-grained keyboard events, use [Locator#type](./locator#type).
443
447
  ## filter
444
448
 
445
449
  ```
446
- def filter(has: nil, hasText: nil)
450
+ def filter(has: nil, hasNot: nil, hasNotText: nil, hasText: nil)
447
451
  ```
448
452
 
449
453
 
@@ -915,7 +919,12 @@ banana = page.get_by_role("listitem").last
915
919
  ## locator
916
920
 
917
921
  ```
918
- def locator(selectorOrLocator, has: nil, hasText: nil)
922
+ def locator(
923
+ selectorOrLocator,
924
+ has: nil,
925
+ hasNot: nil,
926
+ hasNotText: nil,
927
+ hasText: nil)
919
928
  ```
920
929
 
921
930
 
@@ -938,6 +947,29 @@ Returns locator to the n-th matching element. It's zero based, `nth(0)` selects
938
947
  banana = page.get_by_role("listitem").nth(2)
939
948
  ```
940
949
 
950
+ ## or
951
+
952
+ ```
953
+ def or(locator)
954
+ ```
955
+
956
+
957
+ Creates a locator that matches either of the two locators.
958
+
959
+ **Usage**
960
+
961
+ Consider a scenario where you'd like to click on a "New email" button, but sometimes a security settings dialog shows up instead. In this case, you can wait for either a "New email" button, or a dialog and act accordingly.
962
+
963
+ ```ruby
964
+ new_email = page.get_by_role("button", name: "New")
965
+ dialog = page.get_by_text("Confirm security settings")
966
+ new_email.or(dialog).wait_for(state: 'visible')
967
+ if dialog.visible?
968
+ page.get_by_role("button", name: "Dismiss").click
969
+ end
970
+ new_email.click
971
+ ```
972
+
941
973
  ## page
942
974
 
943
975
  ```
@@ -1015,7 +1015,12 @@ Returns whether the element is [visible](https://playwright.dev/python/docs/acti
1015
1015
  ## locator
1016
1016
 
1017
1017
  ```
1018
- def locator(selector, has: nil, hasText: nil)
1018
+ def locator(
1019
+ selector,
1020
+ has: nil,
1021
+ hasNot: nil,
1022
+ hasNotText: nil,
1023
+ hasText: nil)
1019
1024
  ```
1020
1025
 
1021
1026
 
@@ -122,6 +122,7 @@ def fetch(
122
122
  maxRedirects: nil,
123
123
  method: nil,
124
124
  postData: nil,
125
+ timeout: nil,
125
126
  url: nil)
126
127
  ```
127
128
 
@@ -463,6 +463,7 @@
463
463
  * last
464
464
  * locator
465
465
  * nth
466
+ * or
466
467
  * page
467
468
  * press
468
469
  * screenshot
@@ -418,8 +418,20 @@ module Playwright
418
418
  nil
419
419
  end
420
420
 
421
- def locator(selector, hasText: nil, has: nil)
422
- LocatorImpl.new(frame: self, timeout_settings: @page.send(:timeout_settings), selector: selector, hasText: hasText, has: has)
421
+ def locator(
422
+ selector,
423
+ has: nil,
424
+ hasNot: nil,
425
+ hasNotText: nil,
426
+ hasText: nil)
427
+ LocatorImpl.new(
428
+ frame: self,
429
+ timeout_settings: @page.send(:timeout_settings),
430
+ selector: selector,
431
+ has: has,
432
+ hasNot: hasNot,
433
+ hasNotText: hasNotText,
434
+ hasText: hasText)
423
435
  end
424
436
 
425
437
  def frame_locator(selector)
@@ -614,8 +614,18 @@ module Playwright
614
614
  timeout: timeout)
615
615
  end
616
616
 
617
- def locator(selector, hasText: nil, has: nil)
618
- @main_frame.locator(selector, hasText: hasText, has: has)
617
+ def locator(
618
+ selector,
619
+ has: nil,
620
+ hasNot: nil,
621
+ hasNotText: nil,
622
+ hasText: nil)
623
+ @main_frame.locator(
624
+ selector,
625
+ has: has,
626
+ hasNot: hasNot,
627
+ hasNotText: hasNotText,
628
+ hasText: hasText)
619
629
  end
620
630
 
621
631
  def frame_locator(selector)
@@ -19,6 +19,7 @@ module Playwright
19
19
  responseEnd: -1,
20
20
  }
21
21
  @fallback_overrides = {}
22
+ @url = @initializer['url']
22
23
  end
23
24
 
24
25
  private def fallback_overrides
@@ -35,7 +36,11 @@ module Playwright
35
36
  end
36
37
 
37
38
  def url
38
- @fallback_overrides[:url] || @initializer['url']
39
+ @fallback_overrides[:url] || @url
40
+ end
41
+
42
+ private def internal_url
43
+ @url
39
44
  end
40
45
 
41
46
  def resource_type
@@ -21,7 +21,7 @@ module Playwright
21
21
 
22
22
  def abort(errorCode: nil)
23
23
  handling_with_result(true) do
24
- params = { errorCode: errorCode }.compact
24
+ params = { requestUrl: request.send(:internal_url), errorCode: errorCode }.compact
25
25
  # TODO _race_with_page_close
26
26
  @channel.async_send_message_to_server('abort', params)
27
27
  end
@@ -91,6 +91,7 @@ module Playwright
91
91
 
92
92
  params[:status] = option_status || 200
93
93
  params[:headers] = HttpHeaders.new(param_headers).as_serialized
94
+ params[:requestUrl] = request.send(:internal_url)
94
95
 
95
96
  @channel.async_send_message_to_server('fulfill', params)
96
97
  end
@@ -109,7 +110,7 @@ module Playwright
109
110
  end
110
111
  end
111
112
 
112
- def fetch(headers: nil, method: nil, postData: nil, url: nil, maxRedirects: nil)
113
+ def fetch(headers: nil, method: nil, postData: nil, url: nil, maxRedirects: nil, timeout: nil)
113
114
  api_request_context = request.frame.page.context.request
114
115
  api_request_context.send(:_inner_fetch,
115
116
  request,
@@ -118,6 +119,7 @@ module Playwright
118
119
  method: method,
119
120
  data: postData,
120
121
  maxRedirects: maxRedirects,
122
+ timeout: timeout,
121
123
  )
122
124
  end
123
125
 
@@ -152,6 +154,7 @@ module Playwright
152
154
  if post_data_for_wire
153
155
  params[:postData] = post_data_for_wire
154
156
  end
157
+ params[:requestUrl] = request.send(:internal_url)
155
158
 
156
159
  # TODO _race_with_page_close
157
160
  @channel.async_send_message_to_server('continue', params)
@@ -10,14 +10,20 @@ module Playwright
10
10
  @frame_selector = frame_selector
11
11
  end
12
12
 
13
- def locator(selector, hasText: nil, has: nil)
13
+ def locator(
14
+ selector,
15
+ has: nil,
16
+ hasNot: nil,
17
+ hasNotText: nil,
18
+ hasText: nil)
14
19
  LocatorImpl.new(
15
20
  frame: @frame,
16
21
  timeout_settings: @timeout_settings,
17
22
  selector: "#{@frame_selector} >> internal:control=enter-frame >> #{selector}",
18
- hasText: hasText,
19
23
  has: has,
20
- )
24
+ hasNot: hasNot,
25
+ hasNotText: hasNotText,
26
+ hasText: hasText)
21
27
  end
22
28
 
23
29
  def frame_locator(selector)
@@ -5,7 +5,7 @@ module Playwright
5
5
  define_api_implementation :LocatorImpl do
6
6
  include LocatorUtils
7
7
 
8
- def initialize(frame:, timeout_settings:, selector:, hasText: nil, has: nil)
8
+ def initialize(frame:, timeout_settings:, selector:, has: nil, hasNot: nil, hasNotText: nil, hasText: nil)
9
9
  @frame = frame
10
10
  @timeout_settings = timeout_settings
11
11
  selector_scopes = [selector]
@@ -16,11 +16,22 @@ module Playwright
16
16
 
17
17
  if has
18
18
  unless same_frame?(has)
19
- raise DifferentFrameError.new
19
+ raise DifferentFrameError.new('has')
20
20
  end
21
21
  selector_scopes << "internal:has=#{has.send(:selector_json)}"
22
22
  end
23
23
 
24
+ if hasNotText
25
+ selector_scopes << "internal:has-not-text=#{escape_for_text_selector(hasNotText, false)}"
26
+ end
27
+
28
+ if hasNot
29
+ unless same_frame?(hasNot)
30
+ raise DifferentFrameError.new('hasNot')
31
+ end
32
+ selector_scopes << "internal:has-not=#{hasNot.send(:selector_json)}"
33
+ end
34
+
24
35
  @selector = selector_scopes.join(' >> ')
25
36
  end
26
37
 
@@ -36,8 +47,8 @@ module Playwright
36
47
  end
37
48
 
38
49
  class DifferentFrameError < StandardError
39
- def initialize
40
- super('Inner "has" locator must belong to the same frame.')
50
+ def initialize(method_name)
51
+ super("Inner \"#{method_name}\" locator must belong to the same frame.")
41
52
  end
42
53
  end
43
54
 
@@ -190,14 +201,20 @@ module Playwright
190
201
  @frame.fill(@selector, '', strict: true, force: force, noWaitAfter: noWaitAfter, timeout: timeout)
191
202
  end
192
203
 
193
- def locator(selector, hasText: nil, has: nil)
204
+ def locator(
205
+ selector,
206
+ has: nil,
207
+ hasNot: nil,
208
+ hasNotText: nil,
209
+ hasText: nil)
194
210
  LocatorImpl.new(
195
211
  frame: @frame,
196
212
  timeout_settings: @timeout_settings,
197
213
  selector: "#{@selector} >> #{selector}",
198
- hasText: hasText,
199
214
  has: has,
200
- )
215
+ hasNot: hasNot,
216
+ hasNotText: hasNotText,
217
+ hasText: hasText)
201
218
  end
202
219
 
203
220
  def frame_locator(selector)
@@ -216,14 +233,15 @@ module Playwright
216
233
  @frame.query_selector_all(@selector)
217
234
  end
218
235
 
219
- def filter(has: nil, hasText: nil)
236
+ def filter(has: nil, hasNot: nil, hasNotText: nil, hasText: nil)
220
237
  LocatorImpl.new(
221
238
  frame: @frame,
222
239
  timeout_settings: @timeout_settings,
223
240
  selector: @selector,
224
- hasText: hasText,
225
241
  has: has,
226
- )
242
+ hasNot: hasNot,
243
+ hasNotText: hasNotText,
244
+ hasText: hasText)
227
245
  end
228
246
 
229
247
  def first
@@ -250,6 +268,17 @@ module Playwright
250
268
  )
251
269
  end
252
270
 
271
+ def or(locator)
272
+ unless same_frame?(locator)
273
+ raise DifferentFrameError.new('locator')
274
+ end
275
+ LocatorImpl.new(
276
+ frame: @frame,
277
+ timeout_settings: @timeout_settings,
278
+ selector: "#{@selector} >> internal:or=#{locator.send(:selector_json)}",
279
+ )
280
+ end
281
+
253
282
  def focus(timeout: nil)
254
283
  @frame.focus(@selector, strict: true, timeout: timeout)
255
284
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.32.0'
5
- COMPATIBLE_PLAYWRIGHT_VERSION = '1.32.2'
4
+ VERSION = '1.33.0'
5
+ COMPATIBLE_PLAYWRIGHT_VERSION = '1.33.0'
6
6
  end
@@ -664,8 +664,13 @@ module Playwright
664
664
  # [Learn more about locators](../locators.md).
665
665
  #
666
666
  # [Learn more about locators](../locators.md).
667
- def locator(selector, has: nil, hasText: nil)
668
- wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
667
+ def locator(
668
+ selector,
669
+ has: nil,
670
+ hasNot: nil,
671
+ hasNotText: nil,
672
+ hasText: nil)
673
+ wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasNot: unwrap_impl(hasNot), hasNotText: unwrap_impl(hasNotText), hasText: unwrap_impl(hasText)))
669
674
  end
670
675
 
671
676
  #
@@ -241,8 +241,13 @@ module Playwright
241
241
  # The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options, similar to [`method: Locator.filter`] method.
242
242
  #
243
243
  # [Learn more about locators](../locators.md).
244
- def locator(selectorOrLocator, has: nil, hasText: nil)
245
- wrap_impl(@impl.locator(unwrap_impl(selectorOrLocator), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
244
+ def locator(
245
+ selectorOrLocator,
246
+ has: nil,
247
+ hasNot: nil,
248
+ hasNotText: nil,
249
+ hasText: nil)
250
+ wrap_impl(@impl.locator(unwrap_impl(selectorOrLocator), has: unwrap_impl(has), hasNot: unwrap_impl(hasNot), hasNotText: unwrap_impl(hasNotText), hasText: unwrap_impl(hasText)))
246
251
  end
247
252
 
248
253
  #
@@ -10,7 +10,11 @@ module Playwright
10
10
  # When locator points to a list of elements, returns array of locators, pointing
11
11
  # to respective elements.
12
12
  #
13
- # Note that [`method: Locator.all`] does not wait for elements to match the locator, and instead immediately returns whatever is present in the page. To avoid flakiness when elements are loaded dynamically, wait for the loading to finish before calling [`method: Locator.all`].
13
+ # **NOTE**: [`method: Locator.all`] does not wait for elements to match the locator, and instead immediately returns whatever is present in the page.
14
+ #
15
+ # When the list of elements changes dynamically, [`method: Locator.all`] will produce unpredictable and flaky results.
16
+ #
17
+ # When the list of elements is stable, but loaded dynamically, wait for the full list to finish loading before calling [`method: Locator.all`].
14
18
  #
15
19
  # **Usage**
16
20
  #
@@ -393,8 +397,8 @@ module Playwright
393
397
  # .filter(has=page.get_by_role("button", name="column 2 button"))
394
398
  # .screenshot()
395
399
  # ```
396
- def filter(has: nil, hasText: nil)
397
- wrap_impl(@impl.filter(has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
400
+ def filter(has: nil, hasNot: nil, hasNotText: nil, hasText: nil)
401
+ wrap_impl(@impl.filter(has: unwrap_impl(has), hasNot: unwrap_impl(hasNot), hasNotText: unwrap_impl(hasNotText), hasText: unwrap_impl(hasText)))
398
402
  end
399
403
 
400
404
  #
@@ -773,8 +777,13 @@ module Playwright
773
777
  # The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options, similar to [`method: Locator.filter`] method.
774
778
  #
775
779
  # [Learn more about locators](../locators.md).
776
- def locator(selectorOrLocator, has: nil, hasText: nil)
777
- wrap_impl(@impl.locator(unwrap_impl(selectorOrLocator), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
780
+ def locator(
781
+ selectorOrLocator,
782
+ has: nil,
783
+ hasNot: nil,
784
+ hasNotText: nil,
785
+ hasText: nil)
786
+ wrap_impl(@impl.locator(unwrap_impl(selectorOrLocator), has: unwrap_impl(has), hasNot: unwrap_impl(hasNot), hasNotText: unwrap_impl(hasNotText), hasText: unwrap_impl(hasText)))
778
787
  end
779
788
 
780
789
  #
@@ -789,6 +798,25 @@ module Playwright
789
798
  wrap_impl(@impl.nth(unwrap_impl(index)))
790
799
  end
791
800
 
801
+ #
802
+ # Creates a locator that matches either of the two locators.
803
+ #
804
+ # **Usage**
805
+ #
806
+ # Consider a scenario where you'd like to click on a "New email" button, but sometimes a security settings dialog shows up instead. In this case, you can wait for either a "New email" button, or a dialog and act accordingly.
807
+ #
808
+ # ```python sync
809
+ # new_email = page.get_by_role("button", name="New")
810
+ # dialog = page.get_by_text("Confirm security settings")
811
+ # expect(new_email.or_(dialog)).to_be_visible()
812
+ # if (dialog.is_visible())
813
+ # page.get_by_role("button", name="Dismiss").click()
814
+ # new_email.click()
815
+ # ```
816
+ def or(locator)
817
+ wrap_impl(@impl.or(unwrap_impl(locator)))
818
+ end
819
+
792
820
  #
793
821
  # A page this locator belongs to.
794
822
  def page
@@ -916,8 +916,13 @@ module Playwright
916
916
  # Locator is resolved to the element immediately before performing an action, so a series of actions on the same locator can in fact be performed on different DOM elements. That would happen if the DOM structure between those actions has changed.
917
917
  #
918
918
  # [Learn more about locators](../locators.md).
919
- def locator(selector, has: nil, hasText: nil)
920
- wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
919
+ def locator(
920
+ selector,
921
+ has: nil,
922
+ hasNot: nil,
923
+ hasNotText: nil,
924
+ hasText: nil)
925
+ wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasNot: unwrap_impl(hasNot), hasNotText: unwrap_impl(hasNotText), hasText: unwrap_impl(hasText)))
921
926
  end
922
927
 
923
928
  #
@@ -1667,6 +1672,11 @@ module Playwright
1667
1672
  raise NotImplementedError.new('wait_for_event is not implemented yet.')
1668
1673
  end
1669
1674
 
1675
+ # @nodoc
1676
+ def stop_css_coverage
1677
+ wrap_impl(@impl.stop_css_coverage)
1678
+ end
1679
+
1670
1680
  # @nodoc
1671
1681
  def owned_context=(req)
1672
1682
  wrap_impl(@impl.owned_context=(unwrap_impl(req)))
@@ -1692,11 +1702,6 @@ module Playwright
1692
1702
  wrap_impl(@impl.start_css_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
1693
1703
  end
1694
1704
 
1695
- # @nodoc
1696
- def stop_css_coverage
1697
- wrap_impl(@impl.stop_css_coverage)
1698
- end
1699
-
1700
1705
  # -- inherited from EventEmitter --
1701
1706
  # @nodoc
1702
1707
  def off(event, callback)
@@ -119,8 +119,9 @@ module Playwright
119
119
  maxRedirects: nil,
120
120
  method: nil,
121
121
  postData: nil,
122
+ timeout: nil,
122
123
  url: nil)
123
- wrap_impl(@impl.fetch(headers: unwrap_impl(headers), maxRedirects: unwrap_impl(maxRedirects), method: unwrap_impl(method), postData: unwrap_impl(postData), url: unwrap_impl(url)))
124
+ wrap_impl(@impl.fetch(headers: unwrap_impl(headers), maxRedirects: unwrap_impl(maxRedirects), method: unwrap_impl(method), postData: unwrap_impl(postData), timeout: unwrap_impl(timeout), url: unwrap_impl(url)))
124
125
  end
125
126
 
126
127
  #
data/sig/playwright.rbs CHANGED
@@ -47,7 +47,7 @@ module Playwright
47
47
  def abort: (?errorCode: String) -> void
48
48
  def continue: (?headers: Hash[untyped, untyped], ?method: String, ?postData: (String | String | untyped), ?url: String) -> void
49
49
  def fallback: (?headers: Hash[untyped, untyped], ?method: String, ?postData: (String | String | untyped), ?url: String) -> void
50
- def fetch: (?headers: Hash[untyped, untyped], ?maxRedirects: Integer, ?method: String, ?postData: (String | String | untyped), ?url: String) -> APIResponse
50
+ def fetch: (?headers: Hash[untyped, untyped], ?maxRedirects: Integer, ?method: String, ?postData: (String | String | untyped), ?timeout: Float, ?url: String) -> APIResponse
51
51
  def fulfill: (?body: (String | String), ?contentType: String, ?headers: Hash[untyped, untyped], ?json: untyped, ?path: (String | File), ?response: APIResponse, ?status: Integer) -> void
52
52
  def request: -> Request
53
53
  end
@@ -184,7 +184,7 @@ module Playwright
184
184
  def enabled?: (String selector, ?strict: bool, ?timeout: Float) -> bool
185
185
  def hidden?: (String selector, ?strict: bool, ?timeout: Float) -> bool
186
186
  def visible?: (String selector, ?strict: bool, ?timeout: Float) -> bool
187
- def locator: (String selector, ?has: Locator, ?hasText: (String | Regexp)) -> Locator
187
+ def locator: (String selector, ?has: Locator, ?hasNot: Locator, ?hasNotText: (String | Regexp), ?hasText: (String | Regexp)) -> Locator
188
188
  def name: -> String
189
189
  def page: -> Page
190
190
  def parent_frame: -> (nil | Frame)
@@ -293,7 +293,7 @@ module Playwright
293
293
  def enabled?: (String selector, ?strict: bool, ?timeout: Float) -> bool
294
294
  def hidden?: (String selector, ?strict: bool, ?timeout: Float) -> bool
295
295
  def visible?: (String selector, ?strict: bool, ?timeout: Float) -> bool
296
- def locator: (String selector, ?has: Locator, ?hasText: (String | Regexp)) -> Locator
296
+ def locator: (String selector, ?has: Locator, ?hasNot: Locator, ?hasNotText: (String | Regexp), ?hasText: (String | Regexp)) -> Locator
297
297
  def main_frame: -> Frame
298
298
  def opener: -> (nil | Page)
299
299
  def pause: -> void
@@ -449,7 +449,7 @@ module Playwright
449
449
  def evaluate_all: (String expression, ?arg: untyped) -> untyped
450
450
  def evaluate_handle: (String expression, ?arg: untyped, ?timeout: Float) -> JSHandle
451
451
  def fill: (String value, ?force: bool, ?noWaitAfter: bool, ?timeout: Float) -> void
452
- def filter: (?has: Locator, ?hasText: (String | Regexp)) -> Locator
452
+ def filter: (?has: Locator, ?hasNot: Locator, ?hasNotText: (String | Regexp), ?hasText: (String | Regexp)) -> Locator
453
453
  def first: -> Locator
454
454
  def focus: (?timeout: Float) -> void
455
455
  def frame_locator: (String selector) -> FrameLocator
@@ -474,8 +474,9 @@ module Playwright
474
474
  def hidden?: (?timeout: Float) -> bool
475
475
  def visible?: (?timeout: Float) -> bool
476
476
  def last: -> Locator
477
- def locator: ((String | Locator) selectorOrLocator, ?has: Locator, ?hasText: (String | Regexp)) -> Locator
477
+ def locator: ((String | Locator) selectorOrLocator, ?has: Locator, ?hasNot: Locator, ?hasNotText: (String | Regexp), ?hasText: (String | Regexp)) -> Locator
478
478
  def nth: (Integer index) -> Locator
479
+ def or: (Locator locator) -> Locator
479
480
  def page: -> Page
480
481
  def press: (String key, ?delay: Float, ?noWaitAfter: bool, ?timeout: Float) -> void
481
482
  def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?mask: Array[untyped], ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
@@ -504,7 +505,7 @@ module Playwright
504
505
  def get_by_text: ((String | Regexp) text, ?exact: bool) -> Locator
505
506
  def get_by_title: ((String | Regexp) text, ?exact: bool) -> Locator
506
507
  def last: -> FrameLocator
507
- def locator: ((String | Locator) selectorOrLocator, ?has: Locator, ?hasText: (String | Regexp)) -> Locator
508
+ def locator: ((String | Locator) selectorOrLocator, ?has: Locator, ?hasNot: Locator, ?hasNotText: (String | Regexp), ?hasText: (String | Regexp)) -> Locator
508
509
  def nth: (Integer index) -> FrameLocator
509
510
  end
510
511
 
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.32.0
4
+ version: 1.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-11 00:00:00.000000000 Z
11
+ date: 2023-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -401,5 +401,5 @@ requirements: []
401
401
  rubygems_version: 3.3.26
402
402
  signing_key:
403
403
  specification_version: 4
404
- summary: The Ruby binding of playwright driver 1.32.2
404
+ summary: The Ruby binding of playwright driver 1.33.0
405
405
  test_files: []