In this tutorial I am going to show you how to configure Travis CI to run your Rails' test suite and system tests everytime you push a new change to your repository.
First we'll need to create simple Rail application. Open up your terminal and run the following commands.
$ rails new rails-travis-ci-example -d=postgresql
$ rails db:create
$ rails g scaffold Post title body:text
- This step will automatically generate tests and system tests.
$ rails db:migrate
Rails is configured by default to run system tests in Google Chrome. However, I ran into an issue with Travis CI when it came to running system tests using the default configuration. My solution was to update
test/application_system_test_case.rb by declearing
:headless_chrome instead of the default
# test/application_system_test_case.rb require "test_helper" class ApplicationSystemTestCase < ActionDispatch::SystemTestCase driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400] end
- Run the test suite locally to ensure it works and passes.
$ rails test $ rails test:system
Next we need to create a
.travis.yml file in order for Travis CI to know how to build our application.
- Creat a
.travis.ymlfile and add the following:
language: ruby cache: - bundler - yarn services: - postgresql before_install: - nvm install --lts before_script: - bundle install --jobs=3 --retry=3 - yarn - bundle exec rake db:create - bundle exec rake db:schema:load script: - bundle exec rake test - bundle exec rake test:system
|os||Sets the build's operating system. Note that we did not add an
|language||Selects the language support used for the build. We select
|cache||Activates caching content that does not often change in order to speed up the build process. We add
|services||Services to set up and start. We add
|before_install||Scripts to run before the install stage. We add
|before_script||Scripts to run before the script stage. This sets up our Rails application. Note that I do not seed the database, since we only care about the test environment. I run
|script||Scripts to run at the script stage. In our case, we just run our tests.|
- Log into Travis CI and navigate to
- Search for your repository, and it enabled. If your repository doesn't appear click the Sync account button.
- Navigate to your project and trigger a build. Alternatively, make a new commit and push to GitHub to trigger a new build.
- If you're using Heroku you can use GitHub as your deployment method and enable automatic deployments, but have it configured to wait for the CI to pass first.