playwright-ruby-client 1.25.0 → 1.27.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/api_request_context.md +93 -0
  3. data/documentation/docs/api/browser_context.md +3 -3
  4. data/documentation/docs/api/browser_type.md +8 -0
  5. data/documentation/docs/api/download.md +1 -1
  6. data/documentation/docs/api/element_handle.md +1 -1
  7. data/documentation/docs/api/file_chooser.md +1 -1
  8. data/documentation/docs/api/frame.md +103 -4
  9. data/documentation/docs/api/frame_locator.md +105 -5
  10. data/documentation/docs/api/locator.md +121 -6
  11. data/documentation/docs/api/page.md +119 -10
  12. data/documentation/docs/api/tracing.md +1 -1
  13. data/documentation/docs/article/guides/rails_integration_with_null_driver.md +59 -0
  14. data/documentation/docs/include/api_coverage.md +29 -0
  15. data/documentation/src/components/HomepageFeatures.js +1 -1
  16. data/lib/playwright/channel_owners/api_request_context.rb +23 -120
  17. data/lib/playwright/channel_owners/browser_context.rb +4 -5
  18. data/lib/playwright/channel_owners/dialog.rb +1 -1
  19. data/lib/playwright/channel_owners/frame.rb +4 -0
  20. data/lib/playwright/channel_owners/page.rb +7 -6
  21. data/lib/playwright/channel_owners/selectors.rb +4 -0
  22. data/lib/playwright/frame_locator_impl.rb +6 -2
  23. data/lib/playwright/locator_impl.rb +7 -31
  24. data/lib/playwright/locator_utils.rb +142 -0
  25. data/lib/playwright/route_handler.rb +2 -2
  26. data/lib/playwright/version.rb +2 -2
  27. data/lib/playwright_api/api_request_context.rb +92 -7
  28. data/lib/playwright_api/browser_context.rb +3 -3
  29. data/lib/playwright_api/browser_type.rb +6 -0
  30. data/lib/playwright_api/download.rb +1 -1
  31. data/lib/playwright_api/element_handle.rb +1 -1
  32. data/lib/playwright_api/file_chooser.rb +1 -1
  33. data/lib/playwright_api/frame.rb +78 -4
  34. data/lib/playwright_api/frame_locator.rb +79 -4
  35. data/lib/playwright_api/locator.rb +94 -5
  36. data/lib/playwright_api/page.rb +93 -10
  37. data/lib/playwright_api/request.rb +4 -4
  38. data/lib/playwright_api/response.rb +4 -4
  39. data/lib/playwright_api/selectors.rb +11 -0
  40. data/lib/playwright_api/tracing.rb +1 -1
  41. data/lib/playwright_api/worker.rb +4 -4
  42. metadata +4 -3
@@ -11,14 +11,14 @@ module Playwright
11
11
  # **Strictness**
12
12
  #
13
13
  # Frame locators are strict. This means that all operations on frame locators will throw if more than one element matches
14
- # given selector.
14
+ # a given selector.
15
15
  #
16
16
  # ```python sync
17
17
  # # Throws if there are several frames in DOM:
18
- # page.frame_locator('.result-frame').locator('button').click()
18
+ # page.frame_locator('.result-frame').get_by_role('button').click()
19
19
  #
20
20
  # # Works because we explicitly tell locator to pick the first frame:
21
- # page.frame_locator('.result-frame').first.locator('button').click()
21
+ # page.frame_locator('.result-frame').first.get_by_role('button').click()
22
22
  # ```
23
23
  #
24
24
  # **Converting Locator to FrameLocator**
@@ -42,12 +42,87 @@ module Playwright
42
42
  wrap_impl(@impl.frame_locator(unwrap_impl(selector)))
43
43
  end
44
44
 
