playwright-ruby-client 1.15.beta2 → 1.15.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/documentation/docs/api/mouse.md +11 -0
- data/documentation/docs/api/request.md +10 -3
- data/documentation/docs/api/response.md +20 -2
- data/documentation/docs/include/api_coverage.md +4 -0
- data/lib/playwright/channel_owners/request.rb +27 -12
- data/lib/playwright/channel_owners/response.rb +17 -10
- data/lib/playwright/http_headers.rb +0 -11
- data/lib/playwright/mouse_impl.rb +9 -0
- data/lib/playwright/raw_headers.rb +61 -0
- data/lib/playwright/version.rb +1 -1
- data/lib/playwright.rb +1 -0
- data/lib/playwright_api/cdp_session.rb +1 -1
- data/lib/playwright_api/mouse.rb +8 -0
- data/lib/playwright_api/request.rb +9 -5
- data/lib/playwright_api/response.rb +14 -7
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '028909fb1fc1321105a1172d46c02ccafbb071e5e630b5c5b616a9e76a695a91'
|
4
|
+
data.tar.gz: cadf29fb85714aac062c481b0c677709dc620141af57b0641d065a379210e93b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efe23218fd7aa8a5eee431af6fac5046420b222f67e196cd46cf44127bafe6a4db88f3ae56f71b1fe74d874fd385f1600009335e59be9c2a5bbca0ad4eacd13a
|
7
|
+
data.tar.gz: d0c78be5d3f3c662cd4b68bbbbf5624ce9febdf4be39740812f26573f14e68c5111fef7777b7ae2a5839c1723d3d20b91d680a2d691c791afcec01efe3630de2
|
@@ -66,3 +66,14 @@ def up(button: nil, clickCount: nil)
|
|
66
66
|
```
|
67
67
|
|
68
68
|
Dispatches a `mouseup` event.
|
69
|
+
|
70
|
+
## wheel
|
71
|
+
|
72
|
+
```
|
73
|
+
def wheel(deltaX, deltaY)
|
74
|
+
```
|
75
|
+
|
76
|
+
Dispatches a `wheel` event.
|
77
|
+
|
78
|
+
> NOTE: Wheel events may cause scrolling if they are not handled, and this method does not wait for the scrolling to
|
79
|
+
finish before returning.
|
@@ -65,7 +65,15 @@ def headers_array
|
|
65
65
|
```
|
66
66
|
|
67
67
|
An array with all the request HTTP headers associated with this request. Unlike [Request#all_headers](./request#all_headers), header
|
68
|
-
names are
|
68
|
+
names are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
|
69
|
+
|
70
|
+
## header_value
|
71
|
+
|
72
|
+
```
|
73
|
+
def header_value(name)
|
74
|
+
```
|
75
|
+
|
76
|
+
Returns the value of the header matching the name. The name is case insensitive.
|
69
77
|
|
70
78
|
## navigation_request?
|
71
79
|
|
@@ -179,8 +187,7 @@ Returns the matching [Response](./response) object, or `null` if the response wa
|
|
179
187
|
def sizes
|
180
188
|
```
|
181
189
|
|
182
|
-
Returns resource size information for given request.
|
183
|
-
[Response#finished](./response#finished) to ensure the info is available.
|
190
|
+
Returns resource size information for given request.
|
184
191
|
|
185
192
|
## timing
|
186
193
|
|
@@ -28,7 +28,7 @@ Returns the buffer with response body.
|
|
28
28
|
def finished
|
29
29
|
```
|
30
30
|
|
31
|
-
Waits for this response to finish, returns
|
31
|
+
Waits for this response to finish, returns always `null`.
|
32
32
|
|
33
33
|
## frame
|
34
34
|
|
@@ -53,7 +53,25 @@ def headers_array
|
|
53
53
|
```
|
54
54
|
|
55
55
|
An array with all the request HTTP headers associated with this response. Unlike [Response#all_headers](./response#all_headers), header
|
56
|
-
names are
|
56
|
+
names are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
|
57
|
+
|
58
|
+
## header_value
|
59
|
+
|
60
|
+
```
|
61
|
+
def header_value(name)
|
62
|
+
```
|
63
|
+
|
64
|
+
Returns the value of the header matching the name. The name is case insensitive. If multiple headers have the same name
|
65
|
+
(except `set-cookie`), they are returned as a list separated by `, `. For `set-cookie`, the `\n` separator is used. If
|
66
|
+
no headers are found, `null` is returned.
|
67
|
+
|
68
|
+
## header_values
|
69
|
+
|
70
|
+
```
|
71
|
+
def header_values(name)
|
72
|
+
```
|
73
|
+
|
74
|
+
Returns all values of the headers matching the name, for example `set-cookie`. The name is case insensitive.
|
57
75
|
|
58
76
|
## json
|
59
77
|
|
@@ -7,6 +7,7 @@
|
|
7
7
|
* frame
|
8
8
|
* headers
|
9
9
|
* headers_array
|
10
|
+
* header_value
|
10
11
|
* navigation_request?
|
11
12
|
* method
|
12
13
|
* post_data
|
@@ -28,6 +29,8 @@
|
|
28
29
|
* frame
|
29
30
|
* headers
|
30
31
|
* headers_array
|
32
|
+
* header_value
|
33
|
+
* header_values
|
31
34
|
* json
|
32
35
|
* ok
|
33
36
|
* request
|
@@ -67,6 +70,7 @@
|
|
67
70
|
* down
|
68
71
|
* move
|
69
72
|
* up
|
73
|
+
* wheel
|
70
74
|
|
71
75
|
## Touchscreen
|
72
76
|
|
@@ -1,14 +1,12 @@
|
|
1
1
|
require 'base64'
|
2
|
-
require_relative '../http_headers'
|
3
2
|
|
4
3
|
module Playwright
|
5
4
|
# @ref https://github.com/microsoft/playwright-python/blob/master/playwright/_impl/_network.py
|
6
5
|
define_channel_owner :Request do
|
7
|
-
include HttpHeaders::Parser
|
8
|
-
|
9
6
|
private def after_initialize
|
10
7
|
@redirected_from = ChannelOwners::Request.from_nullable(@initializer['redirectedFrom'])
|
11
8
|
@redirected_from&.send(:update_redirected_to, self)
|
9
|
+
@provisional_headers = RawHeaders.new(@initializer['headers'])
|
12
10
|
@timing = {
|
13
11
|
startTime: 0,
|
14
12
|
domainLookupStart: -1,
|
@@ -81,26 +79,43 @@ module Playwright
|
|
81
79
|
attr_reader :redirected_from, :redirected_to, :timing
|
82
80
|
|
83
81
|
def headers
|
84
|
-
|
82
|
+
@provisional_headers.headers
|
85
83
|
end
|
86
84
|
|
87
|
-
|
88
|
-
|
85
|
+
# @return [RawHeaders|nil]
|
86
|
+
private def actual_headers
|
87
|
+
@actual_headers ||= response&.send(:raw_request_headers)
|
89
88
|
end
|
90
89
|
|
91
90
|
def all_headers
|
92
|
-
if
|
93
|
-
|
91
|
+
if actual_headers
|
92
|
+
actual_headers.headers
|
94
93
|
else
|
95
|
-
|
94
|
+
@provisional_headers.headers
|
96
95
|
end
|
97
96
|
end
|
98
97
|
|
99
98
|
def headers_array
|
100
|
-
if
|
101
|
-
|
99
|
+
if actual_headers
|
100
|
+
actual_headers.headers_array
|
101
|
+
else
|
102
|
+
@provisional_headers.headers_array
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def header_value(name)
|
107
|
+
if actual_headers
|
108
|
+
actual_headers.get(name)
|
109
|
+
else
|
110
|
+
@provisional_headers.get(name)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def header_values(name)
|
115
|
+
if actual_headers
|
116
|
+
actual_headers.get_all(name)
|
102
117
|
else
|
103
|
-
|
118
|
+
@provisional_headers.get_all(name)
|
104
119
|
end
|
105
120
|
end
|
106
121
|
|
@@ -1,13 +1,11 @@
|
|
1
1
|
require 'base64'
|
2
2
|
require 'json'
|
3
|
-
require_relative '../http_headers'
|
4
3
|
|
5
4
|
module Playwright
|
6
5
|
# @ref https://github.com/microsoft/playwright-python/blob/master/playwright/_impl/_network.py
|
7
6
|
define_channel_owner :Response do
|
8
|
-
include HttpHeaders::Parser
|
9
|
-
|
10
7
|
private def after_initialize
|
8
|
+
@provisional_headers = RawHeaders.new(@initializer['headers'])
|
11
9
|
@request = ChannelOwners::Request.from(@initializer['request'])
|
12
10
|
timing = @initializer['timing']
|
13
11
|
@request.send(:update_timings,
|
@@ -42,27 +40,36 @@ module Playwright
|
|
42
40
|
end
|
43
41
|
|
44
42
|
def headers
|
45
|
-
|
43
|
+
@provisional_headers.headers
|
46
44
|
end
|
47
45
|
|
48
|
-
|
49
|
-
|
46
|
+
# @return [RawHeaders]
|
47
|
+
private def actual_headers
|
48
|
+
@actual_headers ||= raw_response_headers
|
50
49
|
end
|
51
50
|
|
52
51
|
private def raw_request_headers
|
53
|
-
@channel.send_message_to_server('rawRequestHeaders')
|
52
|
+
RawHeaders.new(@channel.send_message_to_server('rawRequestHeaders'))
|
54
53
|
end
|
55
54
|
|
56
55
|
private def raw_response_headers
|
57
|
-
@channel.send_message_to_server('rawResponseHeaders')
|
56
|
+
RawHeaders.new(@channel.send_message_to_server('rawResponseHeaders'))
|
58
57
|
end
|
59
58
|
|
60
59
|
def all_headers
|
61
|
-
|
60
|
+
actual_headers.headers
|
62
61
|
end
|
63
62
|
|
64
63
|
def headers_array
|
65
|
-
|
64
|
+
actual_headers.headers_array
|
65
|
+
end
|
66
|
+
|
67
|
+
def header_value(name)
|
68
|
+
actual_headers.get(name)
|
69
|
+
end
|
70
|
+
|
71
|
+
def header_values(name)
|
72
|
+
actual_headers.get_all(name)
|
66
73
|
end
|
67
74
|
|
68
75
|
def server_addr
|
@@ -10,16 +10,5 @@ module Playwright
|
|
10
10
|
{ name: key, value: value }
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
|
-
module Parser
|
15
|
-
def parse_headers_as_array(serialized_headers, downcase)
|
16
|
-
serialized_headers.map do |header|
|
17
|
-
name = downcase ? header['name'].downcase : header['name']
|
18
|
-
value = header['value']
|
19
|
-
|
20
|
-
[name, value]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
13
|
end
|
25
14
|
end
|
@@ -44,5 +44,14 @@ module Playwright
|
|
44
44
|
def dblclick(x, y, button: nil, delay: nil)
|
45
45
|
click(x, y, button: button, clickCount: 2, delay: delay)
|
46
46
|
end
|
47
|
+
|
48
|
+
def wheel(deltaX, deltaY)
|
49
|
+
params = {
|
50
|
+
deltaX: deltaX,
|
51
|
+
deltaY: deltaY,
|
52
|
+
}
|
53
|
+
@channel.send_message_to_server('mouseWheel', params)
|
54
|
+
nil
|
55
|
+
end
|
47
56
|
end
|
48
57
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Playwright
|
2
|
+
class RawHeaders
|
3
|
+
def initialize(headers_array)
|
4
|
+
h_array = []
|
5
|
+
h_map = {}
|
6
|
+
headers_array.each do |header|
|
7
|
+
name = header['name']
|
8
|
+
key = name.downcase
|
9
|
+
value = header['value']
|
10
|
+
|
11
|
+
h_array << [name, value]
|
12
|
+
h_map[key] ||= []
|
13
|
+
h_map[key] << value
|
14
|
+
end
|
15
|
+
|
16
|
+
@headers_array = h_array
|
17
|
+
@headers_map = h_map
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [String|nil]
|
21
|
+
def get(name)
|
22
|
+
key = name.downcase
|
23
|
+
values = @headers_map[key]
|
24
|
+
if values
|
25
|
+
join(key, values)
|
26
|
+
else
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [Array<String>]
|
32
|
+
def get_all(name)
|
33
|
+
values = @headers_map[name.downcase]
|
34
|
+
if values
|
35
|
+
values.dup
|
36
|
+
else
|
37
|
+
[]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def headers
|
42
|
+
@headers_map.map do |key, values|
|
43
|
+
[key, join(key, values)]
|
44
|
+
end.to_h
|
45
|
+
end
|
46
|
+
|
47
|
+
def headers_array
|
48
|
+
@headers_array.map do |name, value|
|
49
|
+
{ name: name, value: value }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private def join(key, values)
|
54
|
+
if key == 'set-cookie'
|
55
|
+
values.join("\n")
|
56
|
+
else
|
57
|
+
values.join(", ")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/playwright/version.rb
CHANGED
data/lib/playwright.rb
CHANGED
@@ -20,6 +20,7 @@ require 'playwright/channel_owner'
|
|
20
20
|
require 'playwright/http_headers'
|
21
21
|
require 'playwright/input_files'
|
22
22
|
require 'playwright/connection'
|
23
|
+
require 'playwright/raw_headers'
|
23
24
|
require 'playwright/route_handler'
|
24
25
|
require 'playwright/select_option_values'
|
25
26
|
require 'playwright/timeout_settings'
|
@@ -12,7 +12,7 @@ module Playwright
|
|
12
12
|
# https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
|
13
13
|
#
|
14
14
|
# ```python sync
|
15
|
-
# client = page.context
|
15
|
+
# client = page.context.new_cdp_session(page)
|
16
16
|
# client.send("Animation.enable")
|
17
17
|
# client.on("Animation.animationCreated", lambda: print("animation created!"))
|
18
18
|
# response = client.send("Animation.getPlaybackRate")
|
data/lib/playwright_api/mouse.rb
CHANGED
@@ -45,5 +45,13 @@ module Playwright
|
|
45
45
|
def up(button: nil, clickCount: nil)
|
46
46
|
wrap_impl(@impl.up(button: unwrap_impl(button), clickCount: unwrap_impl(clickCount)))
|
47
47
|
end
|
48
|
+
|
49
|
+
# Dispatches a `wheel` event.
|
50
|
+
#
|
51
|
+
# > NOTE: Wheel events may cause scrolling if they are not handled, and this method does not wait for the scrolling to
|
52
|
+
# finish before returning.
|
53
|
+
def wheel(deltaX, deltaY)
|
54
|
+
wrap_impl(@impl.wheel(unwrap_impl(deltaX), unwrap_impl(deltaY)))
|
55
|
+
end
|
48
56
|
end
|
49
57
|
end
|
@@ -41,11 +41,16 @@ module Playwright
|
|
41
41
|
end
|
42
42
|
|
43
43
|
# An array with all the request HTTP headers associated with this request. Unlike [`method: Request.allHeaders`], header
|
44
|
-
# names are
|
44
|
+
# names are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
|
45
45
|
def headers_array
|
46
46
|
wrap_impl(@impl.headers_array)
|
47
47
|
end
|
48
48
|
|
49
|
+
# Returns the value of the header matching the name. The name is case insensitive.
|
50
|
+
def header_value(name)
|
51
|
+
wrap_impl(@impl.header_value(unwrap_impl(name)))
|
52
|
+
end
|
53
|
+
|
49
54
|
# Whether this request is driving frame's navigation.
|
50
55
|
def navigation_request?
|
51
56
|
wrap_impl(@impl.navigation_request?)
|
@@ -120,8 +125,7 @@ module Playwright
|
|
120
125
|
wrap_impl(@impl.response)
|
121
126
|
end
|
122
127
|
|
123
|
-
# Returns resource size information for given request.
|
124
|
-
# [`method: Response.finished`] to ensure the info is available.
|
128
|
+
# Returns resource size information for given request.
|
125
129
|
def sizes
|
126
130
|
wrap_impl(@impl.sizes)
|
127
131
|
end
|
@@ -146,8 +150,8 @@ module Playwright
|
|
146
150
|
end
|
147
151
|
|
148
152
|
# @nodoc
|
149
|
-
def
|
150
|
-
wrap_impl(@impl.
|
153
|
+
def header_values(name)
|
154
|
+
wrap_impl(@impl.header_values(unwrap_impl(name)))
|
151
155
|
end
|
152
156
|
|
153
157
|
# -- inherited from EventEmitter --
|
@@ -12,7 +12,7 @@ module Playwright
|
|
12
12
|
wrap_impl(@impl.body)
|
13
13
|
end
|
14
14
|
|
15
|
-
# Waits for this response to finish, returns
|
15
|
+
# Waits for this response to finish, returns always `null`.
|
16
16
|
def finished
|
17
17
|
wrap_impl(@impl.finished)
|
18
18
|
end
|
@@ -28,11 +28,23 @@ module Playwright
|
|
28
28
|
end
|
29
29
|
|
30
30
|
# An array with all the request HTTP headers associated with this response. Unlike [`method: Response.allHeaders`], header
|
31
|
-
# names are
|
31
|
+
# names are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
|
32
32
|
def headers_array
|
33
33
|
wrap_impl(@impl.headers_array)
|
34
34
|
end
|
35
35
|
|
36
|
+
# Returns the value of the header matching the name. The name is case insensitive. If multiple headers have the same name
|
37
|
+
# (except `set-cookie`), they are returned as a list separated by `, `. For `set-cookie`, the `\n` separator is used. If
|
38
|
+
# no headers are found, `null` is returned.
|
39
|
+
def header_value(name)
|
40
|
+
wrap_impl(@impl.header_value(unwrap_impl(name)))
|
41
|
+
end
|
42
|
+
|
43
|
+
# Returns all values of the headers matching the name, for example `set-cookie`. The name is case insensitive.
|
44
|
+
def header_values(name)
|
45
|
+
wrap_impl(@impl.header_values(unwrap_impl(name)))
|
46
|
+
end
|
47
|
+
|
36
48
|
# Returns the JSON representation of response body.
|
37
49
|
#
|
38
50
|
# This method will throw if the response body is not parsable via `JSON.parse`.
|
@@ -85,11 +97,6 @@ module Playwright
|
|
85
97
|
wrap_impl(@impl.ok?)
|
86
98
|
end
|
87
99
|
|
88
|
-
# @nodoc
|
89
|
-
def parse_headers_as_array(serialized_headers, downcase)
|
90
|
-
wrap_impl(@impl.parse_headers_as_array(unwrap_impl(serialized_headers), unwrap_impl(downcase)))
|
91
|
-
end
|
92
|
-
|
93
100
|
# -- inherited from EventEmitter --
|
94
101
|
# @nodoc
|
95
102
|
def off(event, callback)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playwright-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.15.
|
4
|
+
version: 1.15.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YusukeIwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -315,6 +315,7 @@ files:
|
|
315
315
|
- lib/playwright/locator_impl.rb
|
316
316
|
- lib/playwright/mouse_impl.rb
|
317
317
|
- lib/playwright/playwright_api.rb
|
318
|
+
- lib/playwright/raw_headers.rb
|
318
319
|
- lib/playwright/route_handler.rb
|
319
320
|
- lib/playwright/select_option_values.rb
|
320
321
|
- lib/playwright/timeout_settings.rb
|