Capybara Poltergeist で TypeError: undefined is not a function (evaluating 'Object.assign〜 というエラーが発生した
今まで poltergeist のオプションに js_errors: false を設定していたんだけど、
とある所で詰まって色々調べるために、true にしたら全く動かなくなった。
テストを実行したら下記のエラーが出力された。
TypeError: undefined is not a function (evaluating 'Object.assign(hoge, fuga)')
すぐ、こちらのぺーじを見つけて
https://github.com/es-shims/es5-shim/blob/master/es5-shim.js
からソース落としてきて
application.js に
//= require es5-shim
を入れたんだけど、またもや同じエラーがおきた。
調べたところ
Object.assign は ES6 の構文らしい。
なので
https://raw.githubusercontent.com/paulmillr/es6-shim/master/es6-shim.js
から同じようにソースを落っことしてきて
//= require es6-shim
としたら動いた。
ちなみに 調べてる過程で見つけたんだけど、apt-get で phantomjs をいれるのはよくないらしい。
下記手順でいれなおした
$ sudo apt-get install npm nodejs nodejs-legacy
$ npm install -g phantomjs
$ phantomjs -v
=> 2.1.1
ちなみに capybara の poltergeist の設定で phantomjs_logger 設定すると console.log したものを吐き出してくれるのでかなり便利だった。
Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, { debug: true, js_errors: true, phantomjs_logger: File.open("#{Rails.root}/log/test_phantomjs.log", "a")} ) end