isomorfeus-puppetmaster 0.2.2 → 0.2.3

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: 269550731b8d7281a53e106e2bc4cc53b49e95a0e76a7133aac4c2b5f5588f9a
4
- data.tar.gz: d7f0c5efc32325a03b4bd30cf6c1c0603935a1c104233d7c2e8a037a465db148
3
+ metadata.gz: 4f93b2a8c272d241cdc8b2acbe45d8e9b894f2fd667699490474cd9489b00ff9
4
+ data.tar.gz: 02a64a1ccc84b206526ec90c855aea65191469287b6866d7b6058292dd821486
5
5
  SHA512:
6
- metadata.gz: ac398c1d1a32b7df39b4e081f8f120e61076f0708641f11b0d246cb7fe1293337e6c4b23510e913c256e5d669f1a1a0982bdedb9c8fafeed1e64c2e2cdab5634
7
- data.tar.gz: 92e2477578449cfce8ac2152834038cc4fe198bc03eee7b21994fa019c832edd4cc3143df33314097cb967253be25d759aa80cf335b1a28c0d432494d0b681b0
6
+ metadata.gz: bb93ec516a523403299a96b6cf961dafcca7e33153348fe5bde2a593f9a66f8a4a717520bd4cb701cbf4744aed16b2ec4e3e9785d5332b467115a9ef0b4c69ac
7
+ data.tar.gz: 54ce3d4966f83112ff5999c39c827210b072656bdaf3f9cf2bda8197f257316854a64263fc6d6314eddc3b3ed1028989d0e07f6da4a9aaf6728180211fc54cd2
data/README.md CHANGED
@@ -19,10 +19,10 @@ In Gemfile:
19
19
 
20
20
  Also requires the following npm modules with recommended versions:
21
21
 
