poltergeist 1.16.0 → 1.17.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
- SHA1:
3
- metadata.gz: 6638e15d99597aff8640e53f7664ccbe63aa0767
4
- data.tar.gz: 68af8a941ebdde61b19c314de194237f31c1f9c9
2
+ SHA256:
3
+ metadata.gz: 06e484be00352d4b5c8134794b51783cd4358f6c8888ae35a4a0b396e33dd023
4
+ data.tar.gz: 1dd2652dac23268d7ef3de4d30f0222e9c720491f1a3d4b83a37dc7aa0b07982
5
5
  SHA512:
6
- metadata.gz: ac7e76188f1052eccd3f7becd4af299bd3b467ad20480edf79f8c6ce22ddba8bd44cee05a717a3d5320ff30104cf64a18fe606f97badcd1a7dca63d1814b401c
7
- data.tar.gz: e7938e73c8e55cebd9ad804cc54d4c865cc4ef0eda0af576966ce14a2c53ade5a5dff6ef204451549668f95c10178405ea5a3cde180636efc23c4a2fa7f1b134
6
+ metadata.gz: aa6b9d400580c3b99fe73523f330a1a222c30dd2679c376bbdf4a722e966dfef8367983657c68868ef67b0650928109881d7b3d4fb0dbdacc71aca8ab5f6e43f
7
+ data.tar.gz: feb9e85896493c42f85332cdae4ad2ac570489069b7fefc9ec9c3d40efb4db94fbfe185f23163bf5512113fdeefeab67386ee238c32ff0082b951a50628ff39a
data/README.md CHANGED
@@ -9,7 +9,7 @@ provided by [PhantomJS](http://phantomjs.org/).
9
9
  **If you're viewing this at https://github.com/teampoltergeist/poltergeist,
10
10
  you're reading the documentation for the master branch.
11
11
  [View documentation for the latest release
12
- (1.16.0).](https://github.com/teampoltergeist/poltergeist/tree/v1.16.0)**
12
+ (1.17.0).](https://github.com/teampoltergeist/poltergeist/tree/v1.17.0)**
13
13
 
14
14
  ## Getting help ##
15
15
 
@@ -80,13 +80,18 @@ guide](http://phantomjs.org/build.html).)
80
80
 
81
81
  ## Compatibility ##
82
82
 
83
- Poltergeist runs on MRI 1.9, JRuby 1.9 and Rubinius 1.9. Poltergeist
83
+ Poltergeist runs on MRI 1.9+, JRuby 1.9+ and Rubinius 1.9+. Poltergeist
84
84
  and PhantomJS are currently supported on Mac OS X, Linux, and Windows
85
85
  platforms.
86
86
 
87
87
  Ruby 1.8 is no longer supported. The last release to support Ruby 1.8
88
88
  was 1.0.2, so you should use that if you still need Ruby 1.8 support.
89
89
 
90
+ PhantomJS does not support ES6 features at the time of writing this
91
+ document. Setting `js_errors` to `true` can help determine if failing
92
+ tests require Polyfills, although a bug in PhantomJS can cause silent
93
+ failures if using ES6 features like `let`, `const`, etc.
94
+
90
95
  ## Running on a CI ##
91
96
 
92
97
  There are no special steps to take. You don't need Xvfb or any running X
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if RUBY_VERSION < "1.9.2"
2
4
  raise "This version of Capybara/Poltergeist does not support Ruby versions " \
3
5
  "less than 1.9.2."
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "capybara/poltergeist/errors"
2
4
  require "capybara/poltergeist/command"
3
5
  require 'json'
@@ -11,6 +13,7 @@ module Capybara::Poltergeist
11
13
  'Poltergeist.InvalidSelector' => InvalidSelector,
12
14
  'Poltergeist.StatusFailError' => StatusFailError,
13
15
  'Poltergeist.NoSuchWindowError' => NoSuchWindowError,
16
+ 'Poltergeist.ScriptTimeoutError' => ScriptTimeoutError,
14
17
  'Poltergeist.UnsupportedFeature' => UnsupportedFeature,
15
18
  'Poltergeist.KeyError' => KeyError,
16
19
  }
@@ -125,6 +128,10 @@ module Capybara::Poltergeist
125
128
  command 'evaluate', script, *args
126
129
  end
127
130
 
131
+ def evaluate_async(script, wait_time, *args)
132
+ command 'evaluate_async', script, wait_time, *args
133
+ end
134
+
128
135
  def execute(script, *args)
129
136
  command 'execute', script, *args
130
137
  end
@@ -141,7 +148,7 @@ module Capybara::Poltergeist
141
148
  command 'pop_frame'
142
149
  end
143
150
 
144
- def switch_to_frame(handle, &block)
151
+ def switch_to_frame(handle)
145
152
  case handle
146
153
  when Capybara::Node::Base
147
154
  command 'push_frame', [handle.native.page_id, handle.native.id]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "timeout"
2
4
  require "capybara/poltergeist/utility"
3
5
  require 'cliver'
@@ -65,7 +67,7 @@ module Capybara::Poltergeist
65
67
  end
66
68
  }
