playwright-ruby-client 1.59.1 → 1.60.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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/api_request.md +25 -1
  3. data/documentation/docs/api/api_request_context.md +13 -11
  4. data/documentation/docs/api/browser.md +18 -0
  5. data/documentation/docs/api/browser_context.md +1 -1
  6. data/documentation/docs/api/browser_type.md +18 -0
  7. data/documentation/docs/api/frame.md +1 -0
  8. data/documentation/docs/api/frame_locator.md +1 -0
  9. data/documentation/docs/api/locator.md +37 -2
  10. data/documentation/docs/api/locator_assertions.md +1 -1
  11. data/documentation/docs/api/page.md +12 -2
  12. data/documentation/docs/api/page_assertions.md +28 -0
  13. data/documentation/docs/api/playwright.md +5 -0
  14. data/documentation/docs/api/tracing.md +29 -0
  15. data/documentation/docs/include/api_coverage.md +14 -60
  16. data/lib/playwright/api_request_impl.rb +70 -0
  17. data/lib/playwright/channel_owners/api_request_context.rb +5 -1
  18. data/lib/playwright/channel_owners/binding_call.rb +3 -9
  19. data/lib/playwright/channel_owners/browser.rb +17 -0
  20. data/lib/playwright/channel_owners/browser_context.rb +10 -54
  21. data/lib/playwright/channel_owners/browser_type.rb +34 -1
  22. data/lib/playwright/channel_owners/frame.rb +89 -3
  23. data/lib/playwright/channel_owners/json_pipe.rb +4 -0
  24. data/lib/playwright/channel_owners/local_utils.rb +11 -2
  25. data/lib/playwright/channel_owners/page.rb +16 -11
  26. data/lib/playwright/channel_owners/playwright.rb +4 -0
  27. data/lib/playwright/channel_owners/tracing.rb +105 -4
  28. data/lib/playwright/connection.rb +5 -1
  29. data/lib/playwright/console_message_impl.rb +10 -1
  30. data/lib/playwright/errors.rb +3 -2
  31. data/lib/playwright/events.rb +7 -0
  32. data/lib/playwright/json_pipe_transport.rb +40 -0
  33. data/lib/playwright/locator_assertions_impl.rb +21 -4
  34. data/lib/playwright/locator_impl.rb +17 -3
  35. data/lib/playwright/locator_utils.rb +2 -0
  36. data/lib/playwright/page_assertions_impl.rb +33 -3
  37. data/lib/playwright/screencast.rb +5 -1
  38. data/lib/playwright/url_matcher.rb +35 -0
  39. data/lib/playwright/version.rb +2 -2
  40. data/lib/playwright.rb +1 -0
  41. data/lib/playwright_api/api_request.rb +1 -1
  42. data/lib/playwright_api/api_request_context.rb +15 -11
  43. data/lib/playwright_api/browser.rb +2 -2
  44. data/lib/playwright_api/browser_context.rb +7 -7
  45. data/lib/playwright_api/browser_type.rb +5 -3
  46. data/lib/playwright_api/frame.rb +18 -7
  47. data/lib/playwright_api/frame_locator.rb +2 -1
  48. data/lib/playwright_api/locator.rb +34 -5
  49. data/lib/playwright_api/locator_assertions.rb +2 -2
  50. data/lib/playwright_api/page.rb +27 -20
  51. data/lib/playwright_api/page_assertions.rb +22 -0
  52. data/lib/playwright_api/playwright.rb +1 -1
  53. data/lib/playwright_api/tracing.rb +23 -0
  54. data/sig/playwright.rbs +35 -43
  55. metadata +5 -12
  56. data/documentation/docs/api/experimental/android.md +0 -42
  57. data/documentation/docs/api/experimental/android_device.md +0 -109
  58. data/documentation/docs/api/experimental/android_input.md +0 -43
  59. data/documentation/docs/api/experimental/android_socket.md +0 -7
  60. data/documentation/docs/api/experimental/android_web_view.md +0 -7
  61. data/lib/playwright_api/android.rb +0 -68
  62. data/lib/playwright_api/android_device.rb +0 -229
  63. data/lib/playwright_api/android_input.rb +0 -34
  64. data/lib/playwright_api/android_socket.rb +0 -18
  65. data/lib/playwright_api/android_web_view.rb +0 -24
@@ -1,43 +0,0 @@
1
- ---
2
- sidebar_position: 10
3
- ---
4
-
5
- # AndroidInput
6
-
7
-
8
-
9
- ## drag
10
-
11
- ```
12
- def drag(from, to, steps)
13
- ```
14
-
15
-
16
- Performs a drag between `from` and `to` points.
17
-
18
- ## press
19
-
20
- ```
21
- def press(key)
22
- ```
23
-
24
-
25
- Presses the `key`.
26
-
27
- ## tap_point
28
-
29
- ```
30
- def tap_point(point)
31
- ```
32
-
33
-
34
- Taps at the specified `point`.
35
-
36
- ## type
37
-
38
- ```
39
- def type(text)
40
- ```
41
-
42
-
43
- Types `text` into currently focused widget.
@@ -1,7 +0,0 @@
1
- ---
2
- sidebar_position: 10
3
- ---
4
-
5
- # AndroidSocket
6
-
7
- Not Implemented
@@ -1,7 +0,0 @@
1
- ---
2
- sidebar_position: 10
3
- ---
4
-
5
- # AndroidWebView
6
-
7
- Not Implemented
@@ -1,68 +0,0 @@
1
- module Playwright
2
- #
3
- # Playwright has **experimental** support for Android automation. This includes Chrome for Android and Android WebView.
4
- #
5
- # *Requirements*
6
- # - Android device or AVD Emulator.
7
- # - [ADB daemon](https://developer.android.com/studio/command-line/adb) running and authenticated with your device. Typically running `adb devices` is all you need to do.
8
- # - [`Chrome 87`](https://play.google.com/store/apps/details?id=com.android.chrome) or newer installed on the device
9
- # - "Enable command line on non-rooted devices" enabled in `chrome://flags`.
10
- #
11
- # *Known limitations*
12
- # - Raw USB operation is not yet supported, so you need ADB.
13
- # - Device needs to be awake to produce screenshots. Enabling "Stay awake" developer mode will help.
14
- # - We didn't run all the tests against the device, so not everything works.
15
- #
16
- # *How to run*
17
- #
18
- # An example of the Android automation script would be:
19
- class Android < PlaywrightApi
20
-
21
- #
22
- # This methods attaches Playwright to an existing Android device.
23
- # Use [`method: Android.launchServer`] to launch a new Android server instance.
24
- def connect(endpoint, headers: nil, slowMo: nil, timeout: nil)
25
- raise NotImplementedError.new('connect is not implemented yet.')
26
- end
27
-
28
- #
29
- # Returns the list of detected Android devices.
30
- def devices(host: nil, omitDriverInstall: nil, port: nil)
31
- wrap_impl(@impl.devices(host: unwrap_impl(host), omitDriverInstall: unwrap_impl(omitDriverInstall), port: unwrap_impl(port)))
32
- end
33
-
34
- #
35
- # This setting will change the default maximum time for all the methods accepting `timeout` option.
36
- def set_default_timeout(timeout)
37
- wrap_impl(@impl.set_default_timeout(unwrap_impl(timeout)))
38
- end
39
- alias_method :default_timeout=, :set_default_timeout
40
-
41
- # @nodoc
42
- def set_default_navigation_timeout(timeout)
43
- wrap_impl(@impl.set_default_navigation_timeout(unwrap_impl(timeout)))
44
- end
45
-
46
- # -- inherited from EventEmitter --
47
- # @nodoc
48
- def on(event, callback)
49
- event_emitter_proxy.on(event, callback)
50
- end
51
-
52
- # -- inherited from EventEmitter --
53
- # @nodoc
54
- def off(event, callback)
55
- event_emitter_proxy.off(event, callback)
56
- end
57
-
58
- # -- inherited from EventEmitter --
59
- # @nodoc
60
- def once(event, callback)
61
- event_emitter_proxy.once(event, callback)
62
- end
63
-
64
- private def event_emitter_proxy
65
- @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
66
- end
67
- end
68
- end
@@ -1,229 +0,0 @@
1
- module Playwright
2
- #
3
- # `AndroidDevice` represents a connected device, either real hardware or emulated. Devices can be obtained using [`method: Android.devices`].
4
- class AndroidDevice < PlaywrightApi
5
-
6
- def input # property
7
- wrap_impl(@impl.input)
8
- end
9
-
10
- #
11
- # Disconnects from the device.
12
- def close
13
- wrap_impl(@impl.close)
14
- end
15
-
16
- #
17
- # Drags the widget defined by `selector` towards `dest` point.
18
- def drag(selector, dest, speed: nil)
19
- raise NotImplementedError.new('drag is not implemented yet.')
20
- end
21
-
22
- #
23
- # Fills the specific `selector` input box with `text`.
24
- def fill(selector, text)
25
- raise NotImplementedError.new('fill is not implemented yet.')
26
- end
27
-
28
- #
29
- # Flings the widget defined by `selector` in the specified `direction`.
30
- def fling(selector, direction, speed: nil)
31
- raise NotImplementedError.new('fling is not implemented yet.')
32
- end
33
-
34
- #
35
- # Returns information about a widget defined by `selector`.
36
- def info(selector)
37
- wrap_impl(@impl.info(unwrap_impl(selector)))
38
- end
39
-
40
- #
41
- # Installs an apk on the device.
42
- def install_apk(file, args: nil)
43
- raise NotImplementedError.new('install_apk is not implemented yet.')
44
- end
45
-
46
- #
47
- # Launches Chrome browser on the device, and returns its persistent context.
48
- def launch_browser(
49
- acceptDownloads: nil,
50
- args: nil,
51
- baseURL: nil,
52
- bypassCSP: nil,
53
- colorScheme: nil,
54
- contrast: nil,
55
- deviceScaleFactor: nil,
56
- extraHTTPHeaders: nil,
57
- forcedColors: nil,
58
- geolocation: nil,
59
- hasTouch: nil,
60
- httpCredentials: nil,
61
- ignoreHTTPSErrors: nil,
62
- isMobile: nil,
63
- javaScriptEnabled: nil,
64
- locale: nil,
65
- noViewport: nil,
66
- offline: nil,
67
- permissions: nil,
68
- pkg: nil,
69
- proxy: nil,
70
- record_har_content: nil,
71
- record_har_mode: nil,
72
- record_har_omit_content: nil,
73
- record_har_path: nil,
74
- record_har_url_filter: nil,
75
- record_video_dir: nil,
76
- record_video_size: nil,
77
- reducedMotion: nil,
78
- screen: nil,
79
- serviceWorkers: nil,
80
- strictSelectors: nil,
81
- timezoneId: nil,
82
- userAgent: nil,
83
- viewport: nil,
84
- &block)
85
- wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), contrast: unwrap_impl(contrast), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), pkg: unwrap_impl(pkg), proxy: unwrap_impl(proxy), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
86
- end
87
-
88
- #
89
- # Performs a long tap on the widget defined by `selector`.
90
- def long_tap(selector)
91
- raise NotImplementedError.new('long_tap is not implemented yet.')
92
- end
93
-
94
- #
95
- # Device model.
96
- def model
97
- wrap_impl(@impl.model)
98
- end
99
-
100
- #
101
- # Launches a process in the shell on the device and returns a socket to communicate with the launched process.
102
- def open(command)
103
- raise NotImplementedError.new('open is not implemented yet.')
104
- end
105
-
106
- #
107
- # Pinches the widget defined by `selector` in the closing direction.
108
- def pinch_close(selector, percent, speed: nil)
109
- raise NotImplementedError.new('pinch_close is not implemented yet.')
110
- end
111
-
112
- #
113
- # Pinches the widget defined by `selector` in the open direction.
114
- def pinch_open(selector, percent, speed: nil)
115
- raise NotImplementedError.new('pinch_open is not implemented yet.')
116
- end
117
-
118
- #
119
- # Presses the specific `key` in the widget defined by `selector`.
120
- def press(selector, key)
121
- raise NotImplementedError.new('press is not implemented yet.')
122
- end
123
-
124
- #
125
- # Copies a file to the device.
126
- def push(file, path, mode: nil)
127
- raise NotImplementedError.new('push is not implemented yet.')
128
- end
129
-
130
- #
131
- # Returns the buffer with the captured screenshot of the device.
132
- def screenshot(path: nil)
133
- wrap_impl(@impl.screenshot(path: unwrap_impl(path)))
134
- end
135
-
136
- #
137
- # Scrolls the widget defined by `selector` in the specified `direction`.
138
- def scroll(selector, direction, percent, speed: nil)
139
- raise NotImplementedError.new('scroll is not implemented yet.')
140
- end
141
-
142
- #
143
- # Device serial number.
144
- def serial
145
- wrap_impl(@impl.serial)
146
- end
147
-
148
- #
149
- # This setting will change the default maximum time for all the methods accepting `timeout` option.
150
- def set_default_timeout(timeout)
151
- raise NotImplementedError.new('set_default_timeout is not implemented yet.')
152
- end
153
- alias_method :default_timeout=, :set_default_timeout
154
-
155
- #
156
- # Executes a shell command on the device and returns its output.
157
- def shell(command)
158
- wrap_impl(@impl.shell(unwrap_impl(command)))
159
- end
160
-
161
- #
162
- # Swipes the widget defined by `selector` in the specified `direction`.
163
- def swipe(selector, direction, percent, speed: nil)
164
- raise NotImplementedError.new('swipe is not implemented yet.')
165
- end
166
-
167
- #
168
- # Taps on the widget defined by `selector`.
169
- def tap_point(selector, duration: nil)
170
- raise NotImplementedError.new('tap_point is not implemented yet.')
171
- end
172
-
173
- #
174
- # Waits for the specific `selector` to either appear or disappear, depending on the `state`.
175
- def wait(selector, state: nil)
176
- raise NotImplementedError.new('wait is not implemented yet.')
177
- end
178
-
179
- #
180
- # Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy value.
181
- def wait_for_event(event, optionsOrPredicate: nil)
182
- raise NotImplementedError.new('wait_for_event is not implemented yet.')
183
- end
184
-
185
- #
186
- # This method waits until `AndroidWebView` matching the `selector` is opened and returns it. If there is already an open `AndroidWebView` matching the `selector`, returns immediately.
187
- def web_view(selector)
188
- raise NotImplementedError.new('web_view is not implemented yet.')
189
- end
190
-
191
- #
192
- # Currently open WebViews.
193
- def web_views
194
- raise NotImplementedError.new('web_views is not implemented yet.')
195
- end
196
-
197
- # @nodoc
198
- def should_close_connection_on_close!
199
- wrap_impl(@impl.should_close_connection_on_close!)
200
- end
201
-
202
- # @nodoc
203
- def tap_on(selector, duration: nil, timeout: nil)
204
- wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
205
- end
206
-
207
- # -- inherited from EventEmitter --
208
- # @nodoc
209
- def on(event, callback)
210
- event_emitter_proxy.on(event, callback)
211
- end
212
-
213
- # -- inherited from EventEmitter --
214
- # @nodoc
215
- def off(event, callback)
216
- event_emitter_proxy.off(event, callback)
217
- end
218
-
219
- # -- inherited from EventEmitter --
220
- # @nodoc
221
- def once(event, callback)
222
- event_emitter_proxy.once(event, callback)
223
- end
224
-
225
- private def event_emitter_proxy
226
- @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
227
- end
228
- end
229
- end
@@ -1,34 +0,0 @@
1
- module Playwright
2
- class AndroidInput < PlaywrightApi
3
-
4
- #
5
- # Performs a drag between `from` and `to` points.
6
- def drag(from, to, steps)
7
- wrap_impl(@impl.drag(unwrap_impl(from), unwrap_impl(to), unwrap_impl(steps)))
8
- end
9
-
10
- #
11
- # Presses the `key`.
12
- def press(key)
13
- wrap_impl(@impl.press(unwrap_impl(key)))
14
- end
15
-
16
- #
17
- # Swipes following the path defined by `segments`.
18
- def swipe(from, segments, steps)
19
- raise NotImplementedError.new('swipe is not implemented yet.')
20
- end
21
-
22
- #
23
- # Taps at the specified `point`.
24
- def tap_point(point)
25
- wrap_impl(@impl.tap_point(unwrap_impl(point)))
26
- end
27
-
28
- #
29
- # Types `text` into currently focused widget.
30
- def type(text)
31
- wrap_impl(@impl.type(unwrap_impl(text)))
32
- end
33
- end
34
- end
@@ -1,18 +0,0 @@
1
- module Playwright
2
- #
3
- # `AndroidSocket` is a way to communicate with a process launched on the `AndroidDevice`. Use [`method: AndroidDevice.open`] to open a socket.
4
- class AndroidSocket < PlaywrightApi
5
-
6
- #
7
- # Closes the socket.
8
- def close
9
- raise NotImplementedError.new('close is not implemented yet.')
10
- end
11
-
12
- #
13
- # Writes some `data` to the socket.
14
- def write(data)
15
- raise NotImplementedError.new('write is not implemented yet.')
16
- end
17
- end
18
- end
@@ -1,24 +0,0 @@
1
- module Playwright
2
- #
3
- # `AndroidWebView` represents a WebView open on the `AndroidDevice`. WebView is usually obtained using [`method: AndroidDevice.webView`].
4
- class AndroidWebView < PlaywrightApi
5
-
6
- #
7
- # Connects to the WebView and returns a regular Playwright `Page` to interact with.
8
- def page
9
- raise NotImplementedError.new('page is not implemented yet.')
10
- end
11
-
12
- #
13
- # WebView process PID.
14
- def pid
15
- raise NotImplementedError.new('pid is not implemented yet.')
16
- end
17
-
18
- #
19
- # WebView package identifier.
20
- def pkg
21
- raise NotImplementedError.new('pkg is not implemented yet.')
22
- end
23
- end
24
- end