vest 5.1.4 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -200,25 +200,68 @@
200
200
  useExpireSuiteResultCache();
201
201
  }
202
202
 
203
- var TestStatus;
204
- (function (TestStatus) {
205
- TestStatus["UNTESTED"] = "UNTESTED";
206
- TestStatus["SKIPPED"] = "SKIPPED";
207
- TestStatus["FAILED"] = "FAILED";
208
- TestStatus["WARNING"] = "WARNING";
209
- TestStatus["PASSING"] = "PASSING";
210
- TestStatus["PENDING"] = "PENDING";
211
- TestStatus["CANCELED"] = "CANCELED";
212
- TestStatus["OMITTED"] = "OMITTED";
213
- })(TestStatus || (TestStatus = {}));
214
- var TestAction;
215
- (function (TestAction) {
216
- TestAction["RESET"] = "RESET";
217
- })(TestAction || (TestAction = {}));
218
- function createTestStateMachine() {
219
- return vestUtils.StateMachine(machine);
220
- }
221
- /* eslint-disable sort-keys */
203
+ const CommonStates = {
204
+ PENDING: 'PENDING',
205
+ };
206
+ const State = {
207
+ [CommonStates.PENDING]: CommonStates.PENDING,
208
+ INITIAL: 'INITIAL',
209
+ DONE: 'DONE',
210
+ };
211
+ const machine$1 = {
212
+ initial: State.INITIAL,
213
+ states: {
214
+ [State.DONE]: {},
215
+ [State.INITIAL]: {
216
+ [State.PENDING]: State.PENDING,
217
+ [State.DONE]: State.DONE,
218
+ },
219
+ [State.PENDING]: {
220
+ [State.DONE]: State.DONE,
221
+ },
222
+ },
223
+ };
224
+ function transition(from, to) {
225
+ return CommonStateMachine.staticTransition(from !== null && from !== void 0 ? from : State.INITIAL, to);
226
+ }
227
+ function setDone(isolate) {
228
+ isolate.status = transition(isolate.status, State.DONE);
229
+ }
230
+ function setPending(isolate) {
231
+ isolate.status = transition(isolate.status, State.PENDING);
232
+ }
233
+ const CommonStateMachine = vestUtils.StateMachine(machine$1);
234
+
235
+ var ErrorStrings;
236
+ (function (ErrorStrings) {
237
+ ErrorStrings["HOOK_CALLED_OUTSIDE"] = "hook called outside of a running suite.";
238
+ ErrorStrings["EXPECTED_VEST_TEST"] = "Expected value to be an instance of IsolateTest";
239
+ ErrorStrings["FIELD_NAME_REQUIRED"] = "Field name must be passed";
240
+ ErrorStrings["SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION"] = "Suite must be initialized with a function";
241
+ ErrorStrings["PROMISIFY_REQUIRE_FUNCTION"] = "Vest.Promisify must be called with a function";
242
+ ErrorStrings["PARSER_EXPECT_RESULT_OBJECT"] = "Vest parser: expected argument at position 0 to be Vest's result object.";
243
+ ErrorStrings["WARN_MUST_BE_CALLED_FROM_TEST"] = "Warn must be called from within the body of a test function";
244
+ ErrorStrings["EACH_CALLBACK_MUST_BE_A_FUNCTION"] = "Each must be called with a function";
245
+ ErrorStrings["INVALID_PARAM_PASSED_TO_FUNCTION"] = "Incompatible params passed to {fn_name} function. \"{param}\" must be of type {expected}";
246
+ ErrorStrings["TESTS_CALLED_IN_DIFFERENT_ORDER"] = "Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\n This can happen on one of two reasons:\n 1. You're using if/else statements to conditionally select tests. Instead, use \"skipWhen\".\n 2. You are iterating over a list of tests, and their order changed. Use \"each\" and a custom key prop so that Vest retains their state.";
247
+ ErrorStrings["UNEXPECTED_TEST_REGISTRATION_ERROR"] = "Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.";
248
+ ErrorStrings["UNEXPECTED_TEST_RUN_ERROR"] = "Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.";
249
+ ErrorStrings["INCLUDE_SELF"] = "Trying to call include.when on the same field.";
250
+ })(ErrorStrings || (ErrorStrings = {}));
251
+
252
+ const TestStatus = {
253
+ [CommonStates.PENDING]: CommonStates.PENDING,
254
+ CANCELED: 'CANCELED',
255
+ FAILED: 'FAILED',
256
+ OMITTED: 'OMITTED',
257
+ PASSING: 'PASSING',
258
+ SKIPPED: 'SKIPPED',
259
+ UNTESTED: 'UNTESTED',
260
+ WARNING: 'WARNING',
261
+ };
262
+ const TestAction = {
263
+ RESET: 'RESET',
264
+ };
222
265
  const machine = {
223
266
  initial: TestStatus.UNTESTED,
224
267
  states: {
@@ -252,7 +295,7 @@
252
295
  [TestStatus.OMITTED]: {},
253
296
  },
254
297
  };
