npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gurkensalat

v0.0.2

Published

Slices Cucumber tests into parts that can be run on multiple machines.

Downloads

3

Readme

Gurkensalat

Gurkensalat ([ˈɡʊʁkn̩zaˌlaːt], meaning: cucumber salad) slices Cucumber tests into parts that can be run on multiple machines. No communication between machines is necessary.

Installation

Install it alongside your existing @cucumber/cucumber dependency:

npm install --save-dev gurkensalat

Quick start

Use npxto run:

npx gurkensalat

This will test all the features one by one.

To distribute the features to multiple machines, you must also specify the total number of machines and the index (starting with 0) of the machine where Gurkensalat is running.

To distribute the tests to e.g. 2 machines, run the command below on the first machine:

npx gurkensalat 2 0

And on the second machine:

npx gurkensalat 2 1

Environment variables

Instead of using parameters, you can also define environment variables:

  • GURKENSALAT_COUNT: total number of machines
  • GURKENSALAT_INDEX: index (starting with 0) of current machine

Example for the first of two machines:

export GURKENSALAT_COUNT=2
export GURKENSALAT_INDEX=0
npx gurkensalat

By default, Gurkensalat starts Cucumber via the command npx cucumber-js. You can override this command with GURKENSALAT_COMMAND. Please note that an option to save the summary log to a file and the name of a feature file is added to this command. Please make sure to forward this information to Cucumber if you use a wrapper script.

export GURKENSALAT_COMMAND="./wrapper.sh"
npx gurkensalat
# Runs for each feature: ./wrapper.sh --format "summary:<logfile>" <feature file>"

How it works

Gurkensalat searches the features folder and its subfolders for files with the extension .feature. These are the distributed to the given number of machines. All features marked for execution on the current machine are run in sequence.

The summary log is stored next to the feature file. It contains the time needed to test the feature. This information will be used in the future to distribute features more evenly.

If all features have been tested successfully, Gurkensalat returns with exit code 0. Otherwise, exit code 2 is returned.

Persist state

The log files are placed alongside the feature files with the extension .log instead of .feature. Please add them to your source control system. This allows Gurkensalat to take the duration of a feature's test into account when distributing the workload.