2017-03-06 1 views
0

기능 테스트에서 Rspec, Capybara 및 Poltergeist를 사용하여 Braintree 샌드 박스 지불 테스트를하는 중에 오류가 발생했습니다. 나는 그것이 인간이 개발 (지불 정보 입력 및 제출 클릭)하는 것과 정확히 똑같이하도록 설정했습니다. 그것은 개발 잘 작동합니다. 내 사양을 실행할 때로드 할 때 그러나, 나는 지불 페이지에 자바 스크립트 오류가 발생합니다 :Capybara/Poltergeist and 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 오류를 throw합니다] 가능한 복제본 (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 오류를 올바르게 알립니다. Poltergeist와 함께 사용하는 PhantomJS의 릴리스 버전에 따라 5 년 된 Safari 버전과 가장 잘 어울립니다. 따라서 대부분은 braintree JS가 더 이상 호환되지 않거나 제대로 작동하려면 polyfill 또는 2가 필요합니다. 디버깅을하고 실제로 기록되는 [object Object]가 무엇인지 파악해야합니다. 하나의 옵션은 테스트를 위해 셀레늄으로 전환하고 오류가 여전히 존재하는지 확인하는 것입니다.

+0

감사합니다. Thomas ! 귀하의 의견은 바른 길로 나를 가리켰습니다 - 셀레늄 (도커에서 테스트를 실행하고 그 모든 것을 설정하고 싶지는 않았습니다) 대신 Braintree의 js 플러그인의 오래된 버전을 사용해 보았습니다. 최신 버전 (2.24.0)은 PhantomJS에 대한 지원을 중단해야하며, 2.0.0은 여전히 ​​작동합니다 (적어도 필자가 사용중인 FakeBrainree 젬에도 해당). 다시 한 번 감사드립니다! – amclelland