playwright-ruby-client 0.0.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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