45
+ # Allows locating elements by their alt text. For example, this method will find the image by alt text "Castle":
46
+ #
47
+ # ```html
48
+ # <img alt='Castle'>
49
+ # ```
50
+ def get_by_alt_text(text, exact: nil)
51
+ wrap_impl(@impl.get_by_alt_text(unwrap_impl(text), exact: unwrap_impl(exact)))
52
+ end
53
+
54
+ # Allows locating input elements by the text of the associated label. For example, this method will find the input by
55
+ # label text Password in the following DOM:
56
+ #
57
+ # ```html
58
+ # <label for="password-input">Password:</label>
59
+ # <input id="password-input">
60
+ # ```
61
+ def get_by_label(text, exact: nil)
62
+ wrap_impl(@impl.get_by_label(unwrap_impl(text), exact: unwrap_impl(exact)))
63
+ end
64
+
65
+ # Allows locating input elements by the placeholder text. For example, this method will find the input by placeholder
66
+ # "Country":
67
+ #
68
+ # ```html
69
+ # <input placeholder="Country">
70
+ # ```
71
+ def get_by_placeholder(text, exact: nil)
72
+ wrap_impl(@impl.get_by_placeholder(unwrap_impl(text), exact: unwrap_impl(exact)))
73
+ end
74
+
75
+ # Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
76
+ # [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
77
+ # [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). Note that role selector **does not replace**
78
+ # accessibility audits and conformance tests, but rather gives early feedback about the ARIA guidelines.
79
+ #
80
+ # Note that many html elements have an implicitly
81
+ # [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings) that is recognized by the role selector. You
82
+ # can find all the [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not
83
+ # recommend** duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
84
+ def get_by_role(
85
+ role,
86
+ checked: nil,
87
+ disabled: nil,
88
+ expanded: nil,
89
+ includeHidden: nil,
90
+ level: nil,
91
+ name: nil,
92
+ pressed: nil,
93
+ selected: nil)
94
+ wrap_impl(@impl.get_by_role(unwrap_impl(role), checked: unwrap_impl(checked), disabled: unwrap_impl(disabled), expanded: unwrap_impl(expanded), includeHidden: unwrap_impl(includeHidden), level: unwrap_impl(level), name: unwrap_impl(name), pressed: unwrap_impl(pressed), selected: unwrap_impl(selected)))
95
+ end
96
+
97
+ # Locate element by the test id. By default, the `data-testid` attribute is used as a test id. Use
98
+ # [`method: Selectors.setTestIdAttribute`] to configure a different test id attribute if necessary.
99
+ def get_by_test_id(testId)
100
+ wrap_impl(@impl.get_by_test_id(unwrap_impl(testId)))
101
+ end
102
+
103
+ # Allows locating elements that contain given text.
104
+ def get_by_text(text, exact: nil)
105
+ wrap_impl(@impl.get_by_text(unwrap_impl(text), exact: unwrap_impl(exact)))
106
+ end
107
+
108
+ # Allows locating elements by their title. For example, this method will find the button by its title "Submit":
109
+ #
110
+ # ```html
111
+ # <button title='Place the order'>Order Now</button>
112
+ # ```
113
+ def get_by_title(text, exact: nil)
114
+ wrap_impl(@impl.get_by_title(unwrap_impl(text), exact: unwrap_impl(exact)))
115
+ end
116
+
45
117
  # Returns locator to the last matching frame.
46
118
  def last
47
119
  wrap_impl(@impl.last)
48
120
  end
49
121
 
50
- # The method finds an element matching the specified selector in the FrameLocator's subtree.
122
+ # The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options,
123
+ # similar to [`method: Locator.filter`] method.
124
+ #
125
+ # [Learn more about locators](../locators.md).
51
126
  def locator(selector, has: nil, hasText: nil)
52
127
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
53
128
  end
@@ -142,6 +142,21 @@ module Playwright
142
142
  wrap_impl(@impl.dispatch_event(unwrap_impl(type), eventInit: unwrap_impl(eventInit), timeout: unwrap_impl(timeout)))
143
143
  end
144
144
 
