runStep method
Future<StepResult>
runStep({
- required String name,
- required Iterable<
String> multiLineStrings, - required dynamic table,
- required TestDependencies dependencies,
- required bool skip,
Implementation
@protected
Future<StepResult> runStep({
required String name,
required Iterable<String> multiLineStrings,
required dynamic table,
required TestDependencies dependencies,
required bool skip,
}) async {
StepResult? result;
try {
final executable = _executableSteps!.firstWhereOrNull(
(s) => s.expression.isMatch(name),
);
if (executable == null) {
final message = 'Step definition not found for text: `$name`';
throw GherkinStepNotDefinedException(message);
}
var parameters = _getStepParameters(
step: name,
multiLineStrings: multiLineStrings,
table: table,
code: executable,
);
await _onBeforeStepRun(
world: dependencies.world,
step: name,
table: table,
multiLineStrings: multiLineStrings,
);
if (skip) {
result = StepResult(
0,
StepExecutionResult.skipped,
resultReason: 'Previous step(s) failed',
);
} else {
for (int i = 0; i < configuration.stepMaxRetries + 1; i++) {
result = await executable.step.run(
dependencies.world,
reporter,
configuration.defaultTimeout,
parameters,
);
if (!_isNegativeResult(result.result) ||
configuration.stepMaxRetries == 0) {
break;
} else {
await Future.delayed(configuration.retryDelay);
}
}
}
} catch (err, st) {
result = ErroredStepResult(
0,
StepExecutionResult.error,
err,
st,
);
}
await _onAfterStepRun(
name,
result!,
dependencies,
);
return result;
}