Skip to content

Commit

Permalink
fixed cli reporter (codeceptjs#2800)
Browse files Browse the repository at this point in the history
  • Loading branch information
DavertMik authored Feb 5, 2021
1 parent 03be1a5 commit 05fe637
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 16 deletions.
26 changes: 16 additions & 10 deletions lib/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const ms = require('ms');
const event = require('./event');
const AssertionFailedError = require('./assert/error');
const output = require('./output');
const { MetaStep } = require('./step');

const cursor = Base.cursor;
let currentMetaStep = [];
Expand Down Expand Up @@ -77,17 +78,22 @@ class Cli extends Base {
});

event.dispatcher.on(event.step.started, (step) => {
output.stepShift = 3;
const printMetaStep = (metaStep) => {
if (!metaStep) return currentMetaStep.shift();
if (currentMetaStep.indexOf(metaStep.toString()) >= 0) return; // step is the same
if (metaStep.metaStep) {
printMetaStep(metaStep.metaStep);
let processingStep = step;
const metaSteps = [];
while (processingStep.metaStep) {
metaSteps.unshift(processingStep.metaStep);
processingStep = processingStep.metaStep;
}
const shift = metaSteps.length;

for (let i = 0; i < Math.max(currentMetaStep.length, metaSteps.length); i++) {
if (currentMetaStep[i] !== metaSteps[i]) {
output.stepShift = 3 + 2 * i;
if (metaSteps[i]) output.step(metaSteps[i]);
}
currentMetaStep.unshift(metaStep.toString());
output.step(metaStep);
};
printMetaStep(step.metaStep);
}
currentMetaStep = metaSteps;
output.stepShift = 3 + 2 * shift;
output.step(step);
});

Expand Down
10 changes: 8 additions & 2 deletions lib/interfaces/gherkin.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,13 @@ module.exports = (text) => {
const metaStep = new Step.MetaStep(null, step.text);
metaStep.actor = step.keyword.trim();
const setMetaStep = (step) => {
if (step.metaStep) step = step.metaStep; // assign metastep to metastep for nested steps
if (step.metaStep) {
if (step.metaStep === metaStep) {
return;
}
setMetaStep(step.metaStep);
return;
}
step.metaStep = metaStep;
};
const fn = matchStep(step.text);
Expand All @@ -46,7 +52,7 @@ module.exports = (text) => {
step.startTime = Date.now();
step.match = fn.line;
event.emit(event.bddStep.before, step);
event.dispatcher.on(event.step.before, setMetaStep);
event.dispatcher.prependListener(event.step.before, setMetaStep);
try {
await fn(...fn.params);
step.status = 'passed';
Expand Down
4 changes: 2 additions & 2 deletions lib/output.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,14 @@ module.exports = {
if (!step) return;
// Avoid to print non-gherkin steps, when gherkin is running for --steps mode
if (outputLevel === 1) {
if (!step.isMetaStep() && step.hasBDDAncestor()) {
if (step.hasBDDAncestor()) {
return;
}
}

let stepLine = step.toString();
if (step.metaStep && outputLevel >= 1) {
this.stepShift += 2;
// this.stepShift += 2;
stepLine = colors.green(truncate(stepLine, this.spaceShift));
}
if (step.comment) {
Expand Down
3 changes: 2 additions & 1 deletion lib/step.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,10 @@ class MetaStep extends Step {
let result;

const registerStep = (step) => {
this.metaStep = null;
step.metaStep = this;
};
event.dispatcher.on(event.step.before, registerStep);
event.dispatcher.prependListener(event.step.before, registerStep);
try {
this.startTime = Date.now();
result = fn.apply(this.context, this.args);
Expand Down
2 changes: 1 addition & 1 deletion lib/within.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function within(context, fn) {
const defineMetaStep = step => step.metaStep = metaStep;
recorder.session.start('within');

event.dispatcher.on(event.step.before, defineMetaStep);
event.dispatcher.prependListener(event.step.before, defineMetaStep);

Object.keys(helpers).forEach((helper) => {
if (helpers[helper]._withinBegin) recorder.add(`[${helper}] start within`, () => helpers[helper]._withinBegin(context));
Expand Down

0 comments on commit 05fe637

Please sign in to comment.