isomorfeus-puppetmaster 0.3.5 → 0.4.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: b561df47e49a821a455d0034483297f2ef7623ba837dc61cca99bd5b3dd033d6
4
- data.tar.gz: 409d3e25bb92e5686ec76ec91dd415ef7caedb8a90042c161721755d565ab35c
3
+ metadata.gz: 2d453a12b9cc8f801e1e81fdda6e615d7d256253eec19b60c7c969c8bf08bd72
4
+ data.tar.gz: cbef053148c753b2b03c6b15e1bb815af51dfdc7821a10d422c803862ac57dcd
5
5
  SHA512:
6
- metadata.gz: 950ecc09d8988b7355ee5e1f61b4d30c6ac390226c43415a0267d8c84e575c2fa93b08612e213a7945235228a1220c8b81d02fc22d2e173ad7ca74d6d7b8160e
7
- data.tar.gz: 77cecab7b46eadef0f9692cf61bd02b67039896b1de1a597c23a671b6f4eed4d31f5c66fab2b41aeb2fff3f04be18041b09343bf64bb771b3251b694dd46105c
6
+ metadata.gz: 42dd469ad600d330aa8904a31d638c8915bd6f49aba4990ff76c3bc92886d662f08d483128be27ffc6fdb4cf136a552b6f9a648c4609c1f4e50a0a61fa664ca8
7
+ data.tar.gz: 5dc01c153258ca15823abaa9ad535869cebc5aced2b5e5af6c1346b64b73a4666b68969320e06a589ce9b0064e8b1889657da5742e3f39699d2505798a7865e3
data/README.md CHANGED
@@ -19,9 +19,7 @@ In Gemfile:
19
19
 
20
20
  Also requires the following npm modules with recommended versions:
21
21
 
