playwright-ruby-client 1.20.2 → 1.23.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/api_request_context.md +15 -2
  3. data/documentation/docs/api/browser.md +16 -0
  4. data/documentation/docs/api/browser_context.md +15 -2
  5. data/documentation/docs/api/browser_type.md +5 -1
  6. data/documentation/docs/api/console_message.md +27 -1
  7. data/documentation/docs/api/element_handle.md +23 -13
  8. data/documentation/docs/api/experimental/android.md +1 -1
  9. data/documentation/docs/api/experimental/android_device.md +4 -0
  10. data/documentation/docs/api/file_chooser.md +1 -1
  11. data/documentation/docs/api/frame.md +12 -5
  12. data/documentation/docs/api/frame_locator.md +1 -1
  13. data/documentation/docs/api/locator.md +44 -13
  14. data/documentation/docs/api/page.md +32 -9
  15. data/documentation/docs/api/request.md +3 -1
  16. data/documentation/docs/api/response.md +12 -1
  17. data/documentation/docs/api/route.md +67 -0
  18. data/documentation/docs/include/api_coverage.md +6 -3
  19. data/documentation/package.json +6 -6
  20. data/documentation/yarn.lock +2931 -3220
  21. data/lib/playwright/channel.rb +1 -3
  22. data/lib/playwright/channel_owners/browser.rb +13 -0
  23. data/lib/playwright/channel_owners/browser_context.rb +89 -13
  24. data/lib/playwright/channel_owners/browser_type.rb +4 -0
  25. data/lib/playwright/channel_owners/element_handle.rb +12 -3
  26. data/lib/playwright/channel_owners/frame.rb +20 -7
  27. data/lib/playwright/channel_owners/local_utils.rb +29 -0
  28. data/lib/playwright/channel_owners/page.rb +54 -22
  29. data/lib/playwright/channel_owners/request.rb +31 -6
  30. data/lib/playwright/channel_owners/response.rb +6 -0
  31. data/lib/playwright/channel_owners/route.rb +104 -45
  32. data/lib/playwright/channel_owners/writable_stream.rb +14 -0
  33. data/lib/playwright/connection.rb +6 -1
  34. data/lib/playwright/har_router.rb +82 -0
  35. data/lib/playwright/http_headers.rb +1 -1
  36. data/lib/playwright/input_files.rb +60 -8
  37. data/lib/playwright/javascript/regex.rb +23 -0
  38. data/lib/playwright/javascript/value_parser.rb +17 -2
  39. data/lib/playwright/javascript/value_serializer.rb +16 -6
  40. data/lib/playwright/javascript/visitor_info.rb +26 -0
  41. data/lib/playwright/javascript.rb +1 -0
  42. data/lib/playwright/locator_impl.rb +18 -5
  43. data/lib/playwright/playwright_api.rb +26 -6
  44. data/lib/playwright/route_handler.rb +2 -6
  45. data/lib/playwright/transport.rb +12 -2
  46. data/lib/playwright/utils.rb +31 -6
  47. data/lib/playwright/version.rb +2 -2
  48. data/lib/playwright.rb +2 -0
  49. data/lib/playwright_api/accessibility.rb +2 -1
  50. data/lib/playwright_api/android.rb +2 -2
  51. data/lib/playwright_api/android_device.rb +5 -1
  52. data/lib/playwright_api/api_request.rb +3 -3
  53. data/lib/playwright_api/api_request_context.rb +15 -2
  54. data/lib/playwright_api/browser.rb +15 -2
  55. data/lib/playwright_api/browser_context.rb +17 -7
  56. data/lib/playwright_api/browser_type.rb +7 -3
  57. data/lib/playwright_api/console_message.rb +20 -1
  58. data/lib/playwright_api/element_handle.rb +53 -49
  59. data/lib/playwright_api/file_chooser.rb +1 -1
  60. data/lib/playwright_api/frame.rb +30 -23
  61. data/lib/playwright_api/frame_locator.rb +1 -1
  62. data/lib/playwright_api/locator.rb +58 -38
  63. data/lib/playwright_api/page.rb +52 -32
  64. data/lib/playwright_api/playwright.rb +1 -1
  65. data/lib/playwright_api/request.rb +8 -1
  66. data/lib/playwright_api/response.rb +14 -1
  67. data/lib/playwright_api/route.rb +63 -2
  68. data/lib/playwright_api/selectors.rb +1 -1
  69. data/lib/playwright_api/tracing.rb +1 -1
  70. metadata +7 -4
  71. data/lib/playwright_api/local_utils.rb +0 -9
