React/Babel: 组件不只在 CircleCI 上渲染

React/Babel: Components not rendering only on CircleCI

我最近将带有 React-Redux 和 Babelify(用于 ES6)的 ReactJS 添加到 Rails 应用程序中。黄瓜测试在本地通过,但在 CircleCI 上没有通过。这是我目前所知道的:

如何让我的 React 组件的黄瓜测试通过 CircleCI?

# no circle.yml

# gemfile
gem 'capybara-webkit'
gem "chromedriver-helper"
gem 'capybara-screenshot'
gem 'selenium-webdriver'

# package.json
"dependencies": {
  "browserify": "~> 10.2.4",
  "browserify-incremental": "^3.0.1",
  "lodash": "^3.10.1",
  "react": "~>0.13.3",
  "react-redux": "~>3.1.0",
  "redux-thunk": "~>1.0.0",
  "babelify": "~>6.3.0"
}

# support/env.rb
Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome)
end
Capybara.javascript_driver = :chrome

通过 SSH 进入 CircleCI 测试后,我的同事看到 Object.assign 未定义。显然,CircleCI 使用的 Chrome 版本比我们测试时使用的版本更旧,而且 Babel 不会自动填充 ES6 方法(有关更多信息,请参阅评论)。

他用 lodash 的 _.extend() 替换了 Object.assign() 并且测试到处都是绿色的。