2017-03-06 19 views
0

機能テストでRspec、Capybara、Poltergeistを使用してBraintreeのサンドボックス支払いをテストする際にエラーが発生しました。私はそれが人間が開発(支払情報を入力し、提出をクリックすること)で行うことを正確に行うように設定しました。それは開発でうまく動作します。私は私のスペックを実行したときに、それがロードするときしかし、私は支払いページではJavaScriptエラーを取得:Capybara/PoltergeistとBraintreeのテスト

Capybara::Poltergeist::JavascriptError: 
    One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details). 

    [object Object] 
    [object Object] 
     at https://js.braintreegateway.com/js/braintree-2.24.0.js:9484 in fallbackError 
# /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/browser.rb:365:in `command' 
# /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/browser.rb:181:in `click' 
# /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/node.rb:17:in `command' 
# /usr/local/bundle/gems/poltergeist-1.10.0/lib/capybara/poltergeist/node.rb:131:in `click' 

誰もが同様の問題に遭遇したり(ブレインツリーのJSは、テストでこのエラーを投げるかもしれない理由を任意のアイデアを持っている持っていますヘッドレスブラウザ)を使用していますか?

+0

[Poltergeistがjs \ _errors:falseのときJSエラーをスローする]の可能な複製(http://stackoverflow.com/questions/25673890/poltergeist-throws-js-errors-when-js-errors-false) – fabersky

答えて

2

braintree-2.24.0.js:9484という行を見ると、Braintree.jsがconsole.errorでエラーを出力していることが分かります。そのため、Poltergeistは正しくJSエラーを通知しています。ポランテジストで使用しているPhantomJSのリリースバージョンによっては、Safariの5年前のバージョンと同等であるため、Braintree JSはもはや互換性がないか、正しく機能するには1つまたは2つのポリフィルが必要なことがあります。デバッグして、実際にログに記録されている[オブジェクトオブジェクト]が何であるか把握する必要があります。 1つの選択肢は、そのテストのためにセレンに切り替えて、エラーがまだ存在するかどうかを確認することです。

+0

ありがとうThomas !あなたのコメントは正しいトラックで私を指摘しました - セレン(ドッカーでテストを実行していて、それをすべて設定したくない)の代わりに、Braintreeのjsプラグインの古いバージョンを試してみました。最新のもの(2.24.0)はPhantomJSのサポートを壊しているに違いありませんが、2.0.0はまだ動作しています(少なくとも私が使っているFakeBrainreeの宝石でも)。再度、感謝します! – amclelland