@@ -7,6 +7,8 @@ sidebar_position: 10
7
7
  Whenever a network route is set up with [Page#route](./page#route) or [BrowserContext#route](./browser_context#route), the [Route](./route) object
8
8
  allows to handle the route.
9
9
 
10
+ Learn more about [networking](https://playwright.dev/python/docs/network).
11
+
10
12
  ## abort
11
13
 
12
14
  ```
@@ -29,6 +31,7 @@ def handle(route, request)
29
31
  headers = request.headers
30
32
  headers['foo'] = 'bar' # set "foo" header
31
33
  headers['user-agent'] = 'Unknown Browser' # modify user-agent
34
+ headers.delete('bar') # remove "bar" header
32
35
 
33
36
  route.continue(headers: headers)
34
37
  end
@@ -37,6 +40,70 @@ page.route("**/*", method(:handle))
37
40
 
38
41
 
39
42
 
43
+ ## fallback
44
+
45
+ ```
46
+ def fallback(headers: nil, method: nil, postData: nil, url: nil)
47
+ ```
48
+
49
+ When several routes match the given pattern, they run in the order opposite to their registration. That way the last
50
+ registered route can always override all the previos ones. In the example below, request will be handled by the
51
+ bottom-most handler first, then it'll fall back to the previous one and in the end will be aborted by the first
52
+ registered route.
53
+
54
+ ```ruby
55
+ page.route("**/*", -> (route,_) { route.abort }) # Runs last.
56
+ page.route("**/*", -> (route,_) { route.fallback }) # Runs second.
57
+ page.route("**/*", -> (route,_) { route.fallback }) # Runs first.
58
+ ```
59
+
60
+ Registering multiple routes is useful when you want separate handlers to handle different kinds of requests, for example
61
+ API calls vs page resources or GET requests vs POST requests as in the example below.
62
+
63
+ ```ruby
64
+ # Handle GET requests.
65
+ def handle_post(route, request)
66
+ if request.method != "GET"
67
+ route.fallback
68
+ return
69
+ end
70
+
71
+ # Handling GET only.
72
+ # ...
73
+ end
74
+
75
+ # Handle POST requests.
76
+ def handle_post(route)
77
+ if request.method != "POST"
78
+ route.fallback
79
+ return
80
+ end
81
+
82
+ # Handling POST only.
83
+ # ...
84
+ end
85
+
86
+ page.route("**/*", handle_get)
87
+ page.route("**/*", handle_post)
88
+ ```
89
+
90
+ One can also modify request while falling back to the subsequent handler, that way intermediate route handler can modify
91
+ url, method, headers and postData of the request.
92
+
93
+ ```ruby
94
+ def handle(route, request)
95
+ # override headers
96
+ headers = request.headers
97
+ headers['foo'] = 'bar' # set "foo" header
98
+ headers['user-agent'] = 'Unknown Browser' # modify user-agent
99
+ headers.delete('bar') # remove "bar" header
100
+
101
+ route.fallback(headers: headers)
102
+ end
103
+ ```
104
+
105
+
106
+
40
107
  ## fulfill
41
108
 
42
109
  ```
@@ -27,6 +27,7 @@
27
27
  * body
28
28
  * finished
29
29
  * frame
30
+ * from_service_worker
30
31
  * headers
31
32
  * headers_array
32
33
  * header_value
@@ -45,6 +46,7 @@
45
46
 
46
47
  * abort
47
48
  * continue
49
+ * fallback
48
50
  * fulfill
49
51
  * request
50
52
 
@@ -280,6 +282,7 @@
280
282
  * query_selector_all
281
283
  * reload
282
284
  * route
285
+ * route_from_har
283
286
  * screenshot
284
287
  * select_option
285
288
  * set_checked
@@ -339,6 +342,7 @@
339
342
  * new_page
340
343
  * pages
341
344
  * route
345
+ * route_from_har
342
346
  * service_workers
343
347
  * set_default_navigation_timeout
344
348
  * set_default_timeout
@@ -360,6 +364,7 @@
360
364
 
361
365
  ## Browser
362
366
 
367
+ * browser_type
363
368
  * close
364
369
  * contexts
365
370
  * connected?
@@ -413,6 +418,7 @@
413
418
  * evaluate_all
414
419
  * evaluate_handle
415
420
  * fill
421
+ * filter
416
422
  * first
417
423
  * focus
418
424
  * frame_locator
@@ -453,9 +459,6 @@
453
459
  * locator
454
460
  * nth
455
461
 
456
- ## LocalUtils
457
-
458
-
459
462
  ## APIResponse
460
463
 
461
464
  * body
@@ -14,14 +14,14 @@
14
14
  "write-heading-ids": "docusaurus write-heading-ids"
15
15
  },
16
16
  "dependencies": {
17
- "@docusaurus/core": "^2.0.0-beta.6",
18
- "@docusaurus/preset-classic": "^2.0.0-beta.6",
19
- "@mdx-js/react": "^1.6.21",
20
- "@svgr/webpack": "^5.5.0",
17
+ "@docusaurus/core": "^2.0.0-beta.18",
18
+ "@docusaurus/preset-classic": "^2.0.0-beta.18",
19
+ "@mdx-js/react": "^1.6.22",
20
+ "@svgr/webpack": "^6.2.1",
21
21
  "clsx": "^1.1.1",
22
22
  "file-loader": "^6.2.0",
23
- "react": "^17.0.1",
24
- "react-dom": "^17.0.1",
23
+ "react": "^18.0.0",
24
+ "react-dom": "^18.0.0",
25
25
  "url-loader": "^4.1.1"
26
26
  },
27
27
  "browserslist": {