
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
cucumber-sweetener
Advanced tools
A small extension for cucumber-js that sweetens your steps with promises and timeouts
A small extension for cucumber-js that sweetens your steps with promises and timeouts. No more callbacks!
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.
Install it with npm:
npm install cucumber-sweetener
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});
}
FAQs
A small extension for cucumber-js that sweetens your steps with promises and timeouts
The npm package cucumber-sweetener receives a total of 1 weekly downloads. As such, cucumber-sweetener popularity was classified as not popular.
We found that cucumber-sweetener demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
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.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.