145
+ # This method drags the locator to another target locator or target position. It will first move to the source element,
146
+ # perform a `mousedown`, then move to the target element or position and perform a `mouseup`.
147
+ #
148
+ # ```python sync
149
+ # source = page.locator("#source")
150
+ # target = page.locator("#target")
151
+ #
152
+ # source.drag_to(target)
153
+ # # or specify exact positions relative to the top-left corners of the elements:
154
+ # source.drag_to(
155
+ # target,
156
+ # source_position={"x": 34, "y": 7},
157
+ # target_position={"x": 10, "y": 20}
158
+ # )
159
+ # ```
145
160
  def drag_to(
146
161
  target,
147
162
  force: nil,
@@ -232,7 +247,7 @@ module Playwright
232
247
  # # ...
233
248
  # row_locator
234
249
  # .filter(has_text="text in column 1")
235
- # .filter(has=page.locator("tr", has_text="column 2 button"))
250
+ # .filter(has=page.get_by_role("button", name="column 2 button"))
236
251
  # .screenshot()
237
252
  # ```
238
253
  def filter(has: nil, hasText: nil)
@@ -253,7 +268,7 @@ module Playwright
253
268
  # that iframe:
254
269
  #
255
270
  # ```python sync
256
- # locator = page.frame_locator("iframe").locator("text=Submit")
271
+ # locator = page.frame_locator("iframe").get_by_text("Submit")
257
272
  # locator.click()
258
273
  # ```
259
274
  def frame_locator(selector)
@@ -266,6 +281,78 @@ module Playwright
266
281
  end
267
282
  alias_method :[], :get_attribute
268
283
 
284
+ # Allows locating elements by their alt text. For example, this method will find the image by alt text "Castle":
285
+ #
286
+ # ```html
287
+ # <img alt='Castle'>
288
+ # ```
289
+ def get_by_alt_text(text, exact: nil)
290
+ wrap_impl(@impl.get_by_alt_text(unwrap_impl(text), exact: unwrap_impl(exact)))
291
+ end
292
+
293
+ # Allows locating input elements by the text of the associated label. For example, this method will find the input by
294
+ # label text Password in the following DOM:
295
+ #
296
+ # ```html
297
+ # <label for="password-input">Password:</label>
298
+ # <input id="password-input">
299
+ # ```
300
+ def get_by_label(text, exact: nil)
301
+ wrap_impl(@impl.get_by_label(unwrap_impl(text), exact: unwrap_impl(exact)))
302
+ end
303
+
304
+ # Allows locating input elements by the placeholder text. For example, this method will find the input by placeholder
305
+ # "Country":
306
+ #
307
+ # ```html
308
+ # <input placeholder="Country">
309
+ # ```
310
+ def get_by_placeholder(text, exact: nil)
311
+ wrap_impl(@impl.get_by_placeholder(unwrap_impl(text), exact: unwrap_impl(exact)))
312
+ end
313
+
314
+ # Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
315
+ # [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
316
+ # [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). Note that role selector **does not replace**
317
+ # accessibility audits and conformance tests, but rather gives early feedback about the ARIA guidelines.
318
+ #
319
+ # Note that many html elements have an implicitly
320
+ # [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings) that is recognized by the role selector. You
321
+ # can find all the [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not
322
+ # recommend** duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
323
+ def get_by_role(
324
+ role,
325
+ checked: nil,
326
+ disabled: nil,
327
+ expanded: nil,
328
+ includeHidden: nil,
329
+ level: nil,
330
+ name: nil,
331
+ pressed: nil,
332
+ selected: nil)
333
+ wrap_impl(@impl.get_by_role(unwrap_impl(role), checked: unwrap_impl(checked), disabled: unwrap_impl(disabled), expanded: unwrap_impl(expanded), includeHidden: unwrap_impl(includeHidden), level: unwrap_impl(level), name: unwrap_impl(name), pressed: unwrap_impl(pressed), selected: unwrap_impl(selected)))
334
+ end
335
+
336
+ # Locate element by the test id. By default, the `data-testid` attribute is used as a test id. Use
337
+ # [`method: Selectors.setTestIdAttribute`] to configure a different test id attribute if necessary.
338
+ def get_by_test_id(testId)
339
+ wrap_impl(@impl.get_by_test_id(unwrap_impl(testId)))
340
+ end
341
+
342
+ # Allows locating elements that contain given text.
343
+ def get_by_text(text, exact: nil)
344
+ wrap_impl(@impl.get_by_text(unwrap_impl(text), exact: unwrap_impl(exact)))
345
+ end
346
+
347
+ # Allows locating elements by their title. For example, this method will find the button by its title "Submit":
348
+ #
349
+ # ```html
350
+ # <button title='Place the order'>Order Now</button>
351
+ # ```
352
+ def get_by_title(text, exact: nil)
353
+ wrap_impl(@impl.get_by_title(unwrap_impl(text), exact: unwrap_impl(exact)))
354
+ end
355
+
269
356
  # Highlight the corresponding element(s) on the screen. Useful for debugging, don't commit the code that uses
270
357
  # [`method: Locator.highlight`].
271
358
  def highlight
@@ -344,8 +431,10 @@ module Playwright
344
431
  wrap_impl(@impl.last)
345
432
  end
346
433
 
347
- # The method finds an element matching the specified selector in the `Locator`'s subtree. It also accepts filter options,
434
+ # The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options,
348
435
  # similar to [`method: Locator.filter`] method.
436
+ #
437
+ # [Learn more about locators](../locators.md).
349
438
  def locator(selector, has: nil, hasText: nil)
350
439
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
351
440
  end
@@ -524,8 +613,8 @@ module Playwright
524
613
  # An example of typing into a text field and then submitting the form:
525
614
  #
526
615
  # ```python sync
527
- # element = page.locator("input")
528
- # element.type("some text")
616
+ # element = page.get_by_label("Password")
617
+ # element.type("my password")
529
618
  # element.press("Enter")
530
619
  # ```
531
620
  def type(text, delay: nil, noWaitAfter: nil, timeout: nil)
@@ -250,6 +250,19 @@ module Playwright
250
250
  wrap_impl(@impl.dispatch_event(unwrap_impl(selector), unwrap_impl(type), eventInit: unwrap_impl(eventInit), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
251
251
  end
252
252
 
253
+ # This method drags the source element to the target element. It will first move to the source element, perform a
254
+ # `mousedown`, then move to the target element and perform a `mouseup`.
255
+ #
256
+ # ```python sync
257
+ # page.drag_and_drop("#source", "#target")
258
+ # # or specify exact positions relative to the top-left corners of the elements:
259
+ # page.drag_and_drop(
260
+ # "#source",
261
+ # "#target",
262
+ # source_position={"x": 34, "y": 7},
263
+ # target_position={"x": 10, "y": 20}
264
+ # )
265
+ # ```
253
266
  def drag_and_drop(
254
267
  source,
255
268
  target,
@@ -553,7 +566,7 @@ module Playwright
553
566
  # id="my-frame">`:
554
567
  #
555
568
  # ```python sync
556
- # locator = page.frame_locator("#my-iframe").locator("text=Submit")
569
+ # locator = page.frame_locator("#my-iframe").get_by_text("Submit")
557
570
  # locator.click()
558
571
  # ```
559
572
  def frame_locator(selector)
@@ -570,6 +583,78 @@ module Playwright
570
583
  wrap_impl(@impl.get_attribute(unwrap_impl(selector), unwrap_impl(name), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
571
584
  end
572
585
 
586
+ # Allows locating elements by their alt text. For example, this method will find the image by alt text "Castle":
587
+ #
588
+ # ```html
589
+ # <img alt='Castle'>
590
+ # ```
591
+ def get_by_alt_text(text, exact: nil)
592
+ wrap_impl(@impl.get_by_alt_text(unwrap_impl(text), exact: unwrap_impl(exact)))
593
+ end
594
+
595
+ # Allows locating input elements by the text of the associated label. For example, this method will find the input by
596
+ # label text Password in the following DOM:
597
+ #
598
+ # ```html
599
+ # <label for="password-input">Password:</label>
600
+ # <input id="password-input">
601
+ # ```
602
+ def get_by_label(text, exact: nil)
603
+ wrap_impl(@impl.get_by_label(unwrap_impl(text), exact: unwrap_impl(exact)))
604
+ end
605
+
606
+ # Allows locating input elements by the placeholder text. For example, this method will find the input by placeholder
607
+ # "Country":
608
+ #
609
+ # ```html
610
+ # <input placeholder="Country">
611
+ # ```
612
+ def get_by_placeholder(text, exact: nil)
613
+ wrap_impl(@impl.get_by_placeholder(unwrap_impl(text), exact: unwrap_impl(exact)))
614
+ end
615
+
616
+ # Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
617
+ # [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
618
+ # [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). Note that role selector **does not replace**
619
+ # accessibility audits and conformance tests, but rather gives early feedback about the ARIA guidelines.
620
+ #
621
+ # Note that many html elements have an implicitly
622
+ # [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings) that is recognized by the role selector. You
623
+ # can find all the [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not
624
+ # recommend** duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
625
+ def get_by_role(
626
+ role,
627
+ checked: nil,
628
+ disabled: nil,
629
+ expanded: nil,
630
+ includeHidden: nil,
631
+ level: nil,
632
+ name: nil,
633
+ pressed: nil,
634
+ selected: nil)
635
+ wrap_impl(@impl.get_by_role(unwrap_impl(role), checked: unwrap_impl(checked), disabled: unwrap_impl(disabled), expanded: unwrap_impl(expanded), includeHidden: unwrap_impl(includeHidden), level: unwrap_impl(level), name: unwrap_impl(name), pressed: unwrap_impl(pressed), selected: unwrap_impl(selected)))
636
+ end
637
+
638
+ # Locate element by the test id. By default, the `data-testid` attribute is used as a test id. Use
639
+ # [`method: Selectors.setTestIdAttribute`] to configure a different test id attribute if necessary.
640
+ def get_by_test_id(testId)
641
+ wrap_impl(@impl.get_by_test_id(unwrap_impl(testId)))
642
+ end
643
+
644
+ # Allows locating elements that contain given text.
645
+ def get_by_text(text, exact: nil)
646
+ wrap_impl(@impl.get_by_text(unwrap_impl(text), exact: unwrap_impl(exact)))
647
+ end
648
+
649
+ # Allows locating elements by their title. For example, this method will find the button by its title "Submit":
650
+ #
651
+ # ```html
652
+ # <button title='Place the order'>Order Now</button>
653
+ # ```
654
+ def get_by_title(text, exact: nil)
655
+ wrap_impl(@impl.get_by_title(unwrap_impl(text), exact: unwrap_impl(exact)))
656
+ end
657
+
573
658
  # Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of the
574
659
  # last redirect. If can not go back, returns `null`.
575
660
  #
@@ -688,13 +773,11 @@ module Playwright
688
773
  wrap_impl(@impl.visible?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
689
774
  end
690
775
 
691
- # The method returns an element locator that can be used to perform actions on the page. Locator is resolved to the
692
- # element immediately before performing an action, so a series of actions on the same locator can in fact be performed on
693
- # different DOM elements. That would happen if the DOM structure between those actions has changed.
776
+ # The method returns an element locator that can be used to perform actions on this page / frame. Locator is resolved to
777
+ # the element immediately before performing an action, so a series of actions on the same locator can in fact be performed
778
+ # on different DOM elements. That would happen if the DOM structure between those actions has changed.
694
779
  #
695
780
  # [Learn more about locators](../locators.md).
696
- #
697
- # Shortcut for main frame's [`method: Frame.locator`].
698
781
  def locator(selector, has: nil, hasText: nil)
699
782
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
700
783
  end
@@ -1177,7 +1260,7 @@ module Playwright
1177
1260
  #
1178
1261
  # ```python sync
1179
1262
  # with page.expect_event("framenavigated") as event_info:
1180
- # page.click("button")
1263
+ # page.get_by_role("button")
1181
1264
  # frame = event_info.value
1182
1265
  # ```
1183
1266
  def expect_event(event, predicate: nil, timeout: nil, &block)
@@ -1228,13 +1311,13 @@ module Playwright
1228
1311
  # when this method is called. If current document has already reached the required state, resolves immediately.
1229
1312
  #
1230
1313
  # ```python sync
1231
- # page.click("button") # click triggers navigation.
1314
+ # page.get_by_role("button").click() # click triggers navigation.
1232
1315
  # page.wait_for_load_state() # the promise resolves after "load" event.
1233
1316
  # ```
1234
1317
  #
1235
1318
  # ```python sync
1236
1319
  # with page.expect_popup() as page_info:
1237
- # page.click("button") # click triggers a popup.
1320
+ # page.get_by_role("button").click() # click triggers a popup.
1238
1321
  # popup = page_info.value
1239
1322
  # # Following resolves after "domcontentloaded" event.
1240
1323
  # popup.wait_for_load_state("domcontentloaded")
@@ -1321,7 +1404,7 @@ module Playwright
1321
1404
  # `detached`.
1322
1405
  #
1323
1406
  # > NOTE: Playwright automatically waits for element to be ready before performing an action. Using `Locator` objects and
1324
- # web-first assertions make the code wait-for-selector-free.
1407
+ # web-first assertions makes the code wait-for-selector-free.
1325
1408
  #
1326
1409
  # Wait for the `selector` to satisfy `state` option (either appear/disappear from dom, or become visible/hidden). If at
1327
1410
  # the moment of calling the method `selector` already satisfies the condition, the method will return immediately. If the
@@ -152,13 +152,13 @@ module Playwright
152
152
  end
153
153
 
154
154
  # @nodoc
155
- def apply_fallback_overrides(overrides)
156
- wrap_impl(@impl.apply_fallback_overrides(unwrap_impl(overrides)))
155
+ def header_values(name)
156
+ wrap_impl(@impl.header_values(unwrap_impl(name)))
157
157
  end
158
158
 
159
159
  # @nodoc
160
- def header_values(name)
161
- wrap_impl(@impl.header_values(unwrap_impl(name)))
160
+ def apply_fallback_overrides(overrides)
161
+ wrap_impl(@impl.apply_fallback_overrides(unwrap_impl(overrides)))
162
162
  end
163
163
 
164
164
  # -- inherited from EventEmitter --
@@ -101,13 +101,13 @@ module Playwright
101
101
  end
102
102
 
103
103
  # @nodoc
104
- def from_service_worker?
105
- wrap_impl(@impl.from_service_worker?)
104
+ def ok?
105
+ wrap_impl(@impl.ok?)
106
106
  end
107
107
 
108
108
  # @nodoc
109
- def ok?
110
- wrap_impl(@impl.ok?)
109
+ def from_service_worker?
110
+ wrap_impl(@impl.from_service_worker?)
111
111
  end
112
112
 
113
113
  # -- inherited from EventEmitter --
@@ -43,6 +43,17 @@ module Playwright
43
43
  wrap_impl(@impl.register(unwrap_impl(name), contentScript: unwrap_impl(contentScript), path: unwrap_impl(path), script: unwrap_impl(script)))
44
44
  end
45
45
 
46
+ # Defines custom attribute name to be used in [`method: Page.getByTestId`]. `data-testid` is used by default.
47
+ def set_test_id_attribute(attributeName)
48
+ raise NotImplementedError.new('set_test_id_attribute is not implemented yet.')
49
+ end
50
+ alias_method :test_id_attribute=, :set_test_id_attribute
51
+
52
+ # @nodoc
53
+ def text_id_attribute=(attribute_name)
54
+ wrap_impl(@impl.text_id_attribute=(unwrap_impl(attribute_name)))
55
+ end
56
+
46
57
  # -- inherited from EventEmitter --
47
58
  # @nodoc
48
59
  def off(event, callback)
@@ -41,7 +41,7 @@ module Playwright
41
41
  # page.goto("https://playwright.dev")
42
42
  #
43
43
  # context.tracing.start_chunk()
44
- # page.locator("text=Get Started").click()
44
+ # page.get_by_text("Get Started").click()
45
45
  # # Everything between start_chunk and stop_chunk will be recorded in the trace.
46
46
  # context.tracing.stop_chunk(path = "trace1.zip")
47
47
  #
@@ -44,13 +44,13 @@ module Playwright
44
44
  end
45
45
 
46
46
  # @nodoc
47
- def page=(req)
48
- wrap_impl(@impl.page=(unwrap_impl(req)))
47
+ def context=(req)
48
+ wrap_impl(@impl.context=(unwrap_impl(req)))
49
49
  end
50
50
 
51
51
  # @nodoc
52
- def context=(req)
53
- wrap_impl(@impl.context=(unwrap_impl(req)))
52
+ def page=(req)
53
+ wrap_impl(@impl.page=(unwrap_impl(req)))
54
54
  end
55
55
 
56
56
  # -- inherited from EventEmitter --
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.25.0
4
+ version: 1.27.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-08-14 00:00:00.000000000 Z
11
+ date: 2022-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -327,6 +327,7 @@ files:
327
327
  - lib/playwright/javascript/visitor_info.rb
328
328
  - lib/playwright/keyboard_impl.rb
329
329
  - lib/playwright/locator_impl.rb
330
+ - lib/playwright/locator_utils.rb
330
331
  - lib/playwright/mouse_impl.rb
331
332
  - lib/playwright/playwright_api.rb
332
333
  - lib/playwright/raw_headers.rb
@@ -399,5 +400,5 @@ requirements: []
399
400
  rubygems_version: 3.3.7
400
401
  signing_key:
401
402
  specification_version: 4
402
- summary: The Ruby binding of playwright driver 1.25.0
403
+ summary: The Ruby binding of playwright driver 1.27.0
403
404
  test_files: []