From 6c7e39201c00f26e7846ab38b8afd6c6a44ce72c Mon Sep 17 00:00:00 2001 From: Greg Myers Date: Sat, 30 Sep 2017 23:45:57 +0100 Subject: [PATCH 1/3] Update javascript driver to headless chrome --- react-rails.gemspec | 4 +++- test/test_helper.rb | 28 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/react-rails.gemspec b/react-rails.gemspec index ea86c02d..352d447f 100644 --- a/react-rails.gemspec +++ b/react-rails.gemspec @@ -23,7 +23,9 @@ Gem::Specification.new do |s| s.add_development_dependency 'guard-minitest' s.add_development_dependency 'jbuilder' s.add_development_dependency 'listen', '~> 3.0.0' # support Ruby 2.1 - s.add_development_dependency 'poltergeist', '>= 0.3.3' + s.add_development_dependency 'chromedriver-helper' + s.add_development_dependency 'capybara' + s.add_development_dependency 'selenium-webdriver' s.add_development_dependency 'test-unit', '~> 2.5' s.add_development_dependency 'rails', '>= 3.2' diff --git a/test/test_helper.rb b/test/test_helper.rb index 034c897c..41f3f245 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -29,24 +29,30 @@ require 'pathname' require 'minitest/mock' require 'capybara/rails' -require 'capybara/poltergeist' +require 'selenium/webdriver' Dummy::Application.load_tasks WebpackerHelpers.clear_webpacker_packs Capybara.app = Rails.application -Capybara.register_driver :poltergeist_debug do |app| - poltergeist_options = { - # `page.driver.debug` will cause Poltergeist to open a browser window - inspector: true, - # hide warnings from React.js whitespace changes: - # and from React.createClass deprecation - js_errors: false - } - Capybara::Poltergeist::Driver.new(app, poltergeist_options) + +Capybara.register_driver :chrome do |app| + Capybara::Selenium::Driver.new(app, browser: :chrome) end -Capybara.javascript_driver = :poltergeist_debug + +Capybara.register_driver :headless_chrome do |app| + capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( + chromeOptions: { args: %w(headless disable-gpu) } + ) + + Capybara::Selenium::Driver.new(app, + browser: :chrome, + desired_capabilities: capabilities + ) +end + +Capybara.javascript_driver = :headless_chrome Capybara.current_driver = Capybara.javascript_driver CACHE_PATH = Pathname.new File.expand_path("../#{DUMMY_LOCATION}/tmp/cache", __FILE__) From 44e52af95c34db714aaa68a7094013aeedea1fe4 Mon Sep 17 00:00:00 2001 From: Greg Myers Date: Sat, 30 Sep 2017 23:56:31 +0100 Subject: [PATCH 2/3] Update travis to remove phantom --- .travis.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 02c2df8e..7b566309 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: ruby sudo: required dist: trusty +addons: + chrome: stable cache: bundler: true yarn: true @@ -32,9 +34,9 @@ matrix: - rvm: 2.1 gemfile: gemfiles/rails_3.2.gemfile - rvm: 2.1 - gemfile: rails_4.0.5.gemfile + gemfile: gemfiles/rails_4.0.5.gemfile - rvm: 2.1 - gemfile: rails_4.0_with_therubyracer.gemfile + gemfile: gemfiles/rails_4.0_with_therubyracer.gemfile - rvm: 2.1 gemfile: gemfiles/rails_4.2_sprockets_2.gemfile - rvm: 2.1 @@ -76,12 +78,6 @@ matrix: - rvm: jruby-9.1.9.0 before_install: - - nvm install 7.8.0 && nvm use 7.8.0 - - mkdir travis-phantomjs - - wget https://rmosolgo.github.io/assets/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 - - tar -xvf $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis-phantomjs - - export PATH=$PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH - - phantomjs --version # Repo for Yarn - sudo apt-key adv --fetch-keys http://dl.yarnpkg.com/debian/pubkey.gpg - echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list From 4ae2b47aea288f26f5dc921991eddff8726af82a Mon Sep 17 00:00:00 2001 From: Greg Myers Date: Sun, 1 Oct 2017 14:28:44 +0100 Subject: [PATCH 3/3] Document chrome for easy development --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dcf015b5..5e89459f 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Then restart your development server. This will: -- add some `//= require`s to `application.js` +- add some `//= require`s to `application.js` - add a `components/` directory for React components - add `server_rendering.js` for [server-side rendering](#server-side-rendering) @@ -108,7 +108,7 @@ window.Post = React.createClass({ // or, equivalent: class Post extends React.Component { render() { - return

{this.props.title}

+ return

{this.props.title}

} } ``` @@ -483,6 +483,8 @@ You can also specify this option in `react_component`: ## Development - Run tests with `rake test` or `appraisal rake test` + - Integration tests run in Headless Chrome which is included in Chrome (59+ linux,OSX | 60+ Windows) + - ChromeDriver is included with `chromedriver-helper` gem so no need to manually install that 👍 - Update React assets with `rake react:update` - Update the UJS with `rake ujs:update` - Releases: