internalRunScreenTest static method

Future<AFScreenID> internalRunScreenTest(
  1. AFScreenTestID screenTestId,
  2. AFSingleScreenTestExecute sse,
  3. List<Object?>? params
)

Implementation

static Future<AFScreenID> internalRunScreenTest(AFScreenTestID screenTestId, AFSingleScreenTestExecute sse, List<Object?>? params ) async {
  final screenTest = AFibF.g.screenTests.findById(screenTestId);
  var screenId;
  var testId;
  var body;
  if(screenTest != null) {
    screenId = screenTest.createNavigatePush().screenId;
    body = screenTest.body;
    testId = body.screenId;
  } else {
    // this might be a re-usable screen test.
    var reusable = AFibF.g.screenTests.findReusable(screenTestId);
    if(reusable == null) {
      for(final uiTests in AFibF.g.thirdPartyUITests.values) {
        reusable = uiTests.afScreenTests.findReusable(screenTestId);
        if(reusable != null) {
          break;
        }
      }

      if(reusable == null) {
        throw AFException("Screen test $screenTestId is not defined");
      }
    }
    screenId = reusable.prototype.screenIdCreator!();
    testId = reusable.id;
    body = AFSingleScreenPrototypeBody.createReusable(screenTestId, body: reusable.body, params: params ?? <Object>[]);
  }

  sse.pushScreen(screenId);
  sse.startSection(testId);
  await body.run(sse);
  sse.endSection();
  sse.popScreen();
  return screenId;
}