255
- /* eslint-enable sort-keys */
298
+ const IsolateTestStateMachine = vestUtils.StateMachine(machine);
256
299
 
257
300
  var Severity;
258
301
  (function (Severity) {
@@ -275,13 +318,22 @@
275
318
  TestSeverity["Warning"] = "warning";
276
319
  })(TestSeverity || (TestSeverity = {}));
277
320
 
278
- const TestStateMachine = createTestStateMachine();
279
321
  class VestTest {
280
322
  // Read
281
323
  static getData(test) {
282
324
  vestUtils.invariant(test.data);
283
325
  return test.data;
284
326
  }
327
+ static is(isolate) {
328
+ return vestjsRuntime.IsolateSelectors.isIsolateType(isolate, VestIsolateType.Test);
329
+ }
330
+ static isX(isolate) {
331
+ vestUtils.invariant(VestTest.is(isolate), ErrorStrings.EXPECTED_VEST_TEST);
332
+ }
333
+ static cast(isolate) {
334
+ VestTest.isX(isolate);
335
+ return isolate;
336
+ }
285
337
  static warns(test) {
286
338
  return VestTest.getData(test).severity === TestSeverity.Warning;
287
339
  }
@@ -331,7 +383,7 @@
331
383
  return vestUtils.isPromise(VestTest.getData(test).asyncTest);
332
384
  }
333
385
  static statusEquals(test, status) {
334
- return VestTest.getData(test).status === status;
386
+ return test.status === status;
335
387
  }
336
388
  // Mutate
337
389
  static setPending(test) {
@@ -364,7 +416,7 @@
364
416
  }
365
417
  static cancel(test) {
366
418
  VestTest.setStatus(test, TestStatus.CANCELED);
367
- VestTest.getData(test).abortController.abort(TestStatus.CANCELED);
419
+ vestjsRuntime.IsolateMutator.abort(test, TestStatus.CANCELED);
368
420
  }
369
421
  static omit(test) {
370
422
  VestTest.setStatus(test, TestStatus.OMITTED);
@@ -373,80 +425,80 @@
373
425
  VestTest.setStatus(test, TestAction.RESET);
374
426
  }
375
427
  static setStatus(test, status, payload) {
376
- VestTest.setData(test, current => (Object.assign(Object.assign({}, current), { status: TestStateMachine.staticTransition(current.status, status, payload) })));
428
+ test.status = IsolateTestStateMachine.staticTransition(test.status, status, payload);
377
429
  }
378
430
  }
379
431
 
380
- function isIsolateTest(isolate) {
381
- return vestjsRuntime.IsolateSelectors.isIsolateType(isolate, VestIsolateType.Test);
382
- }
383
- function isIsolateTestX(isolate) {
384
- vestUtils.invariant(isIsolateTest(isolate));
385
- }
386
- function castIsolateTest(isolate) {
387
- isIsolateTestX(isolate);
388
- return isolate;
389
- }
390
-
391
432
  function nonMatchingFieldName(WithFieldName, fieldName) {
392
433
  return !!fieldName && !matchingFieldName(WithFieldName, fieldName);
393
434
  }
394
435
  function matchingFieldName(WithFieldName, fieldName) {
395
436
  return !!(fieldName && WithFieldName.fieldName === fieldName);
396
437
  }
