playwright-ruby-client 1.20.2 → 1.23.0

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