Socket
Socket
Sign inDemoInstall

cucumber-sweetener

Package Overview
Dependencies
22
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    cucumber-sweetener

A small extension for cucumber-js that sweetens your steps with promises and timeouts


Version published
Weekly downloads
1
decreased by-75%
Maintainers
1
Install size
4.96 MB
Created
Weekly downloads
 

Readme

Source

cucumber-sweetener

A small extension for cucumber-js that sweetens your steps with promises and timeouts. No more callbacks!

Sweet as a cucumber

Without cucumber-sweetener, you have to handle callbacks manually, even if you use an API which returns promises:

this.Then(/^the user '([^']*)' and the user '([^']*)' should be connected$/, 
function(id1, id2, callback) {
	var user1 = this.getUser(id1).waitForConnection();
	var user2 = this.getUser(id2).waitForConnection();
	q.all([user1, user2]).then(function() {
		callback();
	}).fail(function(error) {
		callback.fail(error);
	});
});

With sweet steps, if you don't want to call your callbacks manually, you don't have to. You can simply return a promise - this extension will call the appropriate callbacks for you:

Then(/^the user '([^']*)' and the user '([^']*)' should be connected$/, function(id1, id2) {
	var user1 = this.getUser(id1).waitForConnection();
	var user2 = this.getUser(id2).waitForConnection();
	return q.all([user1, user2]);
});

What happens when a promise will not be resolved? With pure cucumber-js, the execution would hang infinitely. With sweet steps, you can specify a timeout for the step execution time if you want:

Then(/^the user '([^']*)' and the user '([^']*)' should be connected$/, function(id1, id2) {
  ...
}, {timeout: 5000}); // No more hanging tests! After 5 seconds this step would fail.

Installation

Install it with npm:

npm install cucumber-sweetener

Usage

Create a JavaScript file as a support file under the support subfolder. Files under the support subfolder are always loaded first by cucumber-js. So if you load this extension here, you can use the sweet steps throughout your project. For example if you have a support file containing your event hooks, you can insert the following code to setup cucumber-sweetener:

var sweetener = require('cucumber-sweetener');

var eventHooks = function () {
  sweetener.sweeten(this, {timeout: 1000});// global timeout for steps where are no timeout
  
  // after you called .sweeten(), you can use the supported sweetened steps
  After(function() {
    return this.somePromise();
	}, {timeout: 4000});
}

Supported steps

  • Given, When, Then
  • Before, After

Keywords

FAQs

Last updated on 15 Jun 2015

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc