playwright-ruby-client 0.0.8 → 0.3.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/docs/api_coverage.md +159 -101
  4. data/lib/playwright.rb +5 -2
  5. data/lib/playwright/{input_types/android_input.rb → android_input_impl.rb} +5 -1
  6. data/lib/playwright/api_implementation.rb +18 -0
  7. data/lib/playwright/channel.rb +13 -6
  8. data/lib/playwright/channel_owner.rb +3 -5
  9. data/lib/playwright/channel_owners/android.rb +1 -1
  10. data/lib/playwright/channel_owners/android_device.rb +12 -12
  11. data/lib/playwright/channel_owners/binding_call.rb +3 -0
  12. data/lib/playwright/channel_owners/browser.rb +1 -1
  13. data/lib/playwright/channel_owners/browser_context.rb +157 -3
  14. data/lib/playwright/channel_owners/dialog.rb +28 -0
  15. data/lib/playwright/channel_owners/download.rb +27 -0
  16. data/lib/playwright/channel_owners/element_handle.rb +15 -4
  17. data/lib/playwright/channel_owners/frame.rb +24 -5
  18. data/lib/playwright/channel_owners/js_handle.rb +1 -1
  19. data/lib/playwright/channel_owners/page.rb +367 -29
  20. data/lib/playwright/channel_owners/playwright.rb +4 -0
  21. data/lib/playwright/channel_owners/request.rb +35 -3
  22. data/lib/playwright/channel_owners/response.rb +60 -0
  23. data/lib/playwright/channel_owners/route.rb +78 -0
  24. data/lib/playwright/channel_owners/selectors.rb +19 -1
  25. data/lib/playwright/errors.rb +1 -1
  26. data/lib/playwright/event_emitter.rb +8 -1
  27. data/lib/playwright/event_emitter_proxy.rb +49 -0
  28. data/lib/playwright/file_chooser_impl.rb +23 -0
  29. data/lib/playwright/http_headers.rb +20 -0
  30. data/lib/playwright/input_files.rb +1 -1
  31. data/lib/playwright/{input_types/keyboard.rb → keyboard_impl.rb} +5 -1
  32. data/lib/playwright/mouse_impl.rb +7 -0
  33. data/lib/playwright/playwright_api.rb +59 -20
  34. data/lib/playwright/route_handler_entry.rb +36 -0
  35. data/lib/playwright/select_option_values.rb +14 -4
  36. data/lib/playwright/touchscreen_impl.rb +7 -0
  37. data/lib/playwright/utils.rb +4 -3
  38. data/lib/playwright/version.rb +1 -1
  39. data/lib/playwright/wait_helper.rb +1 -1
  40. data/lib/playwright_api/android.rb +82 -11
  41. data/lib/playwright_api/android_device.rb +148 -32
  42. data/lib/playwright_api/android_input.rb +17 -13
  43. data/lib/playwright_api/android_socket.rb +16 -0
  44. data/lib/playwright_api/android_web_view.rb +21 -0
  45. data/lib/playwright_api/binding_call.rb +14 -5
  46. data/lib/playwright_api/browser.rb +22 -23
  47. data/lib/playwright_api/browser_context.rb +49 -35
  48. data/lib/playwright_api/browser_type.rb +24 -64
  49. data/lib/playwright_api/chromium_browser_context.rb +10 -8
  50. data/lib/playwright_api/console_message.rb +10 -6
  51. data/lib/playwright_api/dialog.rb +37 -6
  52. data/lib/playwright_api/download.rb +28 -11
  53. data/lib/playwright_api/element_handle.rb +107 -96
  54. data/lib/playwright_api/file_chooser.rb +18 -10
  55. data/lib/playwright_api/frame.rb +124 -117
  56. data/lib/playwright_api/js_handle.rb +20 -22
  57. data/lib/playwright_api/keyboard.rb +5 -5
  58. data/lib/playwright_api/page.rb +206 -148
  59. data/lib/playwright_api/playwright.rb +33 -45
  60. data/lib/playwright_api/request.rb +11 -12
  61. data/lib/playwright_api/response.rb +30 -16
  62. data/lib/playwright_api/route.rb +27 -5
  63. data/lib/playwright_api/selectors.rb +14 -10
  64. data/lib/playwright_api/web_socket.rb +10 -1
  65. data/lib/playwright_api/worker.rb +13 -13
  66. metadata +16 -7
  67. data/lib/playwright/input_type.rb +0 -19
  68. data/lib/playwright/input_types/mouse.rb +0 -4
  69. data/lib/playwright/input_types/touchscreen.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04f50e523a846e243058cbb53a44e0f4a6ecce32aa843a02ace9b855b2264862
