React/Babel: 组件不只在 CircleCI 上渲染
React/Babel: Components not rendering only on CircleCI
我最近将带有 React-Redux 和 Babelify(用于 ES6)的 ReactJS 添加到 Rails 应用程序中。黄瓜测试在本地通过,但在 CircleCI 上没有通过。这是我目前所知道的:
- 当我检查工件中的屏幕截图时,似乎 React 组件没有呈现,即使等待它们出现最多 4 秒也是如此。
- CircleCI 构建中没有错误
- 我试过在没有缓存的情况下在 CircleCI 上重建。
- 基本 javascript-依赖测试正在通过。
- 依赖babel和导入库(lodash)的基础测试通过
如何让我的 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()
并且测试到处都是绿色的。
我最近将带有 React-Redux 和 Babelify(用于 ES6)的 ReactJS 添加到 Rails 应用程序中。黄瓜测试在本地通过,但在 CircleCI 上没有通过。这是我目前所知道的:
- 当我检查工件中的屏幕截图时,似乎 React 组件没有呈现,即使等待它们出现最多 4 秒也是如此。
- CircleCI 构建中没有错误
- 我试过在没有缓存的情况下在 CircleCI 上重建。
- 基本 javascript-依赖测试正在通过。
- 依赖babel和导入库(lodash)的基础测试通过
如何让我的 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()
并且测试到处都是绿色的。