我最近将 ReactJS 与 React-Redux 和 Babelify(针对 ES6)添加到了 Rails 应用程序中。 Cucumber 测试在本地通过,但在 CircleCI 上未通过。以下是我目前所知道的:
- 当我检查工件中的屏幕截图时,React 组件似乎没有渲染,即使等待了 4 秒才出现。
- CircleCI 构建中没有错误
- 我尝试过在不使用缓存的情况下在 CircleCI 上进行重建。
- 基本的 javascript 相关测试正在通过。
- 依赖 babel 和导入库 (lodash) 的基本测试正在通过
如何让 React 组件的 Cucumber 测试在 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()
,并且测试到处都是绿色的。
关于ruby-on-rails - react /巴别塔 : Components not rendering only on CircleCI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000160/