4
- data.tar.gz: a8c99b7550206d0ff90ad033e0391a9224f780ae1e009a8cab48441070adabaa
3
+ metadata.gz: cbaaa0e61bbc515a26d0f0e6af6ca8c36bbf3db5cc6913a6895f175154ba893b
4
+ data.tar.gz: cdc467f161030497d4efb94689bef4901c0e15bd24e9cc8be189106f5dfe4493
5
5
  SHA512:
6
- metadata.gz: d5e089555dc0d1ee2a86980d14d8310e338fa1d23b529a3d711895532dba64101300a198ed55b80f90342116b86baae8937c7526f992bc7ea9816297e385c436
7
- data.tar.gz: d1da5e4e141043a37f3eccdd300865437264c795e343fa5652534d2fa04168d6f1326f7311c1f8c0212c98fd0d365b5b8f684b18b4b615b8825d5d65fa185562
6
+ metadata.gz: 585d3989547fd8e38e1e9503bf8aee20e732b1234bd62783c51b2e77a6061325c9a0c44de0de2b65557726dbebd6dc944ab44f72ffb8cbba69449ff3c0886a59
7
+ data.tar.gz: e50bd506a34d5fe1d84d6f75d0fbe8bc1128c0f93c3529dc94ba6af7dabf59e564625e6ca0b5a16cf7ad8066ffe91aeeda369599a30c0bb9e5629f54dfe54fd1
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/playwright-ruby-client.svg)](https://badge.fury.io/rb/playwright-ruby-client)
2
2
 
3
- # playwright-ruby-client
4
-
5
- A Ruby client for Playwright driver.
3
+ # 🎭 Playwright client for Ruby
6
4
 
7
5
  Note: Currently, this Gem is just a PoC (Proof of Concept). If you want to develop browser-automation for Chrome with Ruby, consider using [puppeteer-ruby](https://github.com/YusukeIwaki/puppeteer-ruby). The list of the available APIs of playwright-ruby-client is [here](./docs/api_coverage.md)
8
6
 
@@ -17,6 +15,8 @@ npm install playwright
17
15
 
18
16
  and then, set `playwright_cli_executable_path: ./node_modules/.bin/playwright` at `Playwright.create`.
19
17
 
18
+ **Prefer playwrighting without Node.js?**
19
+
20
20
  Instead of npm install, you can also directly download playwright driver from playwright.azureedge.net/builds/. The URL can be easily detected from [here](https://github.com/microsoft/playwright-python/blob/79f6ce0a6a69c480573372706df84af5ef99c4a4/setup.py#L56-L61)
21
21
 
22
22
  ### Capture a site
data/docs/api_coverage.md CHANGED
@@ -19,30 +19,31 @@
19
19
 
20
20
  ## Response
21
21
 
22
- * ~~body~~
23
- * ~~finished~~
24
- * ~~frame~~
25
- * ~~headers~~
26
- * ~~json~~
27
- * ~~ok~~
28
- * ~~request~~
29
- * ~~status~~
30
- * ~~status_text~~
31
- * ~~text~~
32
- * ~~url~~
22
+ * body
23
+ * finished
24
+ * frame
25
+ * headers
26
+ * json
27
+ * ok
28
+ * request
29
+ * status
30
+ * status_text
31
+ * text
32
+ * url
33
33
 
34
- ## ~~Route~~
34
+ ## Route
35
35
 
36
- * ~~abort~~
37
- * ~~continue_~~
38
- * ~~fulfill~~
39
- * ~~request~~
36
+ * abort
37
+ * continue
38
+ * fulfill
39
+ * request
40
40
 
41
41
  ## ~~WebSocket~~
42
42
 
43
43
  * ~~closed?~~
44
44
  * ~~url~~
45
45
  * ~~expect_event~~
46
+ * ~~wait_for_event~~
46
47
 
47
48
  ## Keyboard
48
49
 
@@ -76,16 +77,14 @@
76
77
 
77
78
  ## ElementHandle
78
79
 
79
- * query_selector
80
- * query_selector_all
81
- * eval_on_selector
82
- * eval_on_selector_all
83
80
  * bounding_box
84
81
  * check
85
82
  * click
86
83
  * content_frame
87
84
  * dblclick
88
85
  * dispatch_event
86
+ * eval_on_selector
87
+ * eval_on_selector_all
89
88
  * fill
90
89
  * focus
91
90
  * get_attribute
@@ -100,6 +99,8 @@
100
99
  * visible?
101
100
  * owner_frame
102
101
  * press
102
+ * query_selector
103
+ * query_selector_all
103
104
  * screenshot
104
105
  * scroll_into_view_if_needed
105
106
  * select_option
@@ -116,19 +117,15 @@
116
117
 
117
118
  * ~~snapshot~~
118
119
 
119
- ## ~~FileChooser~~
120
+ ## FileChooser
120
121
 
121
- * ~~element~~
122
- * ~~multiple?~~
123
- * ~~page~~
124
- * ~~set_files~~
122
+ * element
123
+ * multiple?
124
+ * page
125
+ * set_files
125
126
 
126
127
  ## Frame
127
128
 
128
- * query_selector
129
- * query_selector_all
130
- * eval_on_selector
131
- * eval_on_selector_all
132
129
  * add_script_tag
133
130
  * add_style_tag
134
131
  * check
@@ -137,6 +134,8 @@
137
134
  * content
138
135
  * dblclick
139
136
  * dispatch_event
137
+ * eval_on_selector
138
+ * eval_on_selector_all
140
139
  * evaluate
141
140
  * evaluate_handle
142
141
  * fill
@@ -158,6 +157,8 @@
158
157
  * page
159
158
  * parent_frame
160
159
  * press
160
+ * query_selector
161
+ * query_selector_all
161
162
  * select_option
162
163
  * set_content
163
164
  * set_input_files
@@ -170,7 +171,7 @@
170
171
  * wait_for_function
171
172
  * wait_for_load_state
172
173
  * expect_navigation
173
- * ~~wait_for_selector~~
174
+ * wait_for_selector
174
175
  * ~~wait_for_timeout~~
175
176
 
176
177
  ## ~~Worker~~
@@ -181,7 +182,7 @@
181
182
 
182
183
  ## Selectors
183
184
 
184
- * ~~register~~
185
+ * register
185
186
 
186
187
  ## ConsoleMessage
187
188
 
@@ -190,23 +191,22 @@
190
191
  * text
191
192
  * type
192
193
 
193
- ## ~~Dialog~~
194
+ ## Dialog
194
195
 
195
- * ~~accept~~
196
- * ~~default_value~~
197
- * ~~dismiss~~
198
- * ~~message~~
199
- * ~~type~~
196
+ * accept
197
+ * default_value
198
+ * dismiss
199
+ * message
200
+ * type
200
201
 
201
- ## ~~Download~~
202
+ ## Download
202
203
 
203
- * ~~create_read_stream~~
204
- * ~~delete~~
205
- * ~~failure~~
206
- * ~~path~~
207
- * ~~save_as~~
208
- * ~~suggested_filename~~
209
- * ~~url~~
204
+ * delete
205
+ * failure
206
+ * path
207
+ * save_as
208
+ * suggested_filename
209
+ * url
210
210
 
211
211
  ## ~~Video~~
212
212
 
@@ -214,106 +214,113 @@
214
214
 
215
215
  ## Page
216
216
 
217
- * query_selector
218
- * query_selector_all
219
- * eval_on_selector
220
- * eval_on_selector_all
221
- * ~~add_init_script~~
217
+ * add_init_script
222
218
  * add_script_tag
223
219
  * add_style_tag
224
- * ~~bring_to_front~~
225
- * ~~check~~
220
+ * bring_to_front
221
+ * check
226
222
  * click
227
223
  * close
228
224
  * content
229
225
  * context
230
226
  * dblclick
231
- * ~~dispatch_event~~
232
- * ~~emulate_media~~
227
+ * dispatch_event
228
+ * emulate_media
229
+ * eval_on_selector
230
+ * eval_on_selector_all
233
231
  * evaluate
234
232
  * evaluate_handle
235
- * ~~expose_binding~~
236
- * ~~expose_function~~
233
+ * expose_binding
234
+ * expose_function
237
235
  * fill
238
236
  * focus
239
237
  * frame
240
238
  * frames
241
- * ~~get_attribute~~
242
- * ~~go_back~~
243
- * ~~go_forward~~
239
+ * get_attribute
240
+ * go_back
241
+ * go_forward
244
242
  * goto
245
- * ~~hover~~
246
- * ~~inner_html~~
247
- * ~~inner_text~~
248
- * ~~checked?~~
243
+ * hover
244
+ * inner_html
245
+ * inner_text
246
+ * checked?
249
247
  * closed?
250
- * ~~disabled?~~
251
- * ~~editable?~~
252
- * ~~enabled?~~
253
- * ~~hidden?~~
254
- * ~~visible?~~
248
+ * disabled?
249
+ * editable?
250
+ * enabled?
251
+ * hidden?
252
+ * visible?
255
253
  * main_frame
256
254
  * opener
257
- * ~~pdf~~
255
+ * ~~pause~~
256
+ * pdf
258
257
  * press
258
+ * query_selector
259
+ * query_selector_all
259
260
  * reload
260
- * ~~route~~
261
+ * route
261
262
  * screenshot
262
- * ~~select_option~~
263
+ * select_option
263
264
  * set_content
264
265
  * set_default_navigation_timeout
265
266
  * set_default_timeout
266
- * ~~set_extra_http_headers~~
267
- * ~~set_input_files~~
267
+ * set_extra_http_headers
268
+ * set_input_files
268
269
  * set_viewport_size
269
- * ~~tap_point~~
270
- * ~~text_content~~
270
+ * tap_point
271
+ * text_content
271
272
  * title
272
273
  * type
273
- * ~~uncheck~~
274
- * ~~unroute~~
274
+ * uncheck
275
+ * unroute
275
276
  * url
276
277
  * ~~video~~
277
278
  * viewport_size
279
+ * expect_console_message
280
+ * expect_download
278
281
  * expect_event
282
+ * expect_file_chooser
279
283
  * wait_for_function
280
284
  * wait_for_load_state
281
285
  * expect_navigation
286
+ * expect_popup
282
287
  * expect_request
283
288
  * expect_response
284
- * ~~wait_for_selector~~
289
+ * wait_for_selector
285
290
  * ~~wait_for_timeout~~
291
+ * ~~expect_worker~~
286
292
  * ~~workers~~
293
+ * ~~wait_for_event~~
287
294
  * accessibility
288
- * ~~coverage~~
289
295
  * keyboard
290
296
  * mouse
291
297
  * touchscreen
292
298
 
293
299
  ## BrowserContext
294
300
 
295
- * ~~add_cookies~~
296
- * ~~add_init_script~~
297
- * ~~browser~~
298
- * ~~clear_cookies~~
299
- * ~~clear_permissions~~
301
+ * add_cookies
302
+ * add_init_script
303
+ * browser
304
+ * clear_cookies
305
+ * clear_permissions
300
306
  * close
301
- * ~~cookies~~
302
- * ~~expose_binding~~
303
- * ~~expose_function~~
304
- * ~~grant_permissions~~
307
+ * cookies
308
+ * expose_binding
309
+ * expose_function
310
+ * grant_permissions
305
311
  * new_page
306
312
  * pages
307
- * ~~route~~
308
- * ~~set_default_navigation_timeout~~
309
- * ~~set_default_timeout~~
310
- * ~~set_extra_http_headers~~
311
- * ~~set_geolocation~~
312
- * ~~set_http_credentials~~
313
- * ~~set_offline~~
313
+ * route
314
+ * set_default_navigation_timeout
315
+ * set_default_timeout
316
+ * set_extra_http_headers
317
+ * set_geolocation
318
+ * set_offline
314
319
  * ~~storage_state~~
315
- * ~~unroute~~
316
- * ~~expect_event~~
320
+ * unroute
321
+ * expect_event
322
+ * expect_page
323
+ * ~~wait_for_event~~
317
324
 
318
325
  ## ~~CDPSession~~
319
326
 
@@ -337,18 +344,69 @@
337
344
 
338
345
  ## BrowserType
339
346
 
340
- * ~~connect~~
341
347
  * executable_path
342
348
  * launch
343
349
  * ~~launch_persistent_context~~
344
- * ~~launch_server~~
345
350
  * name
346
351
 
347
352
  ## Playwright
348
353
 
354
+ * ~~stop~~
349
355
  * chromium
350
356
  * devices
351
- * ~~errors~~
352
357
  * firefox
353
- * ~~selectors~~
358
+ * selectors
354
359
  * webkit
360
+
361
+ ## Android
362
+
363
+ * devices
364
+ * ~~set_default_timeout~~
365
+
366
+ ## AndroidDevice
367
+
368
+ * close
369
+ * ~~drag~~
370
+ * ~~fill~~
371
+ * ~~fling~~
372
+ * info
373
+ * ~~install_apk~~
374
+ * launch_browser
375
+ * ~~long_tap~~
376
+ * model
377
+ * ~~open~~
378
+ * ~~pinch_close~~
379
+ * ~~pinch_open~~
380
+ * ~~press~~
381
+ * ~~push~~
382
+ * screenshot
383
+ * ~~scroll~~
384
+ * serial
385
+ * ~~set_default_timeout~~
386
+ * shell
387
+ * ~~swipe~~
388
+ * ~~tap_point~~
389
+ * ~~wait~~
390
+ * ~~wait_for_event~~
391
+ * ~~web_view~~
392
+ * ~~web_views~~
393
+ * input
394
+
395
+ ## AndroidInput
396
+
397
+ * drag
398
+ * press
399
+ * ~~swipe~~
400
+ * tap_point
401
+ * type
402
+
403
+ ## ~~AndroidSocket~~
404
+
405
+ * ~~close~~
406
+ * ~~write~~
407
+
408
+ ## ~~AndroidWebView~~
409
+
410
+ * ~~page~~
411
+ * ~~pid~~
412
+ * ~~pkg~~
data/lib/playwright.rb CHANGED
@@ -10,14 +10,17 @@ require 'concurrent'
10
10
  require 'playwright/errors'
11
11
  require 'playwright/events'
12
12
  require 'playwright/event_emitter'
13
+ require 'playwright/event_emitter_proxy'
13
14
  require 'playwright/javascript'
14
15
  require 'playwright/utils'
15
16
 
17
+ require 'playwright/api_implementation'
16
18
  require 'playwright/channel'
17
19
  require 'playwright/channel_owner'
20
+ require 'playwright/http_headers'
18
21
  require 'playwright/input_files'
19
- require 'playwright/input_type'
20
22
  require 'playwright/connection'
23
+ require 'playwright/route_handler_entry'
21
24
  require 'playwright/select_option_values'
22
25
  require 'playwright/timeout_settings'
23
26
  require 'playwright/transport'
@@ -37,7 +40,7 @@ module Playwright
37
40
 
38
41
  playwright_promise = connection.async_wait_for_object_with_known_name('Playwright')
39
42
  Thread.new { connection.run }
40
- playwright = PlaywrightApi.from_channel_owner(playwright_promise.value!)
43
+ playwright = PlaywrightApi.wrap(playwright_promise.value!)
41
44
  begin
42
45
  block.call(playwright)
43
46
  ensure