Docs Navigation

Boosters for Cucumber

Boosters for Cucumber enable you to run specs across many parallel jobs. They come out of the box when they are used on Semaphore. Once Boosters are set up, they are ready to take action in optimizing build times.

  1. Supported versions
  2. How Boosters run your Cucumber scenarios
  3. Customize Cucumber configuration used by Boosters

Supported versions

Boosters officially support Cucumber versions starting from 2.0.0-rc.1 conclusive with 3.0.2.

Boosters may also work with some older versions though we don't make any guarantees. If you encounter any issue, don't hesitate to contact our support team.

How Boosters run your Cucumber scenarios

Test Boosters gem runs your scenarios with cucumber_booster command:

cucumber_booster --job <job>/<job_count>

The command uses split configuration file in order to find the configuration of a job to be run. This file contains distribution of your test files across many jobs. Split configurations for your jobs are located in ~/cucumber_split_cofiguration.json file. Semaphore provides this file to each of the Boosted jobs.

More in detail information about split configurations can be found.

Let's assume to have the following split configuration within ~/cucumber_split_configuration.json:

[
  { "files": ["features/f_1.feature", "features/f_2.feature"] },
  { "files": ["features/f_3.feature", "features/f_4.feature"] },
  { "files": ["features/f_5.feature", "features/f_6.feature"] }
]

And features are run using the cucumber_booster command:

cucumber_booster --job 1/3

Under the hood Boosters invoke Cucumber using the following command:

bundle exec cucumber features/f_1.feature features/f_2.feature

As previously shown, Booster for Cucumber builds and runs Cucumber command which output is formatted as json and redirected to ~/rspec_report.json file.

The report file created contains durations of your test files. It is used to estimate duration for each job in the next build.

Customize Cucumber configuration used by Boosters

To customize Cucumber configuration, you are able to introduce additional profiles within your cucumber.yml file.

Make sure you append these to the default one, since Boosters only run the default profile:

bundle exec cucumber <file_list>

Boosters create separate semaphoreci profile within your cucumber.yml configuration, and appends it to the default one. This way your custom defined configuration stays unmodified. It is handled by our Open Source semaphore_cucumber_booster_config gem.

If you notice any unexpected behaviour in your test suite with Boosters, we encourage you to contact our support team. Though if you think you've found a bug in Boosters gem, don't hesitate to create an issue on GitHub.

Semaphore Docs are open source — Edit on GitHub

Newsletter

Occasional lightweight product and blog updates. Unsubscribe at any time.

2009-2017 © Rendered Text. All rights reserved. Terms of Service, Privacy policy, Security.