playwright-ruby-client 0.5.3 → 0.5.8

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: 81be247e4fe8a3bf351cf8ead156c490657547f89a1ae5f8a1536ad72a1c30e4
4
- data.tar.gz: '0398932fd2d3eae453668624bad5271990bc426168caa56e71be773e87e9504a'
3
+ metadata.gz: 6edb69becb86be4d50f959a89b068bca80135f98b7db737a8de23301abd92310
4
+ data.tar.gz: 61b8b4aed269864caadb03b780787ebb627269bdcf416ce1513b77a530c87dbe
5
5
  SHA512:
6
- metadata.gz: b77d93002b1395839dc4f9cf2c62bb40e9abaca0008aaf2a52c83498b811018782144686c7a83acdc8ae2b9bc3287b21e2808fcb996d6b270deb7fdf04c2dddb
7
- data.tar.gz: 72c787d2dc63a2b78e09ae5660d1774a390e65ceb322529807965a0da95f27ca5f6ffd23dbcf1b81fb8ac4bb44f17ac58e508075c5cae959b1d1e233ed7c09e1
6
+ metadata.gz: 8826473bfaf34affa5898551a68cc421403c0cea9cccd436fa3181706f84b3ef49cac4629a9749259096b41c90dcaa1cd844b88e0e4b6bf8a9761d6270ed07a2
7
+ data.tar.gz: 7d554a71a19a3473108b2e4a8e213a3dcac1adbdfa74c007fd95bc868f9d882b9c319660be65700e09791e1111526544875575150e81c0dea0437f818f29b4dc
@@ -10,6 +10,9 @@ module Playwright
10
10
  channel&.object
11
11
  end
12
12
 
13
+ # hidden field for caching API instance.
14
+ attr_accessor :_api
15
+
13
16
  # @param parent [Playwright::ChannelOwner|Playwright::Connection]
14
17
  # @param type [String]
15
18
  # @param guid [String]
@@ -82,7 +82,7 @@ module Playwright
82
82
  modifiers: modifiers,
83
83
  position: position,
84
84
  timeout: timeout,
85
- }
85
+ }.compact
86
86
  @channel.send_message_to_server('hover', params)
87
87
 
88
88
  nil
@@ -149,10 +149,8 @@ module Playwright
149
149
  value: value,
150
150
  label: label,
151
151
  ).as_params
152
- params = base_params + { noWaitAfter: noWaitAfter, timeout: timeout }.compact
152
+ params = base_params.merge({ noWaitAfter: noWaitAfter, timeout: timeout }.compact)
153
153
  @channel.send_message_to_server('selectOption', params)
154
-
155
- nil
156
154
  end
157
155
 
158
156
  def tap_point(
@@ -421,10 +421,8 @@ module Playwright
421
421
  value: value,
422
422
  label: label,
423
423
  ).as_params
424
- params = base_params + { selector: selector, noWaitAfter: noWaitAfter, timeout: timeout }.compact
424
+ params = base_params.merge({ selector: selector, noWaitAfter: noWaitAfter, timeout: timeout }.compact)
425
425
  @channel.send_message_to_server('selectOption', params)
426
-
427
- nil
428
426
  end
429
427
 
430
428
  def set_input_files(selector, files, noWaitAfter: nil, timeout: nil)
@@ -798,5 +798,11 @@ module Playwright
798
798
  private def has_bindings?(name)
799
799
  @bindings.key?(name)
800
800
  end
801
+
802
+ # Expose guid for library developers.
803
+ # Not intended to be used by users.
804
+ def guid
805
+ @guid
806
+ end
801
807
  end
802
808
  end
@@ -14,7 +14,7 @@ module Playwright
14
14
  when ApiImplementation
15
15
  ApiImplementationWrapper.new(channel_owner_or_api_implementation).wrap
16
16
  else
17
- nil
17
+ channel_owner_or_api_implementation
18
18
  end
19
19
  end
20
20
 
@@ -31,7 +31,7 @@ module Playwright
31
31
  def wrap
32
32
  api_class = detect_class_for(@impl.class)
33
33
  if api_class
34
- api_class.new(@impl)
34
+ @impl._api ||= api_class.new(@impl)
35
35
  else
36
36
  raise NotImplementedError.new("Playwright::#{expected_class_name_for(@impl.class)} is not implemented")
37
37
  end
@@ -101,10 +101,6 @@ module Playwright
101
101
  @impl = impl
102
102
  end
103
103
 
104
- def ==(other)
105
- @impl.to_s == other.instance_variable_get(:'@impl').to_s
106
- end
107
-
108
104
  # @param block [Proc]
109
105
  private def wrap_block_call(block)
110
106
  return nil unless block.is_a?(Proc)
@@ -119,7 +115,7 @@ module Playwright
119
115
  if object.is_a?(Array)
120
116
  object.map { |obj| wrap_impl(obj) }
121
117
  else
122
- ::Playwright::PlaywrightApi.wrap(object) || object
118
+ ::Playwright::PlaywrightApi.wrap(object)
123
119
  end
124
120
  end
125
121
 
@@ -1,18 +1,30 @@
1
1
  module Playwright
2
2
  class SelectOptionValues
