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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2247f39a5fa4881e45ad884606295d7003b3e42ca9db5436b223d921649e5553
4
- data.tar.gz: f7f57d5044c66e300912578faa1d8114ee98f2eb1de736eac3da698e7851b9d6
3
+ metadata.gz: '028909fb1fc1321105a1172d46c02ccafbb071e5e630b5c5b616a9e76a695a91'
4
+ data.tar.gz: cadf29fb85714aac062c481b0c677709dc620141af57b0641d065a379210e93b
5
5
  SHA512:
6
- metadata.gz: 86b2003368d06755bfef64cebe40c716ef9d0156d6bd21f18fddc79cef07ffee5a48f562294c32b956dd664b5480326587736ee56334c76e80e8a8e2b89dfb72
7
- data.tar.gz: 20697ed55fb7ce54856d04dc0f9568316d5941b0b103ce5c0138e680a28aeda1b7876a3cf4d358f006a2b5d7115a267ed8e7c689064bf54f65e6797848d69a2f
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 not lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
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. Requires the response to be finished via
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 failure error if request failed.
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 not lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
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
- parse_headers_as_array(@initializer['headers'], true).to_h
82
+ @provisional_headers.headers
85
83
  end
86
84
 
87
- private def raw_headers
88
- @raw_headers ||= response&.send(:raw_request_headers)
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 raw_headers
93
- parse_headers_as_array(raw_headers, true).to_h
91
+ if actual_headers
92
+ actual_headers.headers
94
93
  else
95
- parse_headers_as_array(@initializer['headers'], true).to_h
94
+ @provisional_headers.headers
96
95
  end
97
96
  end
98
97
 
99
98
  def headers_array
100
- if raw_headers
101
- parse_headers_as_array(raw_headers, false)
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
- parse_headers_as_array(@initializer['headers'], false)
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
- parse_headers_as_array(@initializer['headers'], true).to_h
43
+ @provisional_headers.headers
46
44
  end
47
45
 
48
- private def raw_headers
49
- @raw_headers ||= raw_response_headers
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
- parse_headers_as_array(raw_headers, true).to_h
60
+ actual_headers.headers
62
61
  end
63
62
 
64
63
  def headers_array
65
- parse_headers_as_array(raw_headers, false)
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.15.beta2'
4
+ VERSION = '1.15.beta3'
5
5
  COMPATIBLE_PLAYWRIGHT_VERSION = '1.15.0'
6
6
  end
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().new_cdp_session(page)
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")
@@ -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 not lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
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. Requires the response to be finished via
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 parse_headers_as_array(serialized_headers, downcase)
150
- wrap_impl(@impl.parse_headers_as_array(unwrap_impl(serialized_headers), unwrap_impl(downcase)))
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 failure error if request failed.
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 not lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
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.beta2
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-09 00:00:00.000000000 Z
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