execute method

  1. @override
Future<void> execute({
  1. required CancelToken cancelToken,
  2. required TestReport report,
  3. required TestController tester,
})

Executes the step. This will iterate through the List of steps and will await the execution of each one.

Implementation

@override
Future<void> execute({
  required CancelToken cancelToken,
  required TestReport report,
  required TestController tester,
}) async {
  log(
    "$id('$debugLabel')",
    tester: tester,
  );

  var stepNum = 0;
  for (var rawStep in steps) {
    if (cancelToken.cancelled == true) {
      throw Exception('[CANCELLED]: the step has been cancelled.');
    }

    var stepMap = tester.resolveVariable(rawStep);

    if (stepMap == null) {
      log(
        "multi_step('$debugLabel') step: [${stepMap['id']}] [${100 * stepNum ~/ steps.length}%] -- no step",
        tester: tester,
      );
    } else {
      var step = TestStep.fromDynamic(stepMap);
      log(
        "multi_step('$debugLabel') step: [${stepMap['id']}] [${100 * stepNum ~/ steps.length}%] -- executing step",
        tester: tester,
      );
      await tester.executeStep(
        cancelToken: cancelToken,
        report: report,
        step: step,
        subStep: true,
      );
    }
    stepNum++;
  }
  log(
    "multi_step('$debugLabel') -- finished execution",
    tester: tester,
  );
}