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.
See Rakefile.
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.
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.
See features/support/knapsack.rb
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.
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.
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.
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.
See spinach_features/support/env.rb
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.
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.