import { Before, Given, Then } from 'cucumber' import { expect } from 'chai' Before(function () { this.names = [] }) function step (name) { this.names.push(name) } function decorator (f, ...args) { if (args.length > 0) { return function () { f.call(this, args[0]) } } else { return f } } Given('a person with name', decorator(step, 'John')) Given('a person named {word}', decorator(step)) Then('the same function is called for two distinct step definitions', function () { expect(this.names).to.have.lengthOf(2) expect(this.names).to.include.members(['John', 'Jack']) })