67
69
 
68
- process_options = {}
70
+ process_options = {in: File::NULL}
69
71
  process_options[:pgroup] = true unless Capybara::Poltergeist.windows?
70
72
  process_options[:out] = @write_io if Capybara::Poltergeist.mri?
71
73
 
@@ -31,31 +31,36 @@ class Poltergeist.Browser
31
31
  @confirm_processes = []
32
32
  @prompt_responses = []
33
33
 
34
+ @setupPageHandlers(@page)
34
35
 
35
- @page.native().onAlert = (msg) =>
36
+ return
37
+
38
+ setupPageHandlers: (page) ->
39
+ page.native().onAlert = (msg) =>
36
40
  @setModalMessage msg
37
41
  return
38
42
 
39
- @page.native().onConfirm = (msg) =>
43
+ page.native().onConfirm = (msg) =>
40
44
  process = @confirm_processes.pop()
41
45
  process = true if process == undefined
42
46
  @setModalMessage msg
43
47
  return process
44
48
 
45
- @page.native().onPrompt = (msg, defaultVal) =>
49
+ page.native().onPrompt = (msg, defaultVal) =>
46
50
  response = @prompt_responses.pop()
47
51
  response = defaultVal if (response == undefined || response == false)
48
52
 
49
53
  @setModalMessage msg
50
54
  return response
51
55
 
52
- @page.onPageCreated = (newPage) =>
53
- page = new Poltergeist.WebPage(newPage)
54
- page.handle = "#{@_counter++}"
55
- page.urlBlacklist = @page.urlBlacklist
56
- page.urlWhitelist = @page.urlWhitelist
57
- page.setViewportSize(@page.viewportSize())
58
- @pages.push(page)
56
+ page.onPageCreated = (newPage) =>
57
+ _page = new Poltergeist.WebPage(newPage)
58
+ _page.handle = "#{@_counter++}"
59
+ _page.urlBlacklist = page.urlBlacklist
60
+ _page.urlWhitelist = page.urlWhitelist
61
+ _page.setViewportSize(page.viewportSize())
62
+ @setupPageHandlers(_page)
63
+ @pages.push(_page)
59
64
 
60
65
  return
61
66
 
@@ -208,6 +213,18 @@ class Poltergeist.Browser
208
213
  throw new Poltergeist.ObsoleteNode if arg["ELEMENT"]["page_id"] != @currentPage.id
209
214
  @current_command.sendResponse @currentPage.evaluate("function() { return #{script} }", args...)
210
215
 
216
+ evaluate_async: (script, max_wait, args...) ->
217
+ for arg in args when @_isElementArgument(arg)
218
+ throw new Poltergeist.ObsoleteNode if arg["ELEMENT"]["page_id"] != @currentPage.id
219
+ command = @current_command
220
+ cb = (result)=>
221
+ command.sendResponse(result)
222
+ @currentPage.evaluate_async("function() { #{script} }", cb, args...)
223
+ setTimeout(=>
224
+ command.sendError(new Poltergeist.ScriptTimeoutError)
225
+ , max_wait*1000)
226
+
227
+
211
228
  execute: (script, args...) ->
212
229
  for arg in args when @_isElementArgument(arg)
213
230
  throw new Poltergeist.ObsoleteNode if arg["ELEMENT"]["page_id"] != @currentPage.id
