diff --git a/lib/interfaces/gherkin.js b/lib/interfaces/gherkin.js index d2bdf289a..1549a985f 100644 --- a/lib/interfaces/gherkin.js +++ b/lib/interfaces/gherkin.js @@ -28,7 +28,6 @@ module.exports = (text) => { const runSteps = async (steps) => { for (const step of steps) { - event.emit(event.bddStep.before, step); const metaStep = new Step.MetaStep(null, step.text); metaStep.actor = step.keyword.trim(); const setMetaStep = (step) => { @@ -44,10 +43,19 @@ module.exports = (text) => { if (step.argument.type === 'DataTable') metaStep.comment = `\n${transformTable(step.argument)}`; if (step.argument.content) metaStep.comment = `\n${step.argument.content}`; } + step.startTime = Date.now(); + step.match = fn.line; + event.emit(event.bddStep.before, step); event.dispatcher.on(event.step.before, setMetaStep); try { await fn(...fn.params); + step.status = 'passed'; + } catch (err) { + step.status = 'failed'; + step.err = err; + return err; } finally { + step.endTime = Date.now(); event.dispatcher.removeListener(event.step.before, setMetaStep); } event.emit(event.bddStep.after, step);