.travis.yml
sudo: required
language: ruby
rvm:
- 2.7.3
services:
- docker
- redis-server
addons:
mariadb: '10.2'
chrome: stable
cache:
directories:
- $PWD/vendor/.bundle/
- $PWD/public/lib/
git:
depth: false
env:
global:
- CI=true
- GENERATE_REPORT=true
- RAILS_ENV=test
- RAILS_SYSTEM_TESTING_SCREENSHOT=simple
before_install:
- CHROME_MAIN_VERSION=`google-chrome-stable --version | sed -E 's/(^Google Chrome |\.[0-9]+ )//g'`
- CHROMEDRIVER_VERSION=`curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_MAIN_VERSION"`
- sudo wget https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip
- sudo unzip chromedriver_linux64.zip -d /usr/local/bin/
- sudo chmod +x /usr/local/bin/chromedriver
- google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
- yes | gem update --system --force
- gem install bundler
install:
- rm -rf test/reports
- cp config/database.yml.example config/database.yml
- cp db/schema.rb.example db/schema.rb
- bundle config set path 'vendor/.bundle/'
- bundle install
- gem list
- if [ $RAILS_ENV != 'production' ]; then
yarn check || yarn install;
fi
- mysql -e "CREATE DATABASE plots;";
- bundle exec rake db:schema:load
- bundle exec rake db:migrate
- if [ "$TRAVIS_PULL_REQUEST" == "true" ]; then
gem install danger danger-junit google-cloud-storage;
fi
- echo "$GOOGLE_APPLICATION_CREDENTIALS_JSON" > /tmp/credentials.json # needs to be a path to a json file, so we shuffle...
jobs:
include:
- name: "Unit Tests"
script: bundle exec rails test test/unit
- name: "Functional Tests"
script: bundle exec rails test test/functional
- name: "Integration Tests"
script: bundle exec rails test test/integration
- name: "System Tests"
script: bundle exec rails test:system
after_script:
- echo -e '<?xml version="1.0" encoding="UTF-8"?>' > output.xml;
- tail -n +2 -q ./test/reports/TEST*.xml >> output.xml
- if [ $TRAVIS_PULL_REQUEST == "true" ]; then
bundle exec danger --verbose;
fi
branches:
only:
- main
- unstable
- codecov