438
+ function matchesOrHasNoFieldName(WithFieldName, fieldName) {
439
+ if (fieldName) {
440
+ return matchingFieldName(WithFieldName, fieldName);
441
+ }
442
+ return true;
443
+ }
444
+
445
+ class SuiteWalker {
446
+ static hasPending(predicate) {
447
+ const root = SuiteWalker.defaultRoot();
448
+ if (!root) {
449
+ return false;
450
+ }
451
+ return vestjsRuntime.Walker.some(root, vestUtils.Predicates.all(isPendingStatus, predicate !== null && predicate !== void 0 ? predicate : true));
452
+ }
453
+ // Checks whether there are pending isolates in the tree.
454
+ // If a fieldname is provided, will only check tests with a matching fieldname.
455
+ static hasRemainingWithTestNameMatching(fieldName) {
456
+ return SuiteWalker.hasPending(vestUtils.Predicates.any(vestUtils.isNullish(fieldName), vestUtils.Predicates.all(VestTest.is, (testObject) => {
457
+ return matchesOrHasNoFieldName(VestTest.getData(testObject), fieldName);
458
+ })));
459
+ }
460
+ }
461
+ SuiteWalker.defaultRoot = vestjsRuntime.VestRuntime.useAvailableRoot;
462
+ function isPendingStatus(isolate) {
463
+ return isolate.status === CommonStates.PENDING;
464
+ }
397
465
 
398
466
  class TestWalker {
399
467
  static hasNoTests(root = TestWalker.defaultRoot()) {
400
468
  if (!root)
401
469
  return true;
402
- return !vestjsRuntime.Walker.has(root, isIsolateTest);
403
- }
404
- static someIncompleteTests(predicate, root = TestWalker.defaultRoot()) {
405
- if (!root)
406
- return false;
407
- return vestjsRuntime.Walker.some(root, isolate => {
408
- isIsolateTestX(isolate);
409
- return VestTest.isPending(isolate) && predicate(isolate);
410
- }, isIsolateTest);
470
+ return !vestjsRuntime.Walker.has(root, VestTest.is);
411
471
  }
412
472
  static someTests(predicate, root = TestWalker.defaultRoot()) {
413
473
  if (!root)
414
474
  return false;
415
475
  return vestjsRuntime.Walker.some(root, isolate => {
416
- isIsolateTestX(isolate);
476
+ VestTest.isX(isolate);
417
477
  return predicate(isolate);
418
- }, isIsolateTest);
478
+ }, VestTest.is);
419
479
  }
420
480
  static everyTest(predicate, root = TestWalker.defaultRoot()) {
421
481
  if (!root)
422
482
  return false;
423
483
  return vestjsRuntime.Walker.every(root, isolate => {
424
- isIsolateTestX(isolate);
484
+ VestTest.isX(isolate);
425
485
  return predicate(isolate);
426
- }, isIsolateTest);
486
+ }, VestTest.is);
427
487
  }
428
488
  static walkTests(callback, root = TestWalker.defaultRoot()) {
429
489
  if (!root)
430
490
  return;
431
491
  vestjsRuntime.Walker.walk(root, (isolate, breakout) => {
432
- callback(castIsolateTest(isolate), breakout);
433
- }, isIsolateTest);
434
- }
435
- static hasRemainingTests(fieldName) {
436
- return TestWalker.someIncompleteTests(testObject => {
437
- if (fieldName) {
438
- return matchingFieldName(VestTest.getData(testObject), fieldName);
439
- }
440
- return true;
441
- });
492
+ callback(VestTest.cast(isolate), breakout);
493
+ }, VestTest.is);
442
494
  }
443
495
  static pluckTests(predicate, root = TestWalker.defaultRoot()) {
444
496
  if (!root)
445
497
  return;
446
498
  vestjsRuntime.Walker.pluck(root, isolate => {
447
- isIsolateTestX(isolate);
499
+ VestTest.isX(isolate);
448
500
  return predicate(isolate);
449
- }, isIsolateTest);
501
+ }, VestTest.is);
450
502
  }
