docbrown/.travis.yml
Nick Taylor a7da74b993
Cleaning Test Runs for End to End (E2E) Tests (#12143)
* Added custom seed task

* Added a test for the initial login for the intial admin of a forem instance.

* Renamed admin login seed data file.

* Pulled functions out of main Cypress plugin file and import them now.

* Added some comments.

* Added a comment about Cypress tasks requiring a return value to be considered successful.

* Moved admin_login_setup seed file to spec folder.

* Made change requests in regards to rake task.

* Fixed reference to SiteConfig

* Created the seeder class to be shared for all seed files.

* Added a missing param to function comment.

* Fixed seeder require in e2e test seed file.

* Fixed seeder require in seeds.rb. Why is Rails.root required?

* Added an environment guard for not being production in the e2e seed task.

* Made seeder require relative.

* Trying something for the Elastic Search issue in CI.

* Revert "Trying something for the Elastic Search issue in CI."

This reverts commit 7cb2a963c8ac1f9242c612a1b9fe8ff814605df6.

* Search indices are now removed via bundle exec rake search:destroy

* Now rake search:destroy is used in the Cypress task for resetting data as well.

* Moved Seeder class to app/lib

* Added cypress-rails

* Got two flows working with db rollbacks.

* Trimmed down the e2e dataset for now.

* Added a custom Cypress command to encompass test setup.

* removed unused e2e rake task

* added some user login/password e2e tests.

* Added a note about Cypress not cleaning cookies, so we do for the moment.

* Removed code no longer required.

* Removed comment in test that is no longer pertinent to the test suite.

* Removed data cleaning plugins as cypress rails gem handles it now.

* Added @citizen428's recommendation got raising an error if trying to seed production.

* Temporarily have paralleziation of e2e tests disabled to figure out cypres-rails/knapsack pro integration.

* Doh! Forgot a semi-colon in the Travis config.

* Added a comment about not integrating cypress-rails/knapsack pro right now.

* Removed knapsack pro npm package for now as we aren't using it.

* Reworded comment about cypress-rails/kanpsackpro.

* Removed seeding for tags to follow for onboarding in e2e seed data.

* Made pree2e script e2e:setup so it only runs explicitly when needed.

* Renamed bin/e2e to bin/e2e-ci.

* Created a new script for local e2e testing.

* Removed RAILS_ENV as it's in the e2e-ci script already.

* Fixed an auto corrected command.

* Fixed wording in e2e script prompt.

* Removed bundle exec rake data_updates:run that I had added. Doesn't appear to be necessary.

* Added missing new lines.

* Renamed e2e seed file and only use that one now. THere are no others.

* Some script cleanup.

* Added a check for the E2E environment so as to not pollute system tests.

* Now e2e test server cleanup occurs when the server shuts down.

* Put puts as this is really just for testing.

* Put environment variable in the proper place for runnning bundle exec.

* Added a check to only run for E2E tests.

* Some bash script formatting.

* Removed copy paste irrelevant comments.

* Updated e2e server shutdown message.

* Now a data-testid attribute is used for finding the user account errors panel.

* Made test selectors ignore casing of text.

* Removed prod paranoia check in e2e seed file.

* Refactored spec to use new cy.loginUser(user) command.

* Update app/lib/seeder.rb

Co-authored-by: Michael Kohl <citizen428@dev.to>

* Fixed flakiness that @aitchiss was experiencing.

* Rubocop fix.

* Due to a Cypress issue, fixing cookie clearing with another tweak.

* Bumped the wait time to 500ms if cookies don't clear.

* Added a 'bundle check' to the bin/e2e script as suggested by @katiedavis.

* Removed some white space

Co-authored-by: Michael Kohl <citizen428@dev.to>
2021-01-29 13:34:01 +01:00

114 lines
4.1 KiB
YAML

branches:
only:
- master
language: ruby
cache:
directories:
- vendor/bundle
- ~/.cache
rvm:
- 2.7.2
addons:
postgresql: '10' # Travis does not work out of the box with Postgres 11 yet
chrome: 'stable'
artifacts:
paths:
- $(ls tmp/screenshots/*.png | tr "\n" ":")
- $(ls tmp/csvs/*.csv | tr "\n" ":")
- $(ls cypress/screenshots/*.* | tr "\n" ":")
- $(ls cypress/videos/*.* | tr "\n" ":")
debug: true
services:
- redis
env:
global:
- RAILS_ENV=test
- DATABASE_URL=postgres://postgres@localhost/
# Dummy values needed to verify the app boots via "rails runner"
- APP_PROTOCOL=http://
- APP_DOMAIN=localhost:3000
- HEROKU_APP_URL=practicaldev.herokuapp.com
- SECRET_KEY_BASE=dummydummydummy
- GITHUB_KEY=dummy
- GITHUB_SECRET=dummy
- KNAPSACK_PRO_FIXED_QUEUE_SPLIT=true
- KNAPSACK_PRO_LOG_LEVEL=info
- KNAPSACK_PRO_CI_NODE_TOTAL=3
- COVERAGE_REPORTS_TOTAL=4
- FOREM_OWNER_SECRET="secret" # test secret so e2e tests can run properly.
- ELASTICSEARCH_URL="http://localhost:9200"
install:
- date --rfc-3339=seconds
- nvm install
- pkill -9 -f elasticsearch || true
- curl -s -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-amd64.deb
- sudo dpkg -i --force-confnew elasticsearch-7.5.2-amd64.deb
- sudo sed -i.old 's/-Xms1g/-Xms128m/' /etc/elasticsearch/jvm.options
- sudo sed -i.old 's/-Xmx1g/-Xmx128m/' /etc/elasticsearch/jvm.options
- echo -e '-XX:+DisableExplicitGC\n-Djdk.io.permissionsUseCanonicalPath=true\n-Dlog4j.skipJansi=true\n-server\n' | sudo tee -a /etc/elasticsearch/jvm.options
- sudo chown -R elasticsearch:elasticsearch /etc/default/elasticsearch
- sudo systemctl start elasticsearch
- bundle config set path 'vendor/bundle'
- cp .env_sample .env
- bin/ci-bundle
- yarn install --frozen-lockfile
script:
- bundle exec rails db:create db:schema:load webpacker:compile
- bin/knapsack_pro_rspec
- '[ ! -f .approvals ] || bundle exec approvals verify --ask false'
notifications:
slack:
if: branch = master
on_pull_requests: false
on_success: change
on_failure: always
rooms:
secure: 0cTxjTqAFnfCR9jw7lZFcTrTcil8QKTX4h2dzKKCeWaWpsYcvJsvhREfsdIGwrdChmHHYCveHp84dP3ouMvcXoSYEzTASZpK+nVGw2+E4kh3EbzA49N00RoeM+gnbEla3MtCjVxH7KVznLyV/jVfFoCZR6xYnO+pknZzUZwJzyffnSmAlwsQkw1Dt1FAw/uodfGqiDJjUgZhtQ51KFg74HiBd80iUc8ieg6zAEV4QnlW3YvjrHSJC2+AFblXQ7RVkAok8w3G876yQOXvEfESCV+wlmoXbSlQm7V2awMmY5v23iKMvJRRn7JMxTGzG1x2NvNIFL8NZBM+CcjMJxkDSU7Rc/hxVAbuEEYQdd3VPKmYv3o5jcPYjQY08nbz4OREZtiXMsFVCOLuZaCba2c7Xelr7c0eFOdRpQScN2SQtI039Zw8jUQgni18kiWyD/1CfYFIGUvpTCy8rHN0RCJkb0+wOlo3UjEbVDqCi6x06yQ/367XHc27hzFpfDQprVccCMDHbE47kj2fUsBX+FaocpzwODBMLLXZf/v6Vg/bhVArxAl9GLmWNt8942YVgRzkboR3yAy1mA3wx/1frLURY1C5377dx7LXwhHp/4Od6ms1xTBSEcEIRWPy7wQ0yG8fe9VPNFc0ndCEPnqkF8NLTxOX9w3uQ3wDB78NEyEDni0=
jobs:
include:
- stage: Test
name: "Node 0"
env: KNAPSACK_PRO_CI_NODE_INDEX=0
- stage: Test
name: "Node 1"
env: KNAPSACK_PRO_CI_NODE_INDEX=1
- stage: Test
name: "Node 2"
env: KNAPSACK_PRO_CI_NODE_INDEX=2
- stage: Test
name: "Front-end tests, Storybook, bundle audit, console check, e2e"
script:
- yarn test --colors
- bundle exec rails db:create db:schema:load assets:precompile
- bundle exec bundle-audit check --update --ignore CVE-2015-9284
- bin/test-console-check
- yarn build-storybook
- bundle exec rake data_updates:run # required for at least creating the first admin user in e2e tests.
- bin/e2e-ci
- stage: Deploy
name: Deploy DEV
if: type != pull_request
install: skip
script: skip
after_script: skip
deploy:
provider: heroku
api_key: '$HEROKU_AUTH_TOKEN'
app:
master: practicaldev
after_deploy:
- bash scripts/after_deploy.sh
- stage: Deploy
name: Deploy BenHalpern
if: type != pull_request
install: skip
script: skip
after_script: skip
deploy:
provider: heroku
api_key: '$HEROKU_AUTH_TOKEN'
app:
master: benhalpern-community