
Research
/Security News
Mini Shai-Hulud Campaign Hits Red Hat Cloud Services npm Packages
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.
gherkin-runner
Advanced tools

Run your Gherkin as a runner/flow logic. Simple, Elegant.
const { createContext, runner, parser } = require('gherkin-runner');
const { pickles } = parser(`
Feature: Test Foo bar
Scenario: Is it real?
Given this is first expression
And this is second expression
`);
const context = createContext({ user: "someuser" });
const [scenario1, /* scenario12, ... */] = await runner(expressions, pickles, () => context);
const { worldCreator } = require('gherkin-runner');
const expressions = worldCreator();
expressions.addExpression('Foo is Bar', () => 'FOoooooo!');
expressions.addExpression('Baz is Bar Also', () => 'BaaaZZZZ!');
Resolver in this runner follow schematic of graphql resolver resolver(parent, context, args, info).
*parent & info for now is not really used, may be usefull in the future, planned to use the pickle.
const world = worldCreator();
world.addExpression('foo exists', ($, c) => {
if (!c.foo) {
throw new Error('Foo must be exists');
}
});
world.addExpression('bar exists', ($, c) => {
if (!c.bar) {
throw new Error('bar must be exists');
}
});
world.addExpression('send notif', (_, c) => {
c.notifSent = true;
});
world.addExpression('bla bla bla', (_, c) => {
c.blablabla = true;
});
To use arguments in your expressions, you may use cucumber expressions format. reference: https://cucumber.io/docs/cucumber/cucumber-expressions/
Example:
const world = worldCreator();
world.addExpression('my name is {string}', {
description: 'add name to context',
resolver: ($, context, [name]) => {
context.name = name.slice(1, -1);
},
});
// test it
const context = createContext({});
const name = 'foo bar';
await world.executeStep({ text: `my name is "${name}"` }, context);
expect(context.name).toBe(name);
Some of feature may have more than just a description. maybe you need TnC? or something else to fit in to your features. Extensions may bridge it.
example:
Feature: test feature title
Description:
this can be description
TnC:
this line is TnC too
Scenario: this is scenario title
Given this is first expression
And this is second expression
Then this is third expression
it will be in gherkinDocument.feature.extensions, as following:
expect(gherkinDocument.feature.extensions.description).toMatch(/this can be description/);
expect(gherkinDocument.feature.extensions.TnC).toMatch(/this line is TnC too/);
description always in this lowercase format.
MIT
*ascii art from: https://www.oocities.org/spunk1111/food.htm
FAQs
Run your Gherkin as a runner/flow logic. Simple, Elegant.
The npm package gherkin-runner receives a total of 0 weekly downloads. As such, gherkin-runner popularity was classified as not popular.
We found that gherkin-runner 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.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.

Research
/Security News
The North Korean malware loader hides in a Packagist-listed package and its GitHub branch to fetch and execute remote code in a likely Contagious Interview-style lure.

Security News
The Rust project is moving toward formal rules on LLM use in contributions after months of internal debate over maintainer burden, code quality, and contributor experience.