canvas-lms/Gemfile.d/test.rb

66 lines
2.3 KiB
Ruby
Raw Normal View History

#
# Copyright (C) 2014 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
group :test do
gem 'rails-dom-testing', '2.0.3'
gem 'rails-controller-testing', '1.0.2'
gem 'gergich', '0.2.2', require: false
gem 'dotenv', '2.7.4', require: false
gem 'testingbot', require: false
gem 'brakeman', require: false
gem 'simplecov', '0.15.1', require: false
gem 'docile', '1.1.5', require: false
gem 'simplecov-rcov', '0.2.3', require: false
gem 'puma', '4.0.0'
gem 'rspec', '3.8.0'
gem 'rspec_around_all', '0.2.0'
gem 'rspec-rails', '3.8.2'
gem 'rspec-collection_matchers', '1.1.3'
gem 'shoulda-matchers', '3.1.3'
gem 'rubocop-canvas', require: false, path: 'gems/rubocop-canvas'
gem 'rubocop', '0.52.1', require: false
gem 'rainbow', '3.0.0', require: false
gem 'rubocop-rspec', '1.22.2', require: false
gem 'once-ler', '0.1.4'
gem 'sauce_whisk', '0.1.0'
# Keep this gem synced with docker-compose/seleniumff/Dockerfile
gem 'selenium-webdriver', '3.142.3'
gem 'childprocess', '1.0.1', require: false
gem 'chromedriver-helper', '2.1.0', require: false
selinimum: run the minimum selenium necessary for your commit What is this? ============= Selinimum speeds up selenium by only running the specs it needs to for your commit (iff it can safely determine that). For the purposes of the initial implementation, that means that if your commit ONLY affects: 1. controllers (but not ApplicationController) 2. views (but not shared / layouts) 3. misc whitelisted stuff (images, .md files, etc.) then it will only run the selenium specs that actually exercise those. If your commit touches ANYTHING else (models, lib, etc.), all selenium specs will run. But wait, there's more! ======================= Very soon selinimum will also handle: 1. js/coffee/jsx/hbs (except in the common bundle) 2. scss (except in the common bundle) We already capture which bundles get used by each spec (see Capture), we just need to correlate that with the individual files via a dependency graph (probably using madge and sass-graph) How does it work? ================= The new post-merge selenium build will run all the specs with selinimum capturing enabled. This records any controllers/views/js_bundle/css_bundle that gets used in the course of each selenium spec, and stores a bunch of data in S3. Then when your patchset build runs, it will run Selinimum.minimize (via corresponding tweak in rspect repo) on the list of spec files. If your commit's dependents can be fully inferred and synthesized with the spec dependency data from S3, only the relevant specs will actually be run. Test Plan ========= This commit doesn't actually cause selinimum to run on jenkins; that requires some rspect changes and jenkins config. Refer to the test plan here: https://gerrit.instructure.com/#/c/58088/ Change-Id: I991574c327a3a580c6fdc3ca3797dcfe0490a096 Reviewed-on: https://gerrit.instructure.com/58085 Tested-by: Jenkins Reviewed-by: Simon Williams <simon@instructure.com> Product-Review: Jon Jensen <jon@instructure.com> QA-Review: Jon Jensen <jon@instructure.com>
2015-07-10 03:00:50 +08:00
gem 'selinimum', '0.0.1', require: false, path: 'gems/selinimum'
gem 'test-queue', github: 'instructure/test-queue', ref: 'd35166408df3a5396cd809e85dcba175136a69ba', require: false
gem 'testrailtagging', '0.3.8.4', require: false
gem 'webmock', '3.5.1', require: false
gem 'crack', '0.4.3', require: false
gem 'timecop', '0.9.1'
gem 'jira_ref_parser', '1.0.1'
gem 'headless', '2.3.1', require: false
gem 'escape_code', '0.2', require: false
gem 'hashdiff', '0.3.7'
gem 'luminosity_contrast', '0.2.1'
gem 'pact', '1.24.0'
gem 'pact-messages', '0.2.0'
gem 'pact_broker-client'
gem 'database_cleaner', '~> 1.5', '>= 1.5.3'
end