22
- - [puppeteer 2.0.0](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
23
- - [jsdom 15.2.1](https://github.com/jsdom/jsdom#readme) - for the jsdom driver
24
- - [canvas 2.6.0](https://github.com/Automattic/node-canvas) - for the jsdom driver (optional)
22
+ - [puppeteer 9.1.x](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
25
23
 
26
24
  Simply install them in your projects root. Puppetmaster also depends on isomorfeus-speednode, which will be installed automatically.
27
25
  Speednode will pickup the node modules then from the projects root node_modules directory.
@@ -30,15 +28,11 @@ Speednode will pickup the node modules then from the projects root node_modules
30
28
 
31
29
  Puppetmaster provides these drivers:
32
30
  - chromium - a real browser, headless, fast
33
- - chromium_wsl - as above but with options so it can execute within the Windows Linux WSL
34
31
  - chromium_debug - opens a chromium browser window with devtools enabled, useful for debugging tests
35
- - jsdom - provides a dom implementation in javascript, can execute javascript in the document, super fast, headless, has certain limitations,
36
- especially because its not rendering anything (no element bounding box, etc.)
37
- - jsdom_canvas - jsdom driver with additional support for 'canvas', requires certain libraries to be installed, see: [canvas at github](https://github.com/Automattic/node-canvas)
38
32
 
39
- Chromium is the default driver. Selecting another driver, for example jsdom:
33
+ Chromium is the default driver. Selecting another driver, for example firefox:
40
34
  ```ruby
41
- Isomorfeus::Puppetmaster.driver = :jsdom
35
+ Isomorfeus::Puppetmaster.driver = :chromium_debug
42
36
  ```
43
37
 
44
38
  Puppetmaster provides support for these rack servers:
@@ -15,7 +15,6 @@ module Isomorfeus
15
15
  clear_cookies
16
16
  clear_extra_headers
17
17
  clear_url_blacklist
18
- click
19
18
  close
20
19
  cookies
21
20
  console
@@ -34,15 +33,11 @@ module Isomorfeus
34
33
  html
35
34
  open_new_document
36
35
  remove_cookie
37
- render_base64
38
36
  reset_user_agent
39
37
  right_click
40
- save_pdf
41
- save_screenshot
42
38
  scroll_by
43
39
  scroll_to
44
40
  set_authentication_credentials
45
- set_cookie
46
41
  set_extra_headers
47
42
  set_url_blacklist
48
43
  set_user_agent
@@ -56,6 +51,14 @@ module Isomorfeus
56
51
  wait_for_xpath
57
52
  ]
58
53
 
54
+ document_forward_kwargs %i[
55
+ click
56
+ render_base64
57
+ save_pdf
58
+ save_screenshot
59
+ set_cookie
60
+ ]
61
+
59
62
  attr_reader :handle, :response
60
63
 
61
64
  def initialize(driver, handle, response)
@@ -175,11 +178,11 @@ module Isomorfeus
175
178
  alias_method :visit, :goto
176
179
 
177
180
  def has_content?(content, **options)
178
- body.has_content?(content, options)
181
+ body.has_content?(content, **options)
179
182
  end
180
183
 
181
184
  def has_css?(selector, **options)
182
- body.has_css?(selector, options)
185
+ body.has_css?(selector, **options)
183
186
  end
184
187
 
185
188
  def has_current_path?(other_path)
@@ -187,11 +190,11 @@ module Isomorfeus
187
190
  end
188
191
 
189
192
  def has_text?(text, **options)
190
- body.has_text?(text, options)
193
+ body.has_text?(text, **options)
191
194
  end
192
195
 
193
196
  def has_xpath?(query, **options)
194
- body.has_xpath?(query, options)
197
+ body.has_xpath?(query, **options)
195
198
  end
196
199
 
197
200
  def isomorphic(ruby_source = '', &block)
@@ -260,7 +263,7 @@ module Isomorfeus
260
263
  protected
261
264
 
262
265
  def compile_ruby_source(source_code)
263
- # TODO maybe use compile server
266
+ # TODO maybe use compile server, which can cache code
264
267
  Opal.compile(source_code, parse_comments: false)
265
268
  end
266
269
  end
@@ -36,10 +36,11 @@ module Isomorfeus
36
36
 
37
37
  def initialize(options = {})
38
38
  # https://pptr.dev/#?product=Puppeteer&version=v1.12.2&show=api-puppeteerlaunchoptions
39
- # init ExecJs context
39
+ # init ExecJS context
40
40
  @app = options.delete(:app)
41
41
  @options = options.dup
42
42
  @browser_type = @options.delete(:browser_type) { :chromium }
43
+ @options[:product] = "'#{@browser_type}'" unless @options.key?(:product)
43
44
  @max_width = @options.delete(:max_width) { VIEWPORT_MAX_WIDTH }
44
45
  @max_height = @options.delete(:max_height) { VIEWPORT_MAX_HEIGHT }
45
46
  @width = @options.delete(:width) { VIEWPORT_DEFAULT_WIDTH > @max_width ? @max_width : VIEWPORT_DEFAULT_WIDTH }
@@ -218,7 +219,7 @@ module Isomorfeus
218
219
  get_result
219
220
  end
220
221
 
221
- def chromium_require
222
+ def default_require
222
223
  <<~JAVASCRIPT
223
224
  const MasterPuppeteer = require('puppeteer');
224
225
  JAVASCRIPT
@@ -277,8 +278,8 @@ module Isomorfeus
277
278
  def puppeteer_launch
278
279
  # todo target_handle, puppeteer save path
279
280
  puppeteer_require = case @browser_type
280
- when :chrome then chromium_require
281
- when :chromium then chromium_require
281
+ when :chrome then default_require
282
+ when :chromium then default_require
282
283
  else
283
284
  raise "Browser type #{@browser_type} not supported!"
284
285
  end
@@ -1,11 +1,9 @@
1
+ require 'tty-which'
2
+
1
3
  Isomorfeus::Puppetmaster.register_driver(:chromium) do |app|
2
4
  Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: true, app: app)
3
5
  end
4
6
 
5
- Isomorfeus::Puppetmaster.register_driver(:chromium_wsl) do |app|
6
- Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: true, app: app, args: ['--no-sandbox'])
7
- end
8
-
9
7
  Isomorfeus::Puppetmaster.register_driver(:chromium_debug) do |app|
10
8
  Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: false, devtools: true, app: app)
11
9
  end
@@ -10,6 +10,14 @@ module Isomorfeus
10
10
  end
11
11
  end
12
12
 
13
+ base.define_singleton_method(:document_forward_kwargs) do |methods|
14
+ methods.each do |method|
15
+ define_method(method) do |*args, **kwargs, &block|
16
+ @driver.send("document_#{method}", self, *args, **kwargs, &block)
17
+ end
18
+ end
19
+ end
20
+
13
21
  base.define_singleton_method(:frame_forward) do |methods|
14
22
  methods.each do |method|
15
23
  define_method(method) do |*args|
@@ -1,3 +1,3 @@
1
1
  module Isomorfeus
2
- PUPPETMASTER_VERSION = '0.3.5'
2
+ PUPPETMASTER_VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-puppetmaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-26 00:00:00.000000000 Z
11
+ date: 2021-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.11
33
+ version: 0.3.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.11
40
+ version: 0.3.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: method_source
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 3.10.1
61
+ version: 3.11.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 3.10.1
68
+ version: 3.11.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: opal
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: unparser
112
+ name: tty-which
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,19 +123,19 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: agoo
126
+ name: unparser
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 2.11.7
132
- type: :development
131
+ version: '0'
132
+ type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: 2.11.7
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: chunky_png
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.30.0
159
+ version: 0.38.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.30.0
166
+ version: 0.38.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: fastimage
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -178,20 +178,6 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: iodine
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: 0.7.38
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: 0.7.38
195
181
  - !ruby/object:Gem::Dependency
196
182
  name: irb
197
183
  requirement: !ruby/object:Gem::Requirement
@@ -212,28 +198,28 @@ dependencies:
212
198
  requirements:
213
199
  - - "~>"
214
200
  - !ruby/object:Gem::Version
215
- version: '2.0'
201
+ version: '2.5'
216
202
  type: :development
217
203
  prerelease: false
218
204
  version_requirements: !ruby/object:Gem::Requirement
219
205
  requirements:
220
206
  - - "~>"
221
207
  - !ruby/object:Gem::Version
222
- version: '2.0'
208
+ version: '2.5'
223
209
  - !ruby/object:Gem::Dependency
224
210
  name: nokogiri
225
211
  requirement: !ruby/object:Gem::Requirement
226
212
  requirements:
227
213
  - - "~>"
228
214
  - !ruby/object:Gem::Version
229
- version: 1.10.1
215
+ version: 1.11.0
230
216
  type: :development
231
217
  prerelease: false
232
218
  version_requirements: !ruby/object:Gem::Requirement
233
219
  requirements:
234
220
  - - "~>"
235
221
  - !ruby/object:Gem::Version
236
- version: 1.10.1
222
+ version: 1.11.0
237
223
  - !ruby/object:Gem::Dependency
238
224
  name: os
239
225
  requirement: !ruby/object:Gem::Requirement
@@ -254,28 +240,28 @@ dependencies:
254
240
  requirements:
255
241
  - - ">="
256
242
  - !ruby/object:Gem::Version
257
- version: 1.3.3
243
+ version: 2.4.0
258
244
  type: :development
259
245
  prerelease: false
260
246
  version_requirements: !ruby/object:Gem::Requirement
261
247
  requirements:
262
248
  - - ">="
263
249
  - !ruby/object:Gem::Version
264
- version: 1.3.3
250
+ version: 2.4.0
265
251
  - !ruby/object:Gem::Dependency
266
252
  name: puma
267
253
  requirement: !ruby/object:Gem::Requirement
268
254
  requirements:
269
255
  - - "~>"
270
256
  - !ruby/object:Gem::Version
271
- version: 4.3.1
257
+ version: 5.3.0
272
258
  type: :development
273
259
  prerelease: false
274
260
  version_requirements: !ruby/object:Gem::Requirement
275
261
  requirements:
276
262
  - - "~>"
277
263
  - !ruby/object:Gem::Version
278
- version: 4.3.1
264
+ version: 5.3.0
279
265
  - !ruby/object:Gem::Dependency
280
266
  name: rake
281
267
  requirement: !ruby/object:Gem::Requirement
@@ -310,14 +296,14 @@ dependencies:
310
296
  requirements:
311
297
  - - "~>"
312
298
  - !ruby/object:Gem::Version
313
- version: '2.0'
299
+ version: 2.1.0
314
300
  type: :development
315
301
  prerelease: false
316
302
  version_requirements: !ruby/object:Gem::Requirement
317
303
  requirements:
318
304
  - - "~>"
319
305
  - !ruby/object:Gem::Version
320
- version: '2.0'
306
+ version: 2.1.0
321
307
  description: Acceptance testing for isomorfeus.
322
308
  email: jan@kursator.de
323
309
  executables: []
@@ -372,7 +358,7 @@ licenses:
372
358
  - MIT
373
359
  metadata:
374
360
  github_repo: ssh://github.com/isomorfeus/gems
375
- post_install_message:
361
+ post_install_message:
376
362
  rdoc_options: []
377
363
  require_paths:
378
364
  - lib
@@ -387,8 +373,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
387
373
  - !ruby/object:Gem::Version
388
374
  version: '0'
389
375
  requirements: []
390
- rubygems_version: 3.0.6
391
- signing_key:
376
+ rubygems_version: 3.2.15
377
+ signing_key:
392
378
  specification_version: 4
393
379
  summary: Acceptance testing for isomorfeus.
394
380
  test_files: []