3
3
  def initialize(element: nil, index: nil, value: nil, label: nil)
4
- @params =
5
- if element
6
- convert(elmeent)
7
- elsif index
8
- convert(index)
9
- elsif value
10
- convert(value)
11
- elsif label
12
- convert(label)
13
- else
14
- {}
15
- end
4
+ params = {}
5
+
6
+ options = []
7
+ if value
8
+ options.concat(convert(:value, value))
9
+ end
10
+
11
+ if index
12
+ options.concat(convert(:index, index))
13
+ end
14
+
15
+ if label
16
+ options.concat(convert(:label, label))
17
+ end
18
+
19
+ unless options.empty?
20
+ params[:options] = options
21
+ end
22
+
23
+ if element
24
+ params[:elements] = convert(:element, element)
25
+ end
26
+
27
+ @params = params
16
28
  end
17
29
 
18
30
  # @return [Hash]
@@ -20,22 +32,19 @@ module Playwright
20
32
  @params
21
33
  end
22
34
 
23
- private def convert(values)
24
- return convert([values]) unless values.is_a?(Enumerable)
25
- return {} if values.empty?
35
+ private def convert(key, values)
36
+ return convert(key, [values]) unless values.is_a?(Enumerable)
37
+ return [] if values.empty?
26
38
  values.each_with_index do |value, index|
27
- unless values
39
+ unless value
28
40
  raise ArgumentError.new("options[#{index}]: expected object, got null")
29
41
  end
30
42
  end
31
43
 
32
- case values.first
33
- when ElementHandle
34
- { elements: values.map(&:channel) }
35
- when String
36
- { options: values.map { |value| { value: value } } }
44
+ if key == :element
45
+ values.map(&:channel)
37
46
  else
38
- { options: values }
47
+ values.map { |value| { key => value } }
39
48
  end
40
49
  end
41
50
  end
@@ -30,8 +30,8 @@ module Playwright
30
30
  debug_send_message(message) if @debug
31
31
  msg = JSON.dump(message)
32
32
  @mutex.synchronize {
33
- @stdin.write([msg.size].pack('V')) # unsigned 32bit, little endian
34
- @stdin.write(msg)
33
+ @stdin.write([msg.bytes.length].pack('V')) # unsigned 32bit, little endian, real byte size instead of chars
34
+ @stdin.write(msg) # write UTF-8 in binary mode as byte stream
35
35
  }
36
36
  rescue Errno::EPIPE, IOError
37
37
  raise AlreadyDisconnectedError.new('send_message failed')
@@ -48,6 +48,7 @@ module Playwright
48
48
  # @note This method blocks until playwright-cli exited. Consider using Thread or Future.
49
49
  def async_run
50
50
  @stdin, @stdout, @stderr, @thread = Open3.popen3("#{@driver_executable_path} run-driver")
51
+ @stdin.binmode # Ensure Strings are written 1:1 without encoding conversion, necessary for integer values
51
52
 
52
53
  Thread.new { handle_stdout }
53
54
  Thread.new { handle_stderr }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '0.5.3'
4
+ VERSION = '0.5.8'
5
5
  end
@@ -730,13 +730,13 @@ module Playwright
730
730
  end
731
731
 
732
732
  # @nodoc
733
- def options=(req)
734
- wrap_impl(@impl.options=(unwrap_impl(req)))
733
+ def browser=(req)
734
+ wrap_impl(@impl.browser=(unwrap_impl(req)))
735
735
  end
736
736
 
737
737
  # @nodoc
738
- def browser=(req)
739
- wrap_impl(@impl.browser=(unwrap_impl(req)))
738
+ def owner_page=(req)
739
+ wrap_impl(@impl.owner_page=(unwrap_impl(req)))
740
740
  end
741
741
 
742
742
  # @nodoc
@@ -745,8 +745,8 @@ module Playwright
745
745
  end
746
746
 
747
747
  # @nodoc
748
- def owner_page=(req)
749
- wrap_impl(@impl.owner_page=(unwrap_impl(req)))
748
+ def options=(req)
749
+ wrap_impl(@impl.options=(unwrap_impl(req)))
750
750
  end
751
751
 
752
752
  # -- inherited from EventEmitter --
@@ -2268,6 +2268,11 @@ module Playwright
2268
2268
  raise NotImplementedError.new('wait_for_event is not implemented yet.')
2269
2269
  end
2270
2270
 
2271
+ # @nodoc
2272
+ def owned_context=(req)
2273
+ wrap_impl(@impl.owned_context=(unwrap_impl(req)))
2274
+ end
2275
+
2271
2276
  # @nodoc
2272
2277
  def start_js_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
2273
2278
  wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
@@ -2289,8 +2294,8 @@ module Playwright
2289
2294
  end
2290
2295
 
2291
2296
  # @nodoc
2292
- def owned_context=(req)
2293
- wrap_impl(@impl.owned_context=(unwrap_impl(req)))
2297
+ def guid
2298
+ wrap_impl(@impl.guid)
2294
2299
  end
2295
2300
 
2296
2301
  # -- inherited from EventEmitter --
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: 0.5.3
4
+ version: 0.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-02 00:00:00.000000000 Z
11
+ date: 2021-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby