playwright-ruby-client 1.15.beta2 → 1.15.beta3

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 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