playwright-ruby-client 1.28.0 → 1.28.1

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: 6d96f4cf4c170f020d8b73571e23f61e994e535708759b0148aec799110f3d72
4
- data.tar.gz: cc6471e1da4e8f02d8b98b960a84feb67251bafd7781dec9c0d103385474f098
3
+ metadata.gz: f6b579547c4cff2fbaf98b5c2796c8689f655f316b391b7127891fd03212cea4
4
+ data.tar.gz: c32a3787fa3f6c2e874844f94deef249c335cee4f6efcc8d23e8045bfd6346f1
5
5
  SHA512:
6
- metadata.gz: 953724a4d98d278b2bcd63a580f433b1defb630534023ae2c3c2df426ef4717a89c6c0e546fb76df5df7ae0b16cfd01d494be36c277d890f1774d65551932fdc
7
- data.tar.gz: 92be169ac6c6adeac4ac7346df21dd929de1021e38f99f01eba73a74c4327d0436b97e6ea074560f49520eada9a6cd29f399ae144a7baa93fd64cec1c63c9cd4
6
+ metadata.gz: 7481f324212879e913399614beab51affce2c8dc05040ac0d506d9b583fcf48c897bd1a1f3b7f332212497db2000e538a1cf1fd19c60d5ddf7c884e2e366d687
7
+ data.tar.gz: 58eb07d5abb6307bd15464b6f33d8c0d0cc4110cf80c26915cecc00be911fba8e6240687cb46698c81fda29651718b4039f8ca1530661e5ccd4a7d1632bd6ef3
@@ -4,8 +4,8 @@ module Playwright
4
4
  @timeout_settings = TimeoutSettings.new
5
5
  end
6
6
 
7
- def devices(port: nil)
8
- params = { port: port }.compact
7
+ def devices(host: nil, omitDriverInstall: nil, port: nil)
8
+ params = { host: host, port: port, omitDriverInstall: omitDriverInstall }.compact
9
9
  resp = @channel.send_message_to_server('devices', params)
10
10
  resp.map { |device| ChannelOwners::AndroidDevice.from(device) }
11
11
  end
@@ -4,6 +4,11 @@ module Playwright
4
4
 
5
5
  private def after_initialize
6
6
  @input = AndroidInputImpl.new(@channel)
7
+ @should_close_connection_on_close = false
8
+ end
9
+
10
+ def should_close_connection_on_close!
11
+ @should_close_connection_on_close = true
7
12
  end
8
13
 
9
14
  attr_reader :input
@@ -77,8 +82,12 @@ module Playwright
77
82
  end
78
83
 
79
84
  def close
80
- @channel.send_message_to_server('close')
81
85
  emit(Events::AndroidDevice::Close)
86
+ if @should_close_connection_on_close
87
+ @connection.stop
88
+ else
89
+ @channel.send_message_to_server('close')
90
+ end
82
91
  end
83
92
 
84
93
  def shell(command)
@@ -86,60 +95,10 @@ module Playwright
86
95
  Base64.strict_decode64(resp)
87
96
  end
88
97
 
89
- def launch_browser(
90
- pkg: nil,
91
- acceptDownloads: nil,
92
- bypassCSP: nil,
93
- colorScheme: nil,
94
- deviceScaleFactor: nil,
95
- extraHTTPHeaders: nil,
96
- geolocation: nil,
97
- hasTouch: nil,
98
- httpCredentials: nil,
99
- ignoreHTTPSErrors: nil,
100
- isMobile: nil,
101
- javaScriptEnabled: nil,
102
- locale: nil,
103
- noViewport: nil,
104
- offline: nil,
105
- permissions: nil,
106
- proxy: nil,
107
- record_har_omit_content: nil,
108
- record_har_path: nil,
109
- record_video_dir: nil,
110
- record_video_size: nil,
111
- storageState: nil,
112
- timezoneId: nil,
113
- userAgent: nil,
114
- viewport: nil,
115
- &block)
116
- params = {
117
- pkg: pkg,
118
- acceptDownloads: acceptDownloads,
119
- bypassCSP: bypassCSP,
120
- colorScheme: colorScheme,
121
- deviceScaleFactor: deviceScaleFactor,
122
- extraHTTPHeaders: extraHTTPHeaders,
123
- geolocation: geolocation,
124
- hasTouch: hasTouch,
125
- httpCredentials: httpCredentials,
126
- ignoreHTTPSErrors: ignoreHTTPSErrors,
127
- isMobile: isMobile,
128
- javaScriptEnabled: javaScriptEnabled,
129
- locale: locale,
130
- noViewport: noViewport,
131
- offline: offline,
132
- permissions: permissions,
133
- proxy: proxy,
134
- record_har_omit_content: record_har_omit_content,
135
- record_har_path: record_har_path,
136
- record_video_dir: record_video_dir,
137
- record_video_size: record_video_size,
138
- storageState: storageState,
139
- timezoneId: timezoneId,
140
- userAgent: userAgent,
141
- viewport: viewport,
142
- }.compact
98
+ def launch_browser(pkg: nil, **options, &block)
99
+ params = options.dup
100
+ params[:pkg] = pkg
101
+ params.compact!
143
102
  prepare_browser_context_options(params)
