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.
- checksums.yaml +4 -4
- data/documentation/docs/api/api_request_context.md +15 -2
- data/documentation/docs/api/browser.md +16 -0
- data/documentation/docs/api/browser_context.md +15 -2
- data/documentation/docs/api/browser_type.md +5 -1
- data/documentation/docs/api/console_message.md +27 -1
- data/documentation/docs/api/element_handle.md +23 -13
- data/documentation/docs/api/experimental/android.md +1 -1
- data/documentation/docs/api/experimental/android_device.md +4 -0
- data/documentation/docs/api/file_chooser.md +1 -1
- data/documentation/docs/api/frame.md +12 -5
- data/documentation/docs/api/frame_locator.md +1 -1
- data/documentation/docs/api/locator.md +44 -13
- data/documentation/docs/api/page.md +32 -9
- data/documentation/docs/api/request.md +3 -1
- data/documentation/docs/api/response.md +12 -1
- data/documentation/docs/api/route.md +67 -0
- data/documentation/docs/include/api_coverage.md +6 -3
- data/documentation/package.json +6 -6
- data/documentation/yarn.lock +2931 -3220
- data/lib/playwright/channel.rb +1 -3
- data/lib/playwright/channel_owners/browser.rb +13 -0
- data/lib/playwright/channel_owners/browser_context.rb +89 -13
- data/lib/playwright/channel_owners/browser_type.rb +4 -0
- data/lib/playwright/channel_owners/element_handle.rb +12 -3
- data/lib/playwright/channel_owners/frame.rb +20 -7
- data/lib/playwright/channel_owners/local_utils.rb +29 -0
- data/lib/playwright/channel_owners/page.rb +54 -22
- data/lib/playwright/channel_owners/request.rb +31 -6
- data/lib/playwright/channel_owners/response.rb +6 -0
- data/lib/playwright/channel_owners/route.rb +104 -45
- data/lib/playwright/channel_owners/writable_stream.rb +14 -0
- data/lib/playwright/connection.rb +6 -1
- data/lib/playwright/har_router.rb +82 -0
- data/lib/playwright/http_headers.rb +1 -1
- data/lib/playwright/input_files.rb +60 -8
- data/lib/playwright/javascript/regex.rb +23 -0
- data/lib/playwright/javascript/value_parser.rb +17 -2
- data/lib/playwright/javascript/value_serializer.rb +16 -6
- data/lib/playwright/javascript/visitor_info.rb +26 -0
- data/lib/playwright/javascript.rb +1 -0
- data/lib/playwright/locator_impl.rb +18 -5
- data/lib/playwright/playwright_api.rb +26 -6
- data/lib/playwright/route_handler.rb +2 -6
- data/lib/playwright/transport.rb +12 -2
- data/lib/playwright/utils.rb +31 -6
- data/lib/playwright/version.rb +2 -2
- data/lib/playwright.rb +2 -0
- data/lib/playwright_api/accessibility.rb +2 -1
- data/lib/playwright_api/android.rb +2 -2
- data/lib/playwright_api/android_device.rb +5 -1
- data/lib/playwright_api/api_request.rb +3 -3
- data/lib/playwright_api/api_request_context.rb +15 -2
- data/lib/playwright_api/browser.rb +15 -2
- data/lib/playwright_api/browser_context.rb +17 -7
- data/lib/playwright_api/browser_type.rb +7 -3
- data/lib/playwright_api/console_message.rb +20 -1
- data/lib/playwright_api/element_handle.rb +53 -49
- data/lib/playwright_api/file_chooser.rb +1 -1
- data/lib/playwright_api/frame.rb +30 -23
- data/lib/playwright_api/frame_locator.rb +1 -1
- data/lib/playwright_api/locator.rb +58 -38
- data/lib/playwright_api/page.rb +52 -32
- data/lib/playwright_api/playwright.rb +1 -1
- data/lib/playwright_api/request.rb +8 -1
- data/lib/playwright_api/response.rb +14 -1
- data/lib/playwright_api/route.rb +63 -2
- data/lib/playwright_api/selectors.rb +1 -1
- data/lib/playwright_api/tracing.rb +1 -1
- metadata +7 -4
- 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
|
data/documentation/package.json
CHANGED
@@ -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.
|
18
|
-
"@docusaurus/preset-classic": "^2.0.0-beta.
|
19
|
-
"@mdx-js/react": "^1.6.
|
20
|
-
"@svgr/webpack": "^
|
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": "^
|
24
|
-
"react-dom": "^
|
23
|
+
"react": "^18.0.0",
|
24
|
+
"react-dom": "^18.0.0",
|
25
25
|
"url-loader": "^4.1.1"
|
26
26
|
},
|
27
27
|
"browserslist": {
|