playwright-ruby-client 1.34.0 → 1.35.0

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: 64c373804c3cc418f35774036436563714c4e7a42ce87d9ce242d961814c28f9
4
- data.tar.gz: 3dccf880e4d4911279bbac84575f03872284c379fdcac468fa4e16940b51c352
3
+ metadata.gz: 3bd6b36250957e5968a5314944dc9327980d93e225a9aea86d3958268f8e089c
4
+ data.tar.gz: e787bb96692cb1d47b1f56d359d3ed63559f477993f1d14250398403a08359e9
5
5
  SHA512:
6
- metadata.gz: e911b7eac54e773e83c18efcc13562500e736b75fc259da2f63abed7bc31b716d86b568215c410245fd613a379a3c0fdb63a3a9d942b33042eaf14019829474b
7
- data.tar.gz: 47ce8a3dd0a37c79c4786f3d1b34ce99009ee3a572b1d88345d3ae6da767c81cc4f6f0bb9e14c93292dfe4e007f229dd37861a1e358544f787f1aa463792b1f0
6
+ metadata.gz: 5a9e9da2b00c688fb256a770cacb32e9762ccd1df1965f30653d30c62810e6c3fae54c9838006461d02427520a071bec13000c754c4790fe85f1f9086592436c
7
+ data.tar.gz: e9e74a9558c418ce736ccbc0aa61ba6cac55b484ba961255de8dc8e22bdbf67db90f3c00de470b3cd94846c9fb5b76afcf3773f2680e9f8ba5d317f2cf318474
@@ -450,6 +450,7 @@ def screenshot(
450
450
  animations: nil,
451
451
  caret: nil,
452
452
  mask: nil,
453
+ maskColor: nil,
453
454
  omitBackground: nil,
454
455
  path: nil,
455
456
  quality: nil,
@@ -1040,6 +1040,7 @@ def screenshot(
1040
1040
  animations: nil,
1041
1041
  caret: nil,
1042
1042
  mask: nil,
1043
+ maskColor: nil,
1043
1044
  omitBackground: nil,
1044
1045
  path: nil,
1045
1046
  quality: nil,
@@ -1286,6 +1286,7 @@ def screenshot(
1286
1286
  clip: nil,
1287
1287
  fullPage: nil,
1288
1288
  mask: nil,
1289
+ maskColor: nil,
1289
1290
  omitBackground: nil,
1290
1291
  path: nil,
1291
1292
  quality: nil,
@@ -14,14 +14,14 @@ This all-in-one architecture is reasonable for browser automation in our own com
14
14
 
15
15
  However we may have trouble with bringing Playwright into:
16
16
 
17
- * Docker
18
- * Alpine Linux
19
- * Serverless computing
20
- * AWS Lambda
21
- * Google Cloud Functions
22
- * PaaS
23
- * Heroku
24
- * Google App Engine
17
+ - Docker
18
+ - Alpine Linux
19
+ - Serverless computing
20
+ - AWS Lambda
21
+ - Google Cloud Functions
22
+ - PaaS
23
+ - Heroku
24
+ - Google App Engine
25
25
 
26
26
  This article introduces a way to separate environments into client (for executing Playwright script) and server (for working with browsers). The main use-case assumes Docker (using Alpine Linux), however the way can be applied also into other use-cases.
27
27
 
@@ -39,16 +39,22 @@ Playwright provides two kind of methods to share the browser environments for cl
39
39
 
40
40
  When you want to share only one browser environment, Browser server is suitable. This feature is officially supported in Playwright.
41
41
 
42
- * Server can be launched with [BrowserType#launchServer](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-server) instead of `BrowserType#launch`.
43
- * Client can connect to server with [BrowserType#connect](https://playwright.dev/docs/api/class-browsertype#browser-type-connect). In playwright-ruby-client, `BrowserType#connect` and not implemented yet and use `Playwright#connect_to_browser_server()` instead.
42
+ - Server can be launched with [BrowserType#launchServer](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-server) instead of `BrowserType#launch`.
43
+ - Client can connect to server with [BrowserType#connect](https://playwright.dev/docs/api/class-browsertype#browser-type-connect). In playwright-ruby-client, `BrowserType#connect` and not implemented yet and use `Playwright#connect_to_browser_server()` instead.
44
44
 
45
45
  Another method is sharing all browser environment. This method is very simple, but not an official feature, and can be changed in future.
46
46
 
47
- * Server can be launched with `playwright run-server` (CLI command).
48
- * Client can connect to server with `Playwright.connect_to_playwright_server` instead of `Playwright.create`
47
+ - Server can be launched with `playwright run-server` (CLI command).
48
+ - Client can connect to server with `Playwright.connect_to_playwright_server` instead of `Playwright.create`
49
49
 
50
50
  ## Playwright server/client
51
51
 
52
+ :::caution
53
+
54
+ This method is no longer supported on Playwright driver >= 1.35. See [this issue](https://github.com/YusukeIwaki/playwright-ruby-client/issues/254) for detail, and use Browser server/client method instead.
55
+
56
+ :::
57
+
52
58
  ### Client code
53
59
 
54
60
  Many example uses `Playwright#create`, which internally uses Pipe (stdin/stdout) transport for Playwright-protocol messaging. Instead, **just use `Playwright#connect_to_playwright_server(endpoint)`** for WebSocket transport.
@@ -74,10 +80,10 @@ With the [official Docker image](https://hub.docker.com/_/microsoft-playwright)
74
80
  If custom Docker image is preferred, build it as follows:
75
81
 
76
82
  ```Dockerfile
77
- FROM mcr.microsoft.com/playwright:focal
83
+ FROM mcr.microsoft.com/playwright
78
84
 
79
85
  WORKDIR /root
80
- RUN npm install playwright@1.12.3 && ./node_modules/.bin/playwright install
86
+ RUN npm install playwright && ./node_modules/.bin/playwright install
81
87
 
82
88
  ENV PORT 8888
83
89
  CMD ["./node_modules/.bin/playwright", "run-server", "--port", "$PORT", "--path", "/ws"]
@@ -105,15 +111,17 @@ For instant use, `npx playwright launch-server --browser chromium` generates a W
105
111
  More customization can be done by implementing JavaScript server like below:
106
112
 
107
113
  ```js
108
- const playwright = require('playwright')
114
+ const playwright = require("playwright");
109
115
 
110
116
  option = {
111
- channel: 'chrome-canary',
117
+ channel: "chrome-canary",
112
118
  headless: false,
113
119
  port: 8080,
114
- wsPath: 'ws',
115
- }
116
- playwright.chromium.launchServer(option).then((server) => { console.log(server.wsEndpoint()) })
120
+ wsPath: "ws",
121
+ };
122
+ playwright.chromium.launchServer(option).then((server) => {
123
+ console.log(server.wsEndpoint());
124
+ });
117
125
  ```
118
126
 
119
127
  `port` and `wsPath` would be useful for generating static WebSocket endpoint URL.
@@ -132,13 +140,12 @@ Just set an environment variable `DEBUG=1`.
132
140
  DEBUG=1 bundle exec ruby some-automation-with-playwright.rb
133
141
  ```
134
142
 
135
-
136
143
  ### Enable verbose logging on server
137
144
 
138
145
  Just set an environment variable `DEBUG=pw:*` or `DEBUG=pw:server`
139
146
 
140
147
  ```
141
- DEBUG=pw:* npx playwright run-server --port 8888 --path /ws
148
+ DEBUG=pw:* npx playwright launch-server --browser chromium
142
149
  ```
143
150
 
144
151
  See [the official documentation](https://playwright.dev/docs/debug/#verbose-api-logs) for details.
@@ -121,7 +121,7 @@ module Playwright
121
121
  end
122
122
 
123
123
  unless handled
124
- route.send(:async_continue_route).rescue do |err|
124
+ route.send(:async_continue_route, internal: true).rescue do |err|
125
125
  puts err, err.backtrace
126
126
  end
127
127
  end
@@ -296,6 +296,7 @@ module Playwright
296
296
  animations: nil,
297
297
  caret: nil,
298
298
  mask: nil,
299
+ maskColor: nil,
299
300
  omitBackground: nil,
300
301
  path: nil,
301
302
  quality: nil,
@@ -306,6 +307,7 @@ module Playwright
306
307
  params = {
307
308
  animations: animations,
308
309
  caret: caret,
310
+ maskColor: maskColor,
309
311
  omitBackground: omitBackground,
310
312
  path: path,
311
313
  quality: quality,
@@ -438,6 +438,7 @@ module Playwright
438
438
  clip: nil,
439
439
  fullPage: nil,
440
440
  mask: nil,
441
+ maskColor: nil,
441
442
  omitBackground: nil,
442
443
  path: nil,
443
444
  quality: nil,
@@ -450,6 +451,7 @@ module Playwright
450
451
  quality: quality,
451
452
  fullPage: fullPage,
452
453
  clip: clip,
454
+ maskColor: maskColor,
453
455
  omitBackground: omitBackground,
454
456
  animations: animations,
455
457
  caret: caret,
@@ -484,7 +486,7 @@ module Playwright
484
486
  end
485
487
  nil
486
488
  rescue => err
487
- raise unless safe_close_error?(err)
489
+ raise if !safe_close_error?(err) || !runBeforeUnload
488
490
  end
489
491
 
490
492
  def closed?
@@ -35,7 +35,6 @@ module Playwright
35
35
  unless @initializer['preLaunchedBrowser']
36
36
  raise 'Malformed endpoint. Did you use launchServer method?'
37
37
  end
38
-
39
38
  ::Playwright::ChannelOwners::Browser.from(@initializer['preLaunchedBrowser'])
40
39
  end
41
40
 
@@ -137,7 +137,7 @@ module Playwright
137
137
  end
138
138
  end
139
139
 
140
- private def async_continue_route
140
+ private def async_continue_route(internal: false)
141
141
  post_data_for_wire =
142
142
  if (post_data_from_overrides = request.send(:fallback_overrides)[:postData])
143
143
  post_data_for_wire = Base64.strict_encode64(post_data_from_overrides)
@@ -155,6 +155,7 @@ module Playwright
155
155
  params[:postData] = post_data_for_wire
156
156
  end
157
157
  params[:requestUrl] = request.send(:internal_url)
158
+ params[:isFallback] = internal
158
159
 
159
160
  # TODO _race_with_page_close
160
161
  @channel.async_send_message_to_server('continue', params)
@@ -362,6 +362,7 @@ module Playwright
362
362
  animations: nil,
363
363
  caret: nil,
364
364
  mask: nil,
365
+ maskColor: nil,
365
366
  omitBackground: nil,
366
367
  path: nil,
367
368
  quality: nil,
@@ -374,6 +375,7 @@ module Playwright
374
375
  animations: animations,
375
376
  caret: caret,
376
377
  mask: mask,
378
+ maskColor: maskColor,
377
379
  omitBackground: omitBackground,
378
380
  path: path,
379
381
  quality: quality,
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '1.34.0'
5
- COMPATIBLE_PLAYWRIGHT_VERSION = '1.34.3'
4
+ VERSION = '1.35.0'
5
+ COMPATIBLE_PLAYWRIGHT_VERSION = '1.35.0'
6
6
  end
data/lib/playwright.rb CHANGED
@@ -159,8 +159,9 @@ module Playwright
159
159
  begin
160
160
  playwright = connection.initialize_playwright
161
161
  browser = playwright.send(:pre_launched_browser)
162
+ browser.send(:update_browser_type, playwright.chromium) # Just workaround for nil reference error.
162
163
  browser.browser_type.send(:did_launch_browser, browser)
163
- browser.should_close_connection_on_close!
164
+ browser.send(:should_close_connection_on_close!)
164
165
  Execution.new(connection, PlaywrightApi.wrap(playwright), PlaywrightApi.wrap(browser))
165
166
  rescue
166
167
  connection.stop
@@ -374,13 +374,14 @@ module Playwright
374
374
  animations: nil,
375
375
  caret: nil,
376
376
  mask: nil,
377
+ maskColor: nil,
377
378
  omitBackground: nil,
378
379
  path: nil,
379
380
  quality: nil,
380
381
  scale: nil,
381
382
  timeout: nil,
382
383
  type: nil)
383
- wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
384
+ wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), maskColor: unwrap_impl(maskColor), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
384
385
  end
385
386
 
386
387
  #
@@ -1038,13 +1038,13 @@ module Playwright
1038
1038
  end
1039
1039
 
1040
1040
  # @nodoc
1041
- def highlight(selector)
1042
- wrap_impl(@impl.highlight(unwrap_impl(selector)))
1041
+ def detached=(req)
1042
+ wrap_impl(@impl.detached=(unwrap_impl(req)))
1043
1043
  end
1044
1044
 
1045
1045
  # @nodoc
1046
- def detached=(req)
1047
- wrap_impl(@impl.detached=(unwrap_impl(req)))
1046
+ def highlight(selector)
1047
+ wrap_impl(@impl.highlight(unwrap_impl(selector)))
1048
1048
  end
1049
1049
 
1050
1050
  # -- inherited from EventEmitter --
@@ -781,7 +781,7 @@ module Playwright
781
781
  # **Usage**
782
782
  #
783
783
  # ```python sync
784
- # banana = page.get_by_role("listitem").last()
784
+ # banana = page.get_by_role("listitem").last
785
785
  # ```
786
786
  def last
787
787
  wrap_impl(@impl.last)
@@ -898,13 +898,14 @@ module Playwright
898
898
  animations: nil,
899
899
  caret: nil,
900
900
  mask: nil,
901
+ maskColor: nil,
901
902
  omitBackground: nil,
902
903
  path: nil,
903
904
  quality: nil,
904
905
  scale: nil,
905
906
  timeout: nil,
906
907
  type: nil)
907
- wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
908
+ wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), maskColor: unwrap_impl(maskColor), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
908
909
  end
909
910
 
910
911
  #
@@ -1154,13 +1154,14 @@ module Playwright
1154
1154
  clip: nil,
1155
1155
  fullPage: nil,
1156
1156
  mask: nil,
1157
+ maskColor: nil,
1157
1158
  omitBackground: nil,
1158
1159
  path: nil,
1159
1160
  quality: nil,
1160
1161
  scale: nil,
1161
1162
  timeout: nil,
1162
1163
  type: nil)
1163
- wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), clip: unwrap_impl(clip), fullPage: unwrap_impl(fullPage), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
1164
+ wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), clip: unwrap_impl(clip), fullPage: unwrap_impl(fullPage), mask: unwrap_impl(mask), maskColor: unwrap_impl(maskColor), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
1164
1165
  end
1165
1166
 
1166
1167
  #
@@ -83,7 +83,7 @@ module Playwright
83
83
  #
84
84
  # >>> browser = playwright.chromium.launch()
85
85
  # >>> page = browser.new_page()
86
- # >>> page.goto("http://whatsmyuseragent.org/")
86
+ # >>> page.goto("https://playwright.dev/")
87
87
  # >>> page.screenshot(path="example.png")
88
88
  # >>> browser.close()
89
89
  #
@@ -118,13 +118,13 @@ module Playwright
118
118
  end
119
119
 
120
120
  # @nodoc
121
- def ok?
122
- wrap_impl(@impl.ok?)
121
+ def from_service_worker?
122
+ wrap_impl(@impl.from_service_worker?)
123
123
  end
124
124
 
125
125
  # @nodoc
126
- def from_service_worker?
127
- wrap_impl(@impl.from_service_worker?)
126
+ def ok?
127
+ wrap_impl(@impl.ok?)
128
128
  end
129
129
 
130
130
  # -- inherited from EventEmitter --
data/sig/playwright.rbs CHANGED
@@ -118,7 +118,7 @@ module Playwright
118
118
  def press: (String key, ?delay: Float, ?noWaitAfter: bool, ?timeout: Float) -> void
119
119
  def query_selector: (String selector) -> (nil | ElementHandle)
120
120
  def query_selector_all: (String selector) -> Array[untyped]
121
- def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?mask: Array[untyped], ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
121
+ def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?mask: Array[untyped], ?maskColor: String, ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
122
122
  def scroll_into_view_if_needed: (?timeout: Float) -> void
123
123
  def select_option: (?element: (ElementHandle | Array[untyped]), ?index: (Integer | Array[untyped]), ?value: (String | Array[untyped]), ?label: (String | Array[untyped]), ?force: bool, ?noWaitAfter: bool, ?timeout: Float) -> Array[untyped]
124
124
  def select_text: (?force: bool, ?timeout: Float) -> void
@@ -306,7 +306,7 @@ module Playwright
306
306
  def reload: (?timeout: Float, ?waitUntil: ("load" | "domcontentloaded" | "networkidle" | "commit")) -> (nil | Response)
307
307
  def route: ((String | Regexp | function) url, function handler, ?times: Integer) -> void
308
308
  def route_from_har: ((String | File) har, ?notFound: ("abort" | "fallback"), ?update: bool, ?updateContent: ("embed" | "attach"), ?updateMode: ("full" | "minimal"), ?url: (String | Regexp)) -> void
309
- def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?clip: Hash[untyped, untyped], ?fullPage: bool, ?mask: Array[untyped], ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
309
+ def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?clip: Hash[untyped, untyped], ?fullPage: bool, ?mask: Array[untyped], ?maskColor: String, ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
310
310
  def select_option: (String selector, ?element: (ElementHandle | Array[untyped]), ?index: (Integer | Array[untyped]), ?value: (String | Array[untyped]), ?label: (String | Array[untyped]), ?force: bool, ?noWaitAfter: bool, ?strict: bool, ?timeout: Float) -> Array[untyped]
311
311
  def set_checked: (String selector, bool checked, ?force: bool, ?noWaitAfter: bool, ?position: Hash[untyped, untyped], ?strict: bool, ?timeout: Float, ?trial: bool) -> void
312
312
  def set_content: (String html, ?timeout: Float, ?waitUntil: ("load" | "domcontentloaded" | "networkidle" | "commit")) -> void
@@ -483,7 +483,7 @@ module Playwright
483
483
  def or: (Locator locator) -> Locator
484
484
  def page: -> Page
485
485
  def press: (String key, ?delay: Float, ?noWaitAfter: bool, ?timeout: Float) -> void
486
- def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?mask: Array[untyped], ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
486
+ def screenshot: (?animations: ("disabled" | "allow"), ?caret: ("hide" | "initial"), ?mask: Array[untyped], ?maskColor: String, ?omitBackground: bool, ?path: (String | File), ?quality: Integer, ?scale: ("css" | "device"), ?timeout: Float, ?type: ("png" | "jpeg")) -> String
487
487
  def scroll_into_view_if_needed: (?timeout: Float) -> void
488
488
  def select_option: (?element: (ElementHandle | Array[untyped]), ?index: (Integer | Array[untyped]), ?value: (String | Array[untyped]), ?label: (String | Array[untyped]), ?force: bool, ?noWaitAfter: bool, ?timeout: Float) -> Array[untyped]
489
489
  def select_text: (?force: bool, ?timeout: Float) -> void
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.34.0
4
+ version: 1.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-29 00:00:00.000000000 Z
11
+ date: 2023-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -401,5 +401,5 @@ requirements: []
401
401
  rubygems_version: 3.3.26
402
402
  signing_key:
403
403
  specification_version: 4
404
- summary: The Ruby binding of playwright driver 1.34.3
404
+ summary: The Ruby binding of playwright driver 1.35.0
405
405
  test_files: []