diff --git a/.travis.yml b/.travis.yml index 5d703740..9249e25e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,14 @@ before_script: script: - "./travis_script.sh $TEST_SUITE" env: - - TEST_SUITE=rspec - - TEST_SUITE=linters + global: + - CI_NODE_TOTAL=4 + - TEST_SUITE=rspec + matrix: + - TEST_SUITE=linters + - CI_NODE_INDEX=0 + - CI_NODE_INDEX=1 + - CI_NODE_INDEX=2 + - CI_NODE_INDEX=3 matrix: fast_finish: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bef64aab..e9ef0318 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -86,6 +86,8 @@ We are using [rspec](http://rspec.info/)+[capybara](http://teamcapybara.github.i ```shell vagrant exec bundle exec rspec +# or, in parallel +vagrant exec bundle exec rake knapsack:rspec ``` ### Email Notifications diff --git a/Gemfile b/Gemfile index ebc81fcd..322cb854 100644 --- a/Gemfile +++ b/Gemfile @@ -265,6 +265,8 @@ group :test do gem 'rails-controller-testing' # For managing the environment gem 'climate_control' + # parallel tests + gem 'knapsack' end group :development, :test do diff --git a/Gemfile.lock b/Gemfile.lock index bd534cf9..e3c7189e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -246,6 +246,8 @@ GEM json-schema (2.5.0) addressable (~> 2.3) jwt (1.0.0) + knapsack (1.16.0) + rake launchy (2.4.2) addressable (~> 2.3) leaflet-rails (0.7.4) @@ -619,6 +621,7 @@ DEPENDENCIES jquery-rails jquery-ui-rails (~> 4.2.1) json-schema + knapsack leaflet-rails letter_opener letter_opener_web diff --git a/Rakefile b/Rakefile index f29eb6f1..03eb2ca0 100644 --- a/Rakefile +++ b/Rakefile @@ -5,3 +5,5 @@ require File.expand_path('../config/application', __FILE__) Osem::Application.load_tasks + +Knapsack.load_tasks if defined?(Knapsack) diff --git a/knapsack_rspec_report.json b/knapsack_rspec_report.json new file mode 100644 index 00000000..00f51563 --- /dev/null +++ b/knapsack_rspec_report.json @@ -0,0 +1,115 @@ +{ + "spec/models/registration_spec.rb": 3.216578483581543, + "spec/controllers/admin/ticket_scannings_controller_spec.rb": 0.5347998142242432, + "spec/controllers/api/v1/speakers_controller_spec.rb": 0.883955717086792, + "spec/models/cfp_spec.rb": 1.714848518371582, + "spec/features/versions_spec.rb": 56.760108947753906, + "spec/features/organizer_ability_spec.rb": 10.754348516464233, + "spec/features/organization_spec.rb": 4.349282264709473, + "spec/models/ability_spec.rb": 39.79845595359802, + "spec/features/sponsor_spec.rb": 2.3821427822113037, + "spec/features/commercials_spec.rb": 11.096951484680176, + "spec/helpers/date_time_helper_spec.rb": 0.008153438568115234, + "spec/models/ticket_spec.rb": 2.12540340423584, + "spec/features/registration_periods_spec.rb": 1.8566482067108154, + "spec/controllers/admin/booths_controller_spec.rb": 2.1381421089172363, + "spec/features/rooms_spec.rb": 3.3080310821533203, + "spec/models/schedule_spec.rb": 0.0045070648193359375, + "spec/features/event_types_spec.rb": 0.76450514793396, + "spec/models/conference_spec.rb": 20.320730209350586, + "spec/models/track_spec.rb": 13.991943836212158, + "spec/controllers/conference_registration_controller_spec.rb": 13.657230854034424, + "spec/controllers/users_controller_spec.rb": 0.39937448501586914, + "spec/models/payment_spec.rb": 1.2693791389465332, + "spec/helpers/format_helper_spec.rb": 0.0015518665313720703, + "spec/controllers/physical_ticket_controller_spec.rb": 0.14853787422180176, + "spec/models/program_spec.rb": 5.236976623535156, + "spec/controllers/admin/roles_controller_spec.rb": 1.2742409706115723, + "spec/serializers/room_serializer_spec.rb": 0.005628347396850586, + "spec/controllers/conferences_controller_spec.rb": 0.3906528949737549, + "spec/features/conference_registration_spec.rb": 4.902153015136719, + "spec/features/campaign_spec.rb": 2.423008918762207, + "spec/models/ticket_scanning_spec.rb": 0.09727764129638672, + "spec/controllers/booths_controller_spec.rb": 1.8176827430725098, + "spec/models/ticket_purchase_spec.rb": 0.756523609161377, + "spec/models/sponsor_spec.rb": 0.06131911277770996, + "spec/features/code_of_conduct_spec.rb": 6.754149675369263, + "spec/features/roles_spec.rb": 11.51219367980957, + "spec/models/admin_ability_spec.rb": 651.1406934261322, + "spec/controllers/application_controller_spec.rb": 0.16449427604675293, + "spec/helpers/users_helper_spec.rb": 0.0009031295776367188, + "spec/features/splashpage_spec.rb": 6.503351926803589, + "spec/features/cfp_spec.rb": 4.385206699371338, + "spec/models/role_spec.rb": 0.14975929260253906, + "spec/features/organization_admin_ability_spec.rb": 8.570372819900513, + "spec/models/campaign_spec.rb": 0.49747681617736816, + "spec/features/ticket_purchases_spec.rb": 8.775394678115845, + "spec/features/email_spec.rb": 1.8525207042694092, + "spec/models/physical_ticket_spec.rb": 0.06188058853149414, + "spec/helpers/conference_helper_spec.rb": 0.35794544219970703, + "spec/features/base_controller_spec.rb": 1.0507938861846924, + "spec/features/omniauth_spec.rb": 1.9456074237823486, + "spec/features/track_organizer_ability_spec.rb": 7.0157434940338135, + "spec/features/proposals_spec.rb": 10.35005784034729, + "spec/serializers/conference_serializer_spec.rb": 0.11621999740600586, + "spec/models/comment_spec.rb": 0.011961221694946289, + "spec/features/cfp_ability_spec.rb": 8.337608337402344, + "spec/controllers/api/v1/events_controller_spec.rb": 0.7122371196746826, + "spec/serializers/track_serializer_spec.rb": 0.059462785720825195, + "spec/controllers/schedules_controller_spec.rb": 0.6626288890838623, + "spec/controllers/admin/events_controller_spec.rb": 0.2272028923034668, + "spec/models/email_settings_spec.rb": 0.5617916584014893, + "spec/controllers/admin/event_schedules_controller_spec.rb": 2.14667010307312, + "spec/models/registration_period_spec.rb": 0.5143365859985352, + "spec/models/event_spec.rb": 8.104061126708984, + "spec/controllers/admin/tracks_controller_spec.rb": 8.185055017471313, + "spec/models/booth_spec.rb": 7.238089084625244, + "spec/features/tracks_spec.rb": 15.051470518112183, + "spec/controllers/admin/organizations_controller_spec.rb": 0.7151005268096924, + "spec/features/program_spec.rb": 1.6030263900756836, + "spec/models/commercial_spec.rb": 0.006638050079345703, + "spec/routing/routing_spec.rb": 0.0017058849334716797, + "spec/controllers/tracks_controller_spec.rb": 3.0302350521087646, + "spec/controllers/admin/rooms_controller_spec.rb": 1.7850117683410645, + "spec/models/resource_spec.rb": 0.11144089698791504, + "spec/helpers/application_helper_spec.rb": 2.7778303623199463, + "spec/controllers/api/v1/rooms_controller_spec.rb": 0.1207578182220459, + "spec/features/tickets_spec.rb": 7.62256646156311, + "spec/models/target_spec.rb": 0.7310116291046143, + "spec/helpers/events_helper_spec.rb": 3.576235294342041, + "spec/models/room_spec.rb": 0.046385765075683594, + "spec/features/difficulty_levels_spec.rb": 3.0397679805755615, + "spec/models/event_schedule_spec.rb": 1.4522051811218262, + "spec/features/user_ability_spec.rb": 0.28156256675720215, + "spec/controllers/admin/conferences_controller_spec.rb": 5.404377222061157, + "spec/features/venues_spec.rb": 0.7081923484802246, + "spec/controllers/users/omniauth_callbacks_controller_spec.rb": 0.0032668113708496094, + "spec/controllers/api/v1/tracks_controller_spec.rb": 0.21274399757385254, + "spec/controllers/subscriptions_controller_spec.rb": 0.3864889144897461, + "spec/controllers/admin/sponsorship_levels_controller_spec.rb": 1.7902915477752686, + "spec/controllers/admin/targets_controller_spec.rb": 1.651890754699707, + "spec/features/contact_spec.rb": 1.39925217628479, + "spec/controllers/admin/schedules_controller_spec.rb": 0.5556893348693848, + "spec/serializers/event_serializer_spec.rb": 0.2761070728302002, + "spec/controllers/admin/programs_controller_spec.rb": 0.12646102905273438, + "spec/controllers/admin/versions_controller_spec.rb": 1.8679115772247314, + "spec/models/user_spec.rb": 2.361865997314453, + "spec/controllers/admin/users_controller_spec.rb": 0.5107555389404297, + "spec/models/organization_spec.rb": 0.0039217472076416016, + "spec/controllers/confirmations_controller_spec.rb": 0.05090951919555664, + "spec/controllers/admin/comments_controller_spec.rb": 0.5595676898956299, + "spec/models/event_type_spec.rb": 0.17554306983947754, + "spec/features/lodgings_spec.rb": 6.616101264953613, + "spec/controllers/organizations_controller_spec.rb": 0.967041015625, + "spec/models/sponsorship_level_spec.rb": 0.18370461463928223, + "spec/controllers/proposals_controller_spec.rb": 8.728510618209839, + "spec/mailers/mailbot_spec.rb": 1.2736093997955322, + "spec/features/resource_spec.rb": 0.9196040630340576, + "spec/features/info_desk_ability_spec.rb": 5.8393683433532715, + "spec/features/sponsorship_level_spec.rb": 2.8623433113098145, + "spec/features/conference_spec.rb": 4.4298248291015625, + "spec/controllers/api/v1/conferences_controller_spec.rb": 0.6067855358123779, + "spec/serializers/speaker_serializer_spec.rb": 0.02062392234802246, + "spec/features/volunteers_spec.rb": 3.3659849166870117, + "spec/controllers/admin/registration_periods_controller_spec.rb": 1.344085693359375 +} \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 60e07602..b63e1f87 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,4 +1,5 @@ # This file is copied to spec/ when you run 'rails generate rspec:install' +require 'knapsack' require 'simplecov' if ENV['TRAVIS'] @@ -102,3 +103,4 @@ RSpec.configure do |config| end OmniAuth.config.test_mode = true +Knapsack::Adapters::RSpecAdapter.bind diff --git a/travis_script.sh b/travis_script.sh index 77ca2329..a52f9454 100755 --- a/travis_script.sh +++ b/travis_script.sh @@ -17,7 +17,7 @@ case $TEST_SUITE in bundle exec haml-lint app/views ;; rspec) - bundle exec rspec --color --format documentation + bundle exec rake "knapsack:rspec[--color --format documentation]" ;; *) bundle exec rubocop -Dc .rubocop.yml