@@ -37,12 +37,16 @@ Poltergeist.Browser = (function() {
37
37
  this.processed_modal_messages = [];
38
38
  this.confirm_processes = [];
39
39
  this.prompt_responses = [];
40
- this.page["native"]().onAlert = (function(_this) {
40
+ this.setupPageHandlers(this.page);
41
+ };
42
+
43
+ Browser.prototype.setupPageHandlers = function(page) {
44
+ page["native"]().onAlert = (function(_this) {
41
45
  return function(msg) {
42
46
  _this.setModalMessage(msg);
43
47
  };
44
48
  })(this);
45
- this.page["native"]().onConfirm = (function(_this) {
49
+ page["native"]().onConfirm = (function(_this) {
46
50
  return function(msg) {
47
51
  var process;
48
52
  process = _this.confirm_processes.pop();
@@ -53,7 +57,7 @@ Poltergeist.Browser = (function() {
53
57
  return process;
54
58
  };
55
59
  })(this);
56
- this.page["native"]().onPrompt = (function(_this) {
60
+ page["native"]().onPrompt = (function(_this) {
57
61
  return function(msg, defaultVal) {
58
62
  var response;
59
63
  response = _this.prompt_responses.pop();
@@ -64,15 +68,16 @@ Poltergeist.Browser = (function() {
64
68
  return response;
65
69
  };
66
70
  })(this);
67
- this.page.onPageCreated = (function(_this) {
71
+ page.onPageCreated = (function(_this) {
68
72
  return function(newPage) {
69
- var page;
70
- page = new Poltergeist.WebPage(newPage);
71
- page.handle = "" + (_this._counter++);
72
- page.urlBlacklist = _this.page.urlBlacklist;
73
- page.urlWhitelist = _this.page.urlWhitelist;
74
- page.setViewportSize(_this.page.viewportSize());
75
- return _this.pages.push(page);
73
+ var _page;
74
+ _page = new Poltergeist.WebPage(newPage);
75
+ _page.handle = "" + (_this._counter++);
76
+ _page.urlBlacklist = page.urlBlacklist;
77
+ _page.urlWhitelist = page.urlWhitelist;
78
+ _page.setViewportSize(page.viewportSize());
79
+ _this.setupPageHandlers(_page);
80
+ return _this.pages.push(_page);
76
81
  };
77
82
  })(this);
78
83
  };
@@ -266,6 +271,31 @@ Poltergeist.Browser = (function() {
266
271
  return this.current_command.sendResponse((ref = this.currentPage).evaluate.apply(ref, ["function() { return " + script + " }"].concat(slice.call(args))));
267
272
  };
268
273
 
274
+ Browser.prototype.evaluate_async = function() {
275
+ var arg, args, cb, command, i, len, max_wait, ref, script;
276
+ script = arguments[0], max_wait = arguments[1], args = 3 <= arguments.length ? slice.call(arguments, 2) : [];
277
+ for (i = 0, len = args.length; i < len; i++) {
278
+ arg = args[i];
279
+ if (this._isElementArgument(arg)) {
280
+ if (arg["ELEMENT"]["page_id"] !== this.currentPage.id) {
281
+ throw new Poltergeist.ObsoleteNode;
282
+ }
283
+ }
284
+ }
285
+ command = this.current_command;
286
+ cb = (function(_this) {
287
+ return function(result) {
288
+ return command.sendResponse(result);
289
+ };
290
+ })(this);
291
+ (ref = this.currentPage).evaluate_async.apply(ref, ["function() { " + script + " }", cb].concat(slice.call(args)));
292
+ return setTimeout((function(_this) {
293
+ return function() {
294
+ return command.sendError(new Poltergeist.ScriptTimeoutError);
295
+ };
296
+ })(this), max_wait * 1000);
297
+ };
298
+
269
299
  Browser.prototype.execute = function() {
270
300
  var arg, args, i, len, ref, script;
271
301
  script = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
@@ -214,6 +214,23 @@ Poltergeist.NoSuchWindowError = (function(superClass) {
214
214
 
215
215
  })(Poltergeist.Error);
216
216
 
217
+ Poltergeist.ScriptTimeoutError = (function(superClass) {
218
+ extend(ScriptTimeoutError, superClass);
219
+
220
+ function ScriptTimeoutError() {
221
+ return ScriptTimeoutError.__super__.constructor.apply(this, arguments);
222
+ }
223
+
224
+ ScriptTimeoutError.prototype.name = "Poltergeist.ScriptTimeoutError";
225
+
226
+ ScriptTimeoutError.prototype.args = function() {
227
+ return [];
228
+ };
229
+
230
+ return ScriptTimeoutError;
231
+
232
+ })(Poltergeist.Error);
233
+
217
234
  Poltergeist.UnsupportedFeature = (function(superClass) {
218
235
  extend(UnsupportedFeature, superClass);
219
236
 
@@ -1,11 +1,12 @@
1
- var slice = [].slice,
1
+ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
2
+ slice = [].slice,
2
3
  indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
3
4
  hasProp = {}.hasOwnProperty;
4
5
 
5
6
  Poltergeist.WebPage = (function() {
6
7
  var command, delegate, fn1, fn2, i, j, len, len1, ref, ref1;
7
8
 
8
- WebPage.CALLBACKS = ['onConsoleMessage', 'onError', 'onLoadFinished', 'onInitialized', 'onLoadStarted', 'onResourceRequested', 'onResourceReceived', 'onResourceError', 'onNavigationRequested', 'onUrlChanged', 'onPageCreated', 'onClosing'];
9
+ WebPage.CALLBACKS = ['onConsoleMessage', 'onError', 'onLoadFinished', 'onInitialized', 'onLoadStarted', 'onResourceRequested', 'onResourceReceived', 'onResourceError', 'onNavigationRequested', 'onUrlChanged', 'onPageCreated', 'onClosing', 'onCallback'];
9
10
 
10
11
  WebPage.DELEGATES = ['open', 'sendEvent', 'uploadFile', 'render', 'close', 'renderBase64', 'goBack', 'goForward', 'reload'];
11
12
 
@@ -16,6 +17,7 @@ Poltergeist.WebPage = (function() {
16
17
  function WebPage(_native) {
17
18
  var callback, i, len, ref;
18
19
  this._native = _native;
20
+ this._checkForAsyncResult = bind(this._checkForAsyncResult, this);
19
21
  this._native || (this._native = require('webpage').create());
20
22
  this.id = 0;
21
23
  this.source = null;
@@ -30,6 +32,8 @@ Poltergeist.WebPage = (function() {
30
32
  this._requestedResources = {};
31
33
  this._responseHeaders = [];
32
34
  this._tempHeadersToRemoveOnRedirect = {};
35
+ this._asyncResults = {};
36
+ this._asyncEvaluationId = 0;
33
37
  ref = WebPage.CALLBACKS;
34
38
  for (i = 0, len = ref.length; i < len; i++) {
35
39
  callback = ref[i];
@@ -119,6 +123,11 @@ Poltergeist.WebPage = (function() {
119
123
  return true;
120
124
  };
121
125
 
126
+ WebPage.prototype.onCallbackNative = function(data) {
127
+ this._asyncResults[data['command_id']] = data['command_result'];
128
+ return true;
129
+ };
130
+
122
131
  WebPage.prototype.onResourceRequestedNative = function(request, net) {
123
132
  var ref2;
124
133
  this._networkTraffic[request.id] = {
@@ -568,6 +577,20 @@ Poltergeist.WebPage = (function() {
568
577
  return result;
569
578
  };
570
579
 
580
+ WebPage.prototype.evaluate_async = function() {
581
+ var args, callback, cb, command_id, fn, ref2;
582
+ fn = arguments[0], callback = arguments[1], args = 3 <= arguments.length ? slice.call(arguments, 2) : [];
583
+ command_id = ++this._asyncEvaluationId;
584
+ cb = callback;
585
+ this.injectAgent();
586
+ (ref2 = this["native"]()).evaluate.apply(ref2, ["function(){ var page_id = arguments[0]; var args = []; for(var i=1; i < arguments.length; i++){ if ((typeof(arguments[i]) == 'object') && (typeof(arguments[i]['ELEMENT']) == 'object')){ args.push(window.__poltergeist.get(arguments[i]['ELEMENT']['id']).element); } else { args.push(arguments[i]) } } args.push(function(result){ result = window.__poltergeist.wrapResults(result, page_id); window.callPhantom( { command_id: " + command_id + ", command_result: result } ); }); " + (this.stringifyCall(fn, "args")) + "; return}", this.id].concat(slice.call(args)));
587
+ setTimeout((function(_this) {
588
+ return function() {
589
+ return _this._checkForAsyncResult(command_id, cb);
590
+ };
591
+ })(this), 10);
592
+ };
593
+
571
594
  WebPage.prototype.execute = function() {
572
595
  var args, fn, ref2;
573
596
  fn = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
@@ -643,6 +666,19 @@ Poltergeist.WebPage = (function() {
643
666
  }
644
667
  };
645
668
 
669
+ WebPage.prototype._checkForAsyncResult = function(command_id, callback) {
670
+ if (this._asyncResults.hasOwnProperty(command_id)) {
671
+ callback(this._asyncResults[command_id]);
672
+ delete this._asyncResults[command_id];
673
+ } else {
674
+ setTimeout((function(_this) {
675
+ return function() {
676
+ return _this._checkForAsyncResult(command_id, callback);
677
+ };
678
+ })(this), 50);
679
+ }
680
+ };
681
+
646
682
  WebPage.prototype._blockRequest = function(url) {
647
683
  var blacklisted, useWhitelist, whitelisted;
648
684
  useWhitelist = this.urlWhitelist.length > 0;
@@ -74,6 +74,10 @@ class Poltergeist.NoSuchWindowError extends Poltergeist.Error
74
74
  name: "Poltergeist.NoSuchWindowError"
75
75
  args: -> []
76
76
 
77
+ class Poltergeist.ScriptTimeoutError extends Poltergeist.Error
78
+ name: "Poltergeist.ScriptTimeoutError"
79
+ args: -> []
80
+
77
81
  class Poltergeist.UnsupportedFeature extends Poltergeist.Error
78
82
  constructor: (@message) ->
79
83
  name: "Poltergeist.UnsupportedFeature"
@@ -3,7 +3,7 @@ class Poltergeist.WebPage
3
3
  'onLoadFinished', 'onInitialized', 'onLoadStarted',
4
4
  'onResourceRequested', 'onResourceReceived', 'onResourceError',
5
5
  'onNavigationRequested', 'onUrlChanged', 'onPageCreated',
6
- 'onClosing']
6
+ 'onClosing', 'onCallback']
7
7
 
8
8
  @DELEGATES = ['open', 'sendEvent', 'uploadFile', 'render', 'close',
9
9
  'renderBase64', 'goBack', 'goForward', 'reload']
@@ -29,6 +29,8 @@ class Poltergeist.WebPage
29
29
  @_requestedResources = {}
30
30
  @_responseHeaders = []
31
31
  @_tempHeadersToRemoveOnRedirect = {}
32
+ @_asyncResults = {}
33
+ @_asyncEvaluationId = 0
32
34
 
33
35
  for callback in WebPage.CALLBACKS
34
36
  this.bindCallback(callback)
@@ -85,6 +87,10 @@ class Poltergeist.WebPage
85
87
  @errors.push(message: message, stack: stackString)
86
88
  return true
87
89
 
90
+ onCallbackNative: (data) ->
91
+ @_asyncResults[data['command_id']] = data['command_result']
92
+ true
93
+
88
94
  onResourceRequestedNative: (request, net) ->
89
95
  @_networkTraffic[request.id] = {
90
96
  request: request,
@@ -369,6 +375,32 @@ class Poltergeist.WebPage
369
375
  return window.__poltergeist.wrapResults(_result, page_id); }", @id, args...)
370
376
  result
371
377
 
378
+ evaluate_async: (fn, callback, args...) ->
379
+ command_id = ++@_asyncEvaluationId
380
+ cb = callback
381
+ this.injectAgent()
382
+ this.native().evaluate("function(){
383
+ var page_id = arguments[0];
384
+ var args = [];
385
+ for(var i=1; i < arguments.length; i++){
386
+ if ((typeof(arguments[i]) == 'object') && (typeof(arguments[i]['ELEMENT']) == 'object')){
387
+ args.push(window.__poltergeist.get(arguments[i]['ELEMENT']['id']).element);
388
+ } else {
389
+ args.push(arguments[i])
390
+ }
391
+ }
392
+ args.push(function(result){
393
+ result = window.__poltergeist.wrapResults(result, page_id);
394
+ window.callPhantom( { command_id: #{command_id}, command_result: result } );
395
+ });
396
+ #{this.stringifyCall(fn, "args")};
397
+ return}", @id, args...)
398
+
399
+ setTimeout( =>
400
+ @_checkForAsyncResult(command_id, cb)
401
+ , 10)
402
+ return
403
+
372
404
  execute: (fn, args...) ->
373
405
  this.native().evaluate("function() {
374
406
  for(var i=0; i < arguments.length; i++){
@@ -426,6 +458,16 @@ class Poltergeist.WebPage
426
458
  else
427
459
  throw new Poltergeist.UnsupportedFeature("clearMemoryCache is supported since PhantomJS 2.0.0")
428
460
 
461
+ _checkForAsyncResult: (command_id, callback)=>
462
+ if @_asyncResults.hasOwnProperty(command_id)
463
+ callback(@_asyncResults[command_id])
464
+ delete @_asyncResults[command_id]
465
+ else
466
+ setTimeout(=>
467
+ @_checkForAsyncResult(command_id, callback)
468
+ , 50)
469
+ return
470
+
429
471
  _blockRequest: (url) ->
430
472
  useWhitelist = @urlWhitelist.length > 0
431
473
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'securerandom'
2
4
 
3
5
  module Capybara::Poltergeist
@@ -16,4 +18,4 @@ module Capybara::Poltergeist
16
18
  JSON.dump({ 'id' => @id, 'name' => @name, 'args' => @args })
17
19
  end
18
20
  end
19
- end
21
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist
2
4
  class Cookie
3
5
  def initialize(attributes)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'uri'
2
4
 
3
5
  module Capybara::Poltergeist
@@ -139,6 +141,11 @@ module Capybara::Poltergeist
139
141
  unwrap_script_result(result)
140
142
  end
141
143
 
144
+ def evaluate_async_script(script, *args)
145
+ result = browser.evaluate_async(script, session_wait_time, *args.map { |arg| arg.is_a?(Capybara::Poltergeist::Node) ? arg.native : arg})
146
+ unwrap_script_result(result)
147
+ end
148
+
142
149
  def execute_script(script, *args)
143
150
  browser.execute(script, *args.map { |arg| arg.is_a?(Capybara::Poltergeist::Node) ? arg.native : arg})
144
151
  nil
@@ -148,8 +155,8 @@ module Capybara::Poltergeist
148
155
  browser.within_frame(name, &block)
149
156
  end
150
157
 
151
- def switch_to_frame(locator, &block)
152
- browser.switch_to_frame(locator, &block)
158
+ def switch_to_frame(locator)
159
+ browser.switch_to_frame(locator)
153
160
  end
154
161
 
155
162
  def current_window_handle
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara
2
4
  module Poltergeist
3
5
  class Error < StandardError; end
@@ -174,6 +176,13 @@ module Capybara
174
176
  end
175
177
  end
176
178
 
179
+ class ScriptTimeoutError < Error
180
+ def message
181
+ "Timed out waiting for evaluated script to resturn a value"
182
+ end
183
+ end
184
+
185
+
177
186
  class DeadClient < Error
178
187
  def initialize(message)
179
188
  @message = message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist
2
4
  class Inspector
3
5
  BROWSERS = %w(chromium chromium-browser google-chrome open)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist
2
4
  module NetworkTraffic
3
5
  require 'capybara/poltergeist/network_traffic/request'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist::NetworkTraffic
2
4
  class Error
3
5
  def initialize(data)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist::NetworkTraffic
2
4
  class Request
3
5
  attr_reader :response_parts, :error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist::NetworkTraffic
2
4
  class Response
3
5
  def initialize(data)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist
2
4
  class Node < Capybara::Driver::Node
3
5
  attr_reader :page_id, :id
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara::Poltergeist
2
4
  class Server
3
5
  attr_reader :socket, :fixed_port, :timeout, :custom_host
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara
2
4
  module Poltergeist
3
5
  class << self
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Capybara
2
4
  module Poltergeist
3
- VERSION = "1.16.0"
5
+ VERSION = "1.17.0"
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'socket'
2
4
  require 'websocket/driver'
3
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poltergeist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 1.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Leighton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-07 00:00:00.000000000 Z
11
+ date: 2017-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.5.0
75
+ version: '3.7'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.5.0
82
+ version: '3.7'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sinatra
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - "<="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.0'
89
+ version: '3.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - "<="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.0'
96
+ version: '3.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -126,9 +126,9 @@ dependencies:
126
126
  name: pdf-reader
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - "<"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.3'
131
+ version: '3.0'
132
132
  - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: 1.3.3
@@ -136,9 +136,9 @@ dependencies:
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - "~>"
139
+ - - "<"
140
140
  - !ruby/object:Gem::Version
141
- version: '1.3'
141
+ version: '3.0'
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
144
  version: 1.3.3
@@ -273,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
273
  version: '0'
274
274
  requirements: []
275
275
  rubyforge_project:
276
- rubygems_version: 2.6.11
276
+ rubygems_version: 2.7.0
277
277
  signing_key:
278
278
  specification_version: 4
279
279
  summary: PhantomJS driver for Capybara