Go to file
Jon Jensen 4a83f6b6a2 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-17 03:20:55 +00:00
Gemfile.d selinimum: run the minimum selenium necessary for your commit 2015-07-17 03:20:55 +00:00
app graded discussions retain grading schemes 2015-07-17 02:45:36 +00:00
bin rails 4.0.10 2014-09-16 22:07:39 +00:00
client_apps Rereference client_app symlinks to be more specific 2015-07-02 15:01:27 +00:00
config rails4: fix update/delete_all_with_joins with bind values 2015-07-16 15:45:01 +00:00
db/migrate change shared secret from string to text 2015-07-16 15:44:14 +00:00
doc fix typo 2015-07-15 10:03:01 -06:00
docker-compose spec: ensure we wait for a new page load when doing a get 2015-05-02 13:21:05 +00:00
gems selinimum: run the minimum selenium necessary for your commit 2015-07-17 03:20:55 +00:00
guard A new way of doing css/sass & New Canvas Theme Editor 2015-07-02 22:42:18 +00:00
lib don't blow away the brandConfig someone else is working on 2015-07-16 21:59:10 +00:00
public remove duplicate score display on individual view grade summary 2015-07-16 16:31:07 +00:00
script fix script/canvas_update to work with brandable_css 2015-07-07 20:41:28 +00:00
spec selinimum: run the minimum selenium necessary for your commit 2015-07-17 03:20:55 +00:00
.bowerrc introduced bower to manage js dependencies 2013-12-13 17:45:57 +00:00
.dockerignore docker-compose based dev environment 2015-03-30 20:59:48 +00:00
.fontcustom-manifest.json Update icons for tinymce editor 2015-06-29 19:48:39 +00:00
.gitignore A new way of doing css/sass & New Canvas Theme Editor 2015-07-02 22:42:18 +00:00
.i18nignore bump rails 3 to github branch for ruby 2.2 compatibility 2015-02-18 22:55:20 +00:00
.jshintrc make jslint settings more sane 2012-08-17 11:04:40 -06:00
.rubocop.yml turn off Rubocop::Cop::Style::WhileUntilModifier 2015-04-28 17:20:55 +00:00
.travis.yml more travis builds 2014-02-10 16:23:19 +00:00
CONTRIBUTING.md add a contributing doc for github coolness 2012-09-19 10:16:04 -06:00
COPYRIGHT Initial commit. 2011-01-31 18:57:29 -07:00
Gemfile use eval_gemfile for bundler goodness 2015-02-18 18:15:14 +00:00
Guardfile ensure node_modules are up-to-date for guard & compile_assets 2015-07-16 19:17:54 +00:00
LICENSE Initial commit. 2011-01-31 18:57:29 -07:00
README.md remove travis.ci badge until we are re-enabled 2014-07-01 23:08:00 +00:00
Rakefile remove rails 2 support 2014-08-06 18:16:19 +00:00
bower.json extract smartbanner out of 'common' into it's own bundle 2015-07-07 20:54:15 +00:00
code_of_conduct.md contributor code of conduct 2014-12-23 18:13:59 +00:00
config.ru start adding rails 3.0 support 2013-03-22 19:08:40 +00:00
docker-compose.yml allow *.canvas.docker in the docker-compose dev environment 2015-04-23 16:47:09 +00:00
gulpfile.babel.js A new way of doing css/sass & New Canvas Theme Editor 2015-07-02 22:42:18 +00:00
karma.conf.js address a number of issues with the js test suite 2015-02-20 16:35:17 +00:00
package.json ThemeEditor: make variables that default to another work 2015-07-15 21:51:02 +00:00

README.md

Canvas LMS

Canvas is a new, open-source LMS by Instructure Inc. It is released under the AGPLv3 license for use by anyone interested in learning more about or using learning management systems.

Please see our main wiki page for more information

Installation

Detailed instructions for installation and configuration of Canvas are provided on our wiki.