451
503
  static resetField(fieldName) {
452
504
  TestWalker.walkTests(testObject => {
@@ -520,7 +572,7 @@
520
572
  function useRunFieldCallbacks(fieldName) {
521
573
  const [fieldCallbacks] = useFieldCallbacks();
522
574
  if (fieldName &&
523
- !TestWalker.hasRemainingTests(fieldName) &&
575
+ !SuiteWalker.hasRemainingWithTestNameMatching(fieldName) &&
524
576
  vestUtils.isArray(fieldCallbacks[fieldName])) {
525
577
  vestUtils.callEach(fieldCallbacks[fieldName]);
526
578
  }
@@ -544,14 +596,26 @@
544
596
  }
545
597
  const { fieldName } = VestTest.getData(testObject);
546
598
  useRunFieldCallbacks(fieldName);
547
- if (!TestWalker.hasRemainingTests()) {
548
- // When no more tests are running, emit the done event
549
- VestBus.emit(Events.ALL_RUNNING_TESTS_FINISHED);
550
- }
551
599
  });
552
600
  on(Events.TEST_RUN_STARTED, () => {
553
601
  /* Let's just invalidate the suite cache for now */
554
602
  });
603
+ on(vestjsRuntime.RuntimeEvents.ISOLATE_PENDING, (isolate) => {
604
+ if (VestTest.is(isolate)) {
605
+ VestTest.setPending(isolate);
606
+ }
607
+ setPending(isolate);
608
+ });
609
+ on(vestjsRuntime.RuntimeEvents.ISOLATE_DONE, (isolate) => {
610
+ if (VestTest.is(isolate)) {
611
+ VestBus.emit(Events.TEST_COMPLETED, isolate);
612
+ }
613
+ setDone(isolate);
614
+ if (!SuiteWalker.hasPending()) {
615
+ // When no more tests are running, emit the done event
616
+ VestBus.emit(Events.ALL_RUNNING_TESTS_FINISHED);
617
+ }
618
+ });
555
619
  on(Events.DONE_TEST_OMISSION_PASS, () => {
556
620
  /* We NEED to refresh the cache here. Don't ask */
557
621
  });
@@ -599,23 +663,6 @@
599
663
  }
600
664
  }
601
665
 