22
- - puppeteer 1.13.0 - for the chromium driver
23
- - puppeteer-firefox 0.5.0 - for the firefox driver
24
- - jsdom 14.0.0 - for the jsdom driver
25
- - canvas 2.4.1 - for the jsdom driver
22
+ - [puppeteer 1.16.0](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
23
+ - [puppeteer-firefox 0.5.0](https://www.npmjs.com/package/puppeteer-firefox) - for the firefox driver
24
+ - [jsdom 14.0.0](https://github.com/jsdom/jsdom#readme) - for the jsdom driver
25
+ - [canvas 2.4.1](https://github.com/Automattic/node-canvas) - for the jsdom driver (optional)
26
26
 
27
27
  Simply install them in your projects root. Puppetmaster also depends on isomorfeus-speednode, which will be installed automatically.
28
28
  Speednode will pickup the node modules then from the projects root node_modules directory.
@@ -31,18 +31,29 @@ Speednode will pickup the node modules then from the projects root node_modules
31
31
 
32
32
  Puppetmaster provides these drivers:
33
33
  - chromium - a real browser, headless, fast
34
+ - chromium_wsl - as above but with options so it can execute within the Windows Linux WSL
34
35
  - chromium_debug - opens a chromium browser window with devtools enabled, useful for debugging tests
35
36
  - firefox - real firefox, running headless, not so fast
36
37
  - firefox_debug - opens a firefox browser window with devtools enabled, useful for debugging tests
37
38
  - jsdom - provides a dom implementation in javascript, can execute javascript in the document, super fast, headless, has certain limitations,
38
39
  especially because its not rendering anything (no element bounding box, etc.)
40
+ - 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)
39
41
 
40
- Selecting a driver, for example jsdom:
42
+ Chromium is the default driver. Selecting another driver, for example jsdom:
41
43
  ```ruby
42
44
  Isomorfeus::Puppetmaster.driver = :jsdom
43
45
  ```
44
- (chromium is the default driver)
45
46
 
47
+ Puppetmaster provides support for these rack servers:
48
+ - [agoo](https://github.com/ohler55/agoo)
49
+ - [falcon](https://github.com/socketry/falcon)
50
+ - [iodine](https://github.com/boazsegev/iodine)
51
+ - [puma](https://github.com/puma/puma)
52
+
53
+ Puma is the default rack server. To assign another rack server:
54
+ ```ruby
55
+ Isomorfeus::Puppetmaster.server = :agoo
56
+ ```
46
57
 
47
58
  Getting the app ready and running:
48
59
  1. Assign a rack app
@@ -76,7 +76,21 @@ module Isomorfeus
76
76
  start_of_code = compiled_ruby.index('*/') + 3
77
77
  compiled_ruby = compiled_ruby[start_of_code..-1]
78
78
  end
79
- javascript = <<~JAVASCRIPT
79
+ evaluate_script <<~JAVASCRIPT
80
+ (function(){
81
+ return #{compiled_ruby}
82
+ })()
83
+ JAVASCRIPT
84
+ end
85
+
86
+ def evaluate_with_opal(ruby_source = '', &block)
87
+ ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
88
+ compiled_ruby = compile_ruby_source(ruby_source)
89
+ if compiled_ruby.start_with?('/*')
90
+ start_of_code = compiled_ruby.index('*/') + 3
91
+ compiled_ruby = compiled_ruby[start_of_code..-1]
92
+ end
93
+ evaluate_script <<~JAVASCRIPT
80
94
  (function(){
81
95
  if (typeof Opal === "undefined") {
82
96
  #{Isomorfeus::Puppetmaster.opal_prelude}
@@ -84,7 +98,6 @@ module Isomorfeus
84
98
  return #{compiled_ruby}
85
99
  })()
86
100
  JAVASCRIPT
87
- evaluate_script(javascript)
88
101
  end
89
102
 
90
103
  def go_back
@@ -129,6 +142,12 @@ module Isomorfeus
129
142
  evaluate_ruby(ruby_source)
130
143
  end
131
144
 
145
+ def isomorphic_with_opal(ruby_source = '', &block)
146
+ ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
147
+ Isomorfeus::Puppetmaster.served_app.on_server(ruby_source)
148
+ evaluate_with_opal(ruby_source)
149
+ end
150
+
132
151
  def method_missing(name, *args)
133
152
  method_name = name.to_s
134
153
  if method_name.start_with?('find_by_')
@@ -37,6 +37,7 @@ module Isomorfeus
37
37
  def initialize(options = {})
38
38
  @app = options.delete(:app)
39
39
  @options = options.dup
40
+ @canvas = @options.delete(:canvas) { false }
40
41
  @ignore_https_errors = !!@options.delete(:ignore_https_errors)
41
42
  @max_width = @options.delete(:max_width) { VIEWPORT_MAX_WIDTH }
42
43
  @max_height = @options.delete(:max_height) { VIEWPORT_MAX_HEIGHT }
@@ -248,7 +249,7 @@ module Isomorfeus
248
249
 
249
250
  def jsdom_launch
250
251
  <<~JAVASCRIPT
251
- const canvas = require('canvas')
252
+ #{"const canvas = require('canvas');" if @canvas}
252
253
  const jsdom = require('jsdom');
253
254
  const Cookie = jsdom.toughCookie.Cookie;
254
255
  const MemoryCookieStore = jsdom.toughCookie.MemoryCookieStore;
@@ -2,6 +2,10 @@ Isomorfeus::Puppetmaster.register_driver(:chromium) do |app|
2
2
  Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: true, app: app)
3
3
  end
4
4
 
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
+
5
9
  Isomorfeus::Puppetmaster.register_driver(:chromium_debug) do |app|
6
10
  Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: false, devtools: true, app: app)
7
11
  end
@@ -17,3 +21,7 @@ end
17
21
  Isomorfeus::Puppetmaster.register_driver(:jsdom) do |app|
18
22
  Isomorfeus::Puppetmaster::Driver::Jsdom.new(app: app)
19
23
  end
24
+
25
+ Isomorfeus::Puppetmaster.register_driver(:jsdom_canvas) do |app|
26
+ Isomorfeus::Puppetmaster::Driver::Jsdom.new(app: app, canvas: true)
27
+ end
@@ -145,7 +145,21 @@ module Isomorfeus
145
145
  start_of_code = compiled_ruby.index('*/') + 3
146
146
  compiled_ruby = compiled_ruby[start_of_code..-1]
147
147
  end
148
- javascript = <<~JAVASCRIPT
148
+ evaluate_script <<~JAVASCRIPT
149
+ (function(){
150
+ return #{compiled_ruby}
151
+ })()
152
+ JAVASCRIPT
153
+ end
154
+
155
+ def evaluate_with_opal(ruby_source = '', &block)
156
+ ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
157
+ compiled_ruby = compile_ruby_source(ruby_source)
158
+ if compiled_ruby.start_with?('/*')
159
+ start_of_code = compiled_ruby.index('*/') + 3
160
+ compiled_ruby = compiled_ruby[start_of_code..-1]
161
+ end
162
+ evaluate_script <<~JAVASCRIPT
149
163
  (function(){
150
164
  if (typeof Opal === "undefined") {
151
165
  #{Isomorfeus::Puppetmaster.opal_prelude}
@@ -153,7 +167,6 @@ module Isomorfeus
153
167
  return #{compiled_ruby}
154
168
  })()
155
169
  JAVASCRIPT
156
- evaluate_script(javascript)
157
170
  end
158
171
 
159
172
  def get_attribute(attribute)
@@ -1,5 +1,6 @@
1
1
  Isomorfeus::Puppetmaster.register_server :agoo do |app, port, _host, **options|
2
2
  begin
3
+ require 'agoo/version'
3
4
  require 'rack/handler/agoo'
4
5
  rescue LoadError
5
6
  raise LoadError, "Unable to load 'agoo' as server."
@@ -11,8 +12,37 @@ Isomorfeus::Puppetmaster.register_server :agoo do |app, port, _host, **options|
11
12
  Rack::Handler::Agoo.run(app, { port: port }.merge(options)).join
12
13
  end
13
14
 
15
+ Isomorfeus::Puppetmaster.register_server :falcon do |app, port, host, **options|
16
+ begin
17
+ require 'falcon/version'
18
+ require 'rack/handler/falcon'
19
+ rescue LoadError
20
+ raise LoadError, "Unable to load 'falcon' as server."
21
+ end
22
+
23
+ events.log 'Puppetmaster starting Falcon...'
24
+ events.log "* Version #{Falcon::VERSION}"
25
+
26
+ Rack::Handler::Falcon.run(app, { Host: host, Port: port }.merge(options)).join
27
+ end
28
+
29
+ Isomorfeus::Puppetmaster.register_server :iodine do |app, port, _host, **options|
30
+ begin
31
+ require 'iodine/version'
32
+ require 'rack/handler/iodine'
33
+ rescue LoadError
34
+ raise LoadError, "Unable to load 'iodine' as server."
35
+ end
36
+
37
+ events.log 'Puppetmaster starting Iodine...'
38
+ events.log "* Version #{Iodine::VERSION}"
39
+
40
+ Rack::Handler::Iodine.run(app, { Host: host, Port: port }.merge(options)).join
41
+ end
42
+
14
43
  Isomorfeus::Puppetmaster.register_server :puma do |app, port, host, **options|
15
44
  begin
45
+ require 'puma/const'
16
46
  require 'rack/handler/puma'
17
47
  rescue LoadError
18
48
  raise LoadError, "Unable to load 'puma' as server."
@@ -1,3 +1,3 @@
1
1
  module Isomorfeus
2
- PUPPETMASTER_VERSION = '0.2.2'
2
+ PUPPETMASTER_VERSION = '0.2.3'
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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-11 00:00:00.000000000 Z
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: falcon
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.30.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.30.0
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: fastimage
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +164,20 @@ dependencies:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: iodine
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.7.31
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.7.31
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: irb
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -224,14 +252,14 @@ dependencies:
224
252
  name: puma
225
253
  requirement: !ruby/object:Gem::Requirement
226
254
  requirements:
227
- - - '='
255
+ - - "~>"
228
256
  - !ruby/object:Gem::Version
229
257
  version: 3.12.0
230
258
  type: :development
231
259
  prerelease: false
232
260
  version_requirements: !ruby/object:Gem::Requirement
233
261
  requirements:
234
- - - '='
262
+ - - "~>"
235
263
  - !ruby/object:Gem::Version
236
264
  version: 3.12.0
237
265
  - !ruby/object:Gem::Dependency