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