602
- var ErrorStrings;
603
- (function (ErrorStrings) {
604
- ErrorStrings["HOOK_CALLED_OUTSIDE"] = "hook called outside of a running suite.";
605
- ErrorStrings["EXPECTED_VEST_TEST"] = "Expected value to be an instance of IsolateTest";
606
- ErrorStrings["FIELD_NAME_REQUIRED"] = "Field name must be passed";
607
- ErrorStrings["SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION"] = "Suite must be initialized with a function";
608
- ErrorStrings["PROMISIFY_REQUIRE_FUNCTION"] = "Vest.Promisify must be called with a function";
609
- ErrorStrings["PARSER_EXPECT_RESULT_OBJECT"] = "Vest parser: expected argument at position 0 to be Vest's result object.";
610
- ErrorStrings["WARN_MUST_BE_CALLED_FROM_TEST"] = "Warn must be called from within the body of a test function";
611
- ErrorStrings["EACH_CALLBACK_MUST_BE_A_FUNCTION"] = "Each must be called with a function";
612
- ErrorStrings["INVALID_PARAM_PASSED_TO_FUNCTION"] = "Incompatible params passed to {fn_name} function. \"{param}\" must be of type {expected}";
613
- ErrorStrings["TESTS_CALLED_IN_DIFFERENT_ORDER"] = "Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\n This can happen on one of two reasons:\n 1. You're using if/else statements to conditionally select tests. Instead, use \"skipWhen\".\n 2. You are iterating over a list of tests, and their order changed. Use \"each\" and a custom key prop so that Vest retains their state.";
614
- ErrorStrings["UNEXPECTED_TEST_REGISTRATION_ERROR"] = "Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.";
615
- ErrorStrings["UNEXPECTED_TEST_RUN_ERROR"] = "Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.";
616
- ErrorStrings["INCLUDE_SELF"] = "Trying to call include.when on the same field.";
617
- })(ErrorStrings || (ErrorStrings = {}));
618
-
619
666
  class IsolateReconciler {
620
667
  static match(_currentNode, _historyNode) {
621
668
  return false;
@@ -968,24 +1015,11 @@
968
1015
  }
969
1016
  // Does the given field have any pending tests that are not optional?
970
1017
  function useHasNonOptionalIncomplete(fieldName) {
971
- return TestWalker.someIncompleteTests(testObject => {
972
- if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {
973
- return false;
974
- }
975
- return !useIsOptionalFieldApplied(fieldName);
976
- });
1018
+ return SuiteWalker.hasPending(vestUtils.Predicates.all(VestTest.is, (testObject) => !nonMatchingFieldName(VestTest.getData(testObject), fieldName), () => !useIsOptionalFieldApplied(fieldName)));
977
1019
  }
978
1020
  // Do the given group/field have any pending tests that are not optional?
979
1021
  function useHasNonOptionalIncompleteByGroup(groupName, fieldName) {
980
- return TestWalker.someIncompleteTests(testObject => {
981
- if (nonMatchingGroupName(testObject, groupName)) {
982
- return false;
983
- }
984
- if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {
985
- return false;
986
- }
987
- return !useIsOptionalFieldApplied(fieldName);
988
- });
1022
+ return SuiteWalker.hasPending(vestUtils.Predicates.all(VestTest.is, (testObject) => !nonMatchingGroupName(testObject, groupName), (testObject) => !nonMatchingFieldName(VestTest.getData(testObject), fieldName), () => !useIsOptionalFieldApplied(fieldName)));
989
1023
  }
990
1024
  // Did all of the tests for the provided field run/omit?
991
1025
  // This makes sure that the fields are not skipped or pending.
@@ -1332,7 +1366,7 @@
1332
1366
 
1333
1367
  class IsolateTestReconciler extends IsolateReconciler {
1334
1368
  static match(currentNode, historyNode) {
1335
- return isIsolateTest(currentNode) && isIsolateTest(historyNode);
1369
+ return VestTest.is(currentNode) && VestTest.is(historyNode);
1336
1370
  }
1337
1371
  static reconcile(currentNode, historyNode) {
1338
1372
  const reconcilerOutput = usePickNode(historyNode, currentNode);
@@ -1346,13 +1380,13 @@
1346
1380
  }
1347
1381
  function handleCollision(newNode, prevNode) {
1348
1382
  if (vestjsRuntime.IsolateInspector.usesKey(newNode)) {
1349
- return castIsolateTest(vestjsRuntime.Reconciler.handleIsolateNodeWithKey(newNode));
1383
+ return VestTest.cast(vestjsRuntime.Reconciler.handleIsolateNodeWithKey(newNode));
1350
1384
  }
1351
1385
  if (vestjsRuntime.Reconciler.dropNextNodesOnReorder(nodeReorderDetected, newNode, prevNode)) {
1352
1386
  throwTestOrderError(newNode, prevNode);
1353
1387
  return newNode;
1354
1388
  }
1355
- if (!isIsolateTest(prevNode)) {
1389
+ if (!VestTest.is(prevNode)) {
1356
1390
  // I believe we cannot actually reach this point.
1357
1391
  // Because it should already be handled by nodeReorderDetected.
1358
1392
  /* istanbul ignore next */
@@ -1370,12 +1404,12 @@
1370
1404
  return prevNode;
1371
1405
  }
1372
1406
  function cancelOverriddenPendingTestOnTestReRun(nextNode, currentNode, prevTestObject) {
1373
- if (nextNode === currentNode && isIsolateTest(currentNode)) {
1407
+ if (nextNode === currentNode && VestTest.is(currentNode)) {
1374
1408
  cancelOverriddenPendingTest(prevTestObject, currentNode);
1375
1409
  }
1376
1410
  }
1377
1411
  function nodeReorderDetected(newNode, prevNode) {
1378
- return isIsolateTest(prevNode) && !isSameProfileTest(prevNode, newNode);
1412
+ return VestTest.is(prevNode) && !isSameProfileTest(prevNode, newNode);
1379
1413
  }
1380
1414
  function throwTestOrderError(newNode, prevNode) {
1381
1415
  if (vestjsRuntime.IsolateInspector.canReorder(newNode)) {
@@ -1383,7 +1417,7 @@
1383
1417
  }
1384
1418
  vestUtils.deferThrow(vestUtils.text(ErrorStrings.TESTS_CALLED_IN_DIFFERENT_ORDER, {
1385
1419
  fieldName: VestTest.getData(newNode).fieldName,
1386
- prevName: isIsolateTest(prevNode)
1420
+ prevName: VestTest.is(prevNode)
1387
1421
  ? VestTest.getData(prevNode).fieldName
1388
1422
  : undefined,
1389
1423
  }));
@@ -1456,8 +1490,7 @@
1456
1490
  function IsolateTestBase() {
1457
1491
  return {
1458
1492
  severity: TestSeverity.Error,
1459
- status: TestStatus.UNTESTED,
1460
- abortController: new AbortController(),
1493
+ status: IsolateTestStateMachine.initial(),
1461
1494
  };
1462
1495
  }
1463
1496
 
@@ -1484,9 +1517,9 @@
1484
1517
  function runSyncTest(testObject) {
1485
1518
  return SuiteContext.run({ currentTest: testObject }, () => {
1486
1519
  let result;
1487
- const { message, testFn, abortController } = VestTest.getData(testObject);
1520
+ const { message, testFn } = VestTest.getData(testObject);
1488
1521
  try {
1489
- result = testFn({ signal: abortController.signal });
1522
+ result = testFn({ signal: testObject.abortController.signal });
1490
1523
  }
1491
1524
  catch (error) {
1492
1525
  if (shouldUseErrorAsMessage(message, error)) {
@@ -1504,7 +1537,6 @@
1504
1537
  * runs test, if async - adds to pending array
1505
1538
  */
1506
1539
  function useRunTest(testObject) {
1507
- const VestBus = vestjsRuntime.Bus.useBus();
1508
1540
  // Run test callback.
1509
1541
  // If a promise is returned, set as async and
1510
1542
  // Move to pending list.
@@ -1514,11 +1546,9 @@
1514
1546
  // in case object is an enforce chain
1515
1547
  if (vestUtils.isPromise(result)) {
1516
1548
  VestTest.getData(testObject).asyncTest = result;
1517
- useRunAsyncTest(testObject);
1518
- }
1519
- else {
1520
- onTestCompleted(VestBus, testObject);
1549
+ return useRunAsyncTest(testObject);
1521
1550
  }
1551
+ onTestCompleted(testObject);
1522
1552
  }
1523
1553
  catch (e) {
1524
1554
  // Probably unreachable. If we get here, it means that
@@ -1537,10 +1567,9 @@
1537
1567
  const { asyncTest, message } = VestTest.getData(testObject);
1538
1568
  if (!vestUtils.isPromise(asyncTest))
1539
1569
  return;
1540
- VestTest.setPending(testObject);
1541
- const VestBus = vestjsRuntime.Bus.useBus();
1570
+ // VestTest.setPending(testObject);
1542
1571
  const done = vestjsRuntime.VestRuntime.persist(() => {
1543
- onTestCompleted(VestBus, testObject);
1572
+ onTestCompleted(testObject);
1544
1573
  });
1545
1574
  const fail = vestjsRuntime.VestRuntime.persist((rejectionMessage) => {
1546
1575
  if (VestTest.isCanceled(testObject)) {
@@ -1552,13 +1581,12 @@
1552
1581
  VestTest.fail(testObject);
1553
1582
  done();
1554
1583
  });
1555
- asyncTest.then(done, fail);
1584
+ return asyncTest.then(done, fail);
1556
1585
  }
1557
- function onTestCompleted(VestBus, testObject) {
1586
+ function onTestCompleted(testObject) {
1558
1587
  // Attempts passing if the test is not already failed.
1559
1588
  // or is not canceled/omitted.
1560
1589
  VestTest.pass(testObject);
1561
- VestBus.emit(Events.TEST_COMPLETED, testObject);
1562
1590
  }
1563
1591
 
1564
1592
  // @vx-allow use-use
@@ -1675,7 +1703,7 @@
1675
1703
  return output;
1676
1704
  }
1677
1705
  const useDoneCallback = () => callback(useCreateSuiteResult());
1678
- if (!TestWalker.hasRemainingTests(fieldName)) {
1706
+ if (!SuiteWalker.hasRemainingWithTestNameMatching(fieldName)) {
1679
1707
  useDoneCallback();
1680
1708
  return output;
1681
1709
  }