LoginSignup
3
2

More than 5 years have passed since last update.

CapybaraでReactをテストしようとしたらエラーになった件

Posted at

RailsでReact.jsをE2Eテストを行おうとしたらエラーになってハマりました。
しかもローカルではテストをパスするのにCircleCIで動かしたらエラー吐いた

開発環境

  • Rails(4.2.5)
  • Capybara (2.6.0)
  • Poltergeist (1.8.1)
  • react-rails(1.5.0)

以下エラーメッセージ

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).

    TypeError: 'undefined' is not a function (evaluating 'RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/)')
    TypeError: 'undefined' is not a function (evaluating 'RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/)')
        at http://127.0.0.1:55927/assets/application.js:27030
        at http://127.0.0.1:55927/assets/application.js:16683 in __webpack_require__
        at http://127.0.0.1:55927/assets/application.js:25132
        at http://127.0.0.1:55927/assets/application.js:25210
        at http://127.0.0.1:55927/assets/application.js:16683 in __webpack_require__
        at http://127.0.0.1:55927/assets/application.js:16792
        at http://127.0.0.1:55927/assets/application.js:16867
        at http://127.0.0.1:55927/assets/application.js:16683 in __webpack_require__
        at http://127.0.0.1:55927/assets/application.js:16743
        at http://127.0.0.1:55927/assets/application.js:16683 in __webpack_require__
        at http://127.0.0.1:55927/assets/application.js:16723
        at http://127.0.0.1:55927/assets/application.js:16683 in __webpack_require__
        at http://127.0.0.1:55927/assets/application.js:16710
        at http://127.0.0.1:55927/assets/application.js:16683 in __webpack_require__
        at http://127.0.0.1:55927/assets/application.js:16703
        at http://127.0.0.1:55927/assets/application.js:36304

解決方法

どうやらphantomjsのバージョンが低くてbindが定義されていないのが問題らしい。
es5-shimをいれるといいらしい、というのがこちらにありました。

  • es5-shimの入手先
  • applicaion.jsでreactよりも前にshimを読み込ませる

    //= require es5-shim
    //= require react
    //= require react_ujs
    
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2