Skip to content

Commit e2b435d

Browse files
authored
Merge pull request #796 from BookOfGreg/update-to-chromedriver-for-js-tests
Update javascript driver to headless chrome
2 parents a58f9bb + 4ae2b47 commit e2b435d

File tree

4 files changed

+28
-22
lines changed

4 files changed

+28
-22
lines changed

.travis.yml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
language: ruby
22
sudo: required
33
dist: trusty
4+
addons:
5+
chrome: stable
46
cache:
57
bundler: true
68
yarn: true
@@ -32,9 +34,9 @@ matrix:
3234
- rvm: 2.1
3335
gemfile: gemfiles/rails_3.2.gemfile
3436
- rvm: 2.1
35-
gemfile: rails_4.0.5.gemfile
37+
gemfile: gemfiles/rails_4.0.5.gemfile
3638
- rvm: 2.1
37-
gemfile: rails_4.0_with_therubyracer.gemfile
39+
gemfile: gemfiles/rails_4.0_with_therubyracer.gemfile
3840
- rvm: 2.1
3941
gemfile: gemfiles/rails_4.2_sprockets_2.gemfile
4042
- rvm: 2.1
@@ -76,12 +78,6 @@ matrix:
7678
- rvm: jruby-9.1.9.0
7779

7880
before_install:
79-
- nvm install 7.8.0 && nvm use 7.8.0
80-
- mkdir travis-phantomjs
81-
- 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
82-
- tar -xvf $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis-phantomjs
83-
- export PATH=$PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH
84-
- phantomjs --version
8581
# Repo for Yarn
8682
- sudo apt-key adv --fetch-keys http://dl.yarnpkg.com/debian/pubkey.gpg
8783
- echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ Then restart your development server.
9090

9191
This will:
9292

93-
- add some `//= require`s to `application.js`
93+
- add some `//= require`s to `application.js`
9494
- add a `components/` directory for React components
9595
- add `server_rendering.js` for [server-side rendering](#server-side-rendering)
9696

@@ -108,7 +108,7 @@ window.Post = React.createClass({
108108
// or, equivalent:
109109
class Post extends React.Component {
110110
render() {
111-
return <h1>{this.props.title}</h1>
111+
return <h1>{this.props.title}</h1>
112112
}
113113
}
114114
```
@@ -483,6 +483,8 @@ You can also specify this option in `react_component`:
483483
## Development
484484

485485
- Run tests with `rake test` or `appraisal rake test`
486+
- Integration tests run in Headless Chrome which is included in Chrome (59+ linux,OSX | 60+ Windows)
487+
- ChromeDriver is included with `chromedriver-helper` gem so no need to manually install that 👍
486488
- Update React assets with `rake react:update`
487489
- Update the UJS with `rake ujs:update`
488490
- Releases:

react-rails.gemspec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ Gem::Specification.new do |s|
2323
s.add_development_dependency 'guard-minitest'
2424
s.add_development_dependency 'jbuilder'
2525
s.add_development_dependency 'listen', '~> 3.0.0' # support Ruby 2.1
26-
s.add_development_dependency 'poltergeist', '>= 0.3.3'
26+
s.add_development_dependency 'chromedriver-helper'
27+
s.add_development_dependency 'capybara'
28+
s.add_development_dependency 'selenium-webdriver'
2729
s.add_development_dependency 'test-unit', '~> 2.5'
2830
s.add_development_dependency 'rails', '>= 3.2'
2931

test/test_helper.rb

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,30 @@
2929
require 'pathname'
3030
require 'minitest/mock'
3131
require 'capybara/rails'
32-
require 'capybara/poltergeist'
32+
require 'selenium/webdriver'
3333
Dummy::Application.load_tasks
3434

3535
WebpackerHelpers.clear_webpacker_packs
3636

3737
Capybara.app = Rails.application
3838

39-
Capybara.register_driver :poltergeist_debug do |app|
40-
poltergeist_options = {
41-
# `page.driver.debug` will cause Poltergeist to open a browser window
42-
inspector: true,
43-
# hide warnings from React.js whitespace changes:
44-
# and from React.createClass deprecation
45-
js_errors: false
46-
}
47-
Capybara::Poltergeist::Driver.new(app, poltergeist_options)
39+
40+
Capybara.register_driver :chrome do |app|
41+
Capybara::Selenium::Driver.new(app, browser: :chrome)
4842
end
49-
Capybara.javascript_driver = :poltergeist_debug
43+
44+
Capybara.register_driver :headless_chrome do |app|
45+
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
46+
chromeOptions: { args: %w(headless disable-gpu) }
47+
)
48+
49+
Capybara::Selenium::Driver.new(app,
50+
browser: :chrome,
51+
desired_capabilities: capabilities
52+
)
53+
end
54+
55+
Capybara.javascript_driver = :headless_chrome
5056
Capybara.current_driver = Capybara.javascript_driver
5157

5258
CACHE_PATH = Pathname.new File.expand_path("../#{DUMMY_LOCATION}/tmp/cache", __FILE__)

0 commit comments

Comments
 (0)