From 2c50313aee306f906998517a3f29766888c81166 Mon Sep 17 00:00:00 2001 From: Kamil Tryniszewski Date: Mon, 16 Nov 2020 21:24:46 -0600 Subject: [PATCH] Add status, start/end time, err, and matchline for bddStep event --- lib/interfaces/gherkin.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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);