144
103
 
145
104
  resp = @channel.send_message_to_server('launchBrowser', params)
@@ -39,6 +39,13 @@ module Playwright
39
39
  ::Playwright::ChannelOwners::Browser.from(@initializer['preLaunchedBrowser'])
40
40
  end
41
41
 
42
+ private def pre_connected_android_device
43
+ unless @initializer['preConnectedAndroidDevice']
44
+ raise 'Malformed endpoint. Did you use Android.launchServer method?'
45
+ end
46
+ ::Playwright::ChannelOwners::AndroidDevice.from(@initializer['preConnectedAndroidDevice'])
47
+ end
48
+
42
49
  private def parse_device_descriptor(descriptor)
43
50
  # This return value can be passed into Browser#new_context as it is.
44
51
  # ex:
@@ -4,7 +4,9 @@ module Playwright
4
4
  class InputFiles
5
5
  def initialize(context, files)
6
6
  @context = context
7
- if files.is_a?(Enumerable)
7
+ if files.is_a?(File)
8
+ @files = [files]
9
+ elsif files.is_a?(Enumerable)
8
10
  @files = files
9
11
  else
10
12
  @files = [files]
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.28.0'
4
+ VERSION = '1.28.1'
5
5
  COMPATIBLE_PLAYWRIGHT_VERSION = '1.28.1'
6
6
  end
@@ -49,7 +49,7 @@ module Playwright
49
49
  end
50
50
 
51
51
  # Wait for closed actually.
52
- future.value!
52
+ future.value!(2)
53
53
  end
54
54
 
55
55
  # Start `playwright-cli run-driver`
data/lib/playwright.rb CHANGED
@@ -51,6 +51,22 @@ module Playwright
51
51
  attr_reader :playwright, :browser
52
52
  end
53
53
 
54
+ class AndroidExecution
55
+ def initialize(connection, playwright, device = nil)
56
+ @connection = connection
57
+ @playwright = playwright
58
+ @device = device
59
+ end
60
+
61
+ def stop
62
+ @device&.close
63
+ @connection.stop
64
+ end
65
+
66
+ attr_reader :playwright, :device
67
+ end
68
+
69
+
54
70
  # Recommended to call this method with block.
55
71
  #
56
72
  # Playwright.create(...) do |playwright|
@@ -161,4 +177,43 @@ module Playwright
161
177
  execution
162
178
  end
163
179
  end
180
+
181
+ # Connects to Playwright server, launched by `npx playwright launch-server chromium` or `playwright.chromium.launchServer()`
182
+ #
183
+ # Playwright.connect_to_browser_server('ws://....') do |browser|
184
+ # page = browser.new_page
185
+ # ...
186
+ # end
187
+ #
188
+ # @experimental
189
+ module_function def connect_to_android_server(ws_endpoint, &block)
190
+ require 'playwright/web_socket_client'
191
+ require 'playwright/web_socket_transport'
192
+
193
+ transport = WebSocketTransport.new(ws_endpoint: ws_endpoint)
194
+ connection = Connection.new(transport)
195
+ connection.mark_as_remote
196
+ connection.async_run
197
+
198
+ execution =
199
+ begin
200
+ playwright = connection.initialize_playwright
201
+ android_device = playwright.send(:pre_connected_android_device)
202
+ android_device.should_close_connection_on_close!
203
+ AndroidExecution.new(connection, PlaywrightApi.wrap(playwright), PlaywrightApi.wrap(android_device))
204
+ rescue
205
+ connection.stop
206
+ raise
207
+ end
208
+
209
+ if block
210
+ begin
211
+ block.call(execution.device)
212
+ ensure
213
+ execution.stop
214
+ end
215
+ else
216
+ execution
217
+ end
218
+ end
164
219
  end
@@ -168,6 +168,11 @@ module Playwright
168
168
  raise NotImplementedError.new('web_views is not implemented yet.')
169
169
  end
170
170
 
171
+ # @nodoc
172
+ def should_close_connection_on_close!
173
+ wrap_impl(@impl.should_close_connection_on_close!)
174
+ end
175
+
171
176
  # @nodoc
172
177
  def tap_on(selector, duration: nil, timeout: nil)
173
178
  wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
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.28.0
4
+ version: 1.28.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-17 00:00:00.000000000 Z
11
+ date: 2022-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby