Skip to content

KnapsackPro/rails-app-with-knapsack

Repository files navigation

Rails app with knapsack

Circle CI

This is example Ruby on Rails app with knapsack gem. Knapsack splits tests across CI nodes and makes sure that tests will run comparable time on each node.

You can read more about free knapsack gem here. You will find there info how to set up your test suite and how to do it on your favorite CI server.

How to load knapsack rake tasks

See Rakefile.

Parallel rspec test suite with knapsack

How to set up knapsack

See spec/spec_helper.rb

Step 1

First generate only once a report knapsack_rspec_report.json on your CI with command:

$ KNAPSACK_GENERATE_REPORT=true bundle exec rspec spec

Add the report into your repository and commit.

Step 2

You can use below command on CI to run tests:

# Run this on first CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:rspec

# Run this on second CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=1 bundle exec rake knapsack:rspec

See .circleci/config.yml to see how we set up CircleCI.

Parallel cucumber test suite with knapsack

How to set up knapsack

See features/support/knapsack.rb

Step 1

First generate only once a report knapsack_cucumber_report.json on your CI with command:

$ KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features

Add the report into your repository and commit.

Step 2

You can use below command on CI to run tests:

# Run this on first CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber

# Run this on second CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=1 bundle exec rake knapsack:cucumber

See .circleci/config.yml to see how we set up CircleCI.

Parallel minitest test suite with knapsack

How to set up knapsack

See test/test_helper.rb

Step 1

First generate only once a report knapsack_minitest_report.json on your CI with command:

$ KNAPSACK_GENERATE_REPORT=true bundle exec rake test

Add the report into your repository and commit.

Step 2

You can use below command on CI to run tests:

# Run this on first CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:minitest

# Run this on second CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=1 bundle exec rake knapsack:minitest

See .circleci/config.yml to see how we set up CircleCI.

Parallel spinach test suite with knapsack

How to set up knapsack

See spinach_features/support/env.rb

Step 1

First generate only once a report knapsack_spinach_report.json on your CI with command:

$ KNAPSACK_GENERATE_REPORT=true bundle exec spinach -f spinach_features

Add the report into your repository and commit.

Step 2

You can use below command on CI to run tests:

# Run this on first CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 KNAPSACK_TEST_FILE_PATTERN="spinach_features/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_features]"

# Run this on second CI server
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=1 KNAPSACK_TEST_FILE_PATTERN="spinach_features/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_features]"

See .circleci/config.yml to see how we set up CircleCI.