diff --git a/__tests__/__outputs__/jest-test-results.md b/__tests__/__outputs__/jest-test-results.md
index 5b154f8..25dd567 100644
--- a/__tests__/__outputs__/jest-test-results.md
+++ b/__tests__/__outputs__/jest-test-results.md
@@ -6,406 +6,884 @@
**4239** tests were completed in **166s** with **4207** passed, **2** failed and **30** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|e2e/__tests__/asyncAndCallback.test.ts|1 ✅|||746ms|
-|e2e/__tests__/asyncRegenerator.test.ts|1 ✅|||4s|
-|e2e/__tests__/autoClearMocks.test.ts|2 ✅|||2s|
-|e2e/__tests__/autoResetMocks.test.ts|2 ✅|||2s|
-|e2e/__tests__/autoRestoreMocks.test.ts|2 ✅|||2s|
-|e2e/__tests__/babelPluginJestHoist.test.ts|1 ✅|||6s|
-|e2e/__tests__/badSourceMap.test.ts|1 ✅|||858ms|
-|e2e/__tests__/beforeAllFiltered.ts|1 ✅|||958ms|
-|e2e/__tests__/beforeEachQueue.ts|1 ✅||1 ⚪|55ms|
-|e2e/__tests__/callDoneTwice.test.ts|1 ✅|||882ms|
-|e2e/__tests__/chaiAssertionLibrary.ts|1 ✅|||2s|
-|e2e/__tests__/circularInequality.test.ts|1 ✅|||1s|
-|e2e/__tests__/circusConcurrentEach.test.ts|2 ✅|||2s|
-|e2e/__tests__/circusDeclarationErrors.test.ts|1 ✅|||869ms|
-|e2e/__tests__/clearCache.test.ts|2 ✅|||1s|
-|e2e/__tests__/cliHandlesExactFilenames.test.ts|2 ✅|||1s|
-|e2e/__tests__/compareDomNodes.test.ts|1 ✅|||1s|
-|e2e/__tests__/config.test.ts|6 ✅|||4s|
-|e2e/__tests__/console.test.ts|7 ✅|||8s|
-|e2e/__tests__/consoleAfterTeardown.test.ts|1 ✅|||1s|
-|e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts|1 ✅|||793ms|
-|e2e/__tests__/coverageHandlebars.test.ts|1 ✅|||2s|
-|e2e/__tests__/coverageRemapping.test.ts|1 ✅|||13s|
-|e2e/__tests__/coverageReport.test.ts|12 ✅|||22s|
-|e2e/__tests__/coverageThreshold.test.ts|5 ✅|||5s|
-|e2e/__tests__/coverageTransformInstrumented.test.ts|1 ✅|||5s|
-|e2e/__tests__/coverageWithoutTransform.test.ts|1 ✅|||1s|
-|e2e/__tests__/createProcessObject.test.ts|1 ✅|||908ms|
-|e2e/__tests__/customInlineSnapshotMatchers.test.ts|1 ✅|||2s|
-|e2e/__tests__/customMatcherStackTrace.test.ts|2 ✅|||2s|
-|e2e/__tests__/customReporters.test.ts|9 ✅|||7s|
-|e2e/__tests__/customResolver.test.ts|1 ✅|||826ms|
-|e2e/__tests__/customTestSequencers.test.ts|3 ✅|||3s|
-|e2e/__tests__/debug.test.ts|1 ✅|||899ms|
-|e2e/__tests__/declarationErrors.test.ts|3 ✅|||2s|
-|e2e/__tests__/dependencyClash.test.ts|1 ✅|||833ms|
-|e2e/__tests__/detectOpenHandles.ts|8 ✅|||8s|
-|e2e/__tests__/domDiffing.test.ts|1 ✅|||1s|
-|e2e/__tests__/doneInHooks.test.ts|1 ✅|||855ms|
-|e2e/__tests__/dynamicRequireDependencies.ts|1 ✅|||847ms|
-|e2e/__tests__/each.test.ts|7 ✅|||5s|
-|e2e/__tests__/emptyDescribeWithHooks.test.ts|4 ✅|||3s|
-|e2e/__tests__/emptySuiteError.test.ts|1 ✅|||885ms|
-|e2e/__tests__/env.test.ts|6 ✅|||5s|
-|e2e/__tests__/environmentAfterTeardown.test.ts|1 ✅|||892ms|
-|e2e/__tests__/errorOnDeprecated.test.ts|1 ✅||24 ⚪|56ms|
-|e2e/__tests__/esmConfigFile.test.ts|3 ✅|||526ms|
-|e2e/__tests__/executeTestsOnceInMpr.ts|1 ✅|||976ms|
-|e2e/__tests__/existentRoots.test.ts|4 ✅|||627ms|
-|e2e/__tests__/expectAsyncMatcher.test.ts|2 ✅|||3s|
-|e2e/__tests__/expectInVm.test.ts|1 ✅|||2s|
-|e2e/__tests__/extraGlobals.test.ts|1 ✅|||1s|
-|e2e/__tests__/failureDetailsProperty.test.ts|1 ✅|||907ms|
-|e2e/__tests__/failures.test.ts|7 ✅|||10s|
-|e2e/__tests__/fakePromises.test.ts|2 ✅|||2s|
-|e2e/__tests__/fatalWorkerError.test.ts|1 ✅|||3s|
-|e2e/__tests__/filter.test.ts|7 ✅|||5s|
-|e2e/__tests__/findRelatedFiles.test.ts|5 ✅|||6s|
-|e2e/__tests__/focusedTests.test.ts|1 ✅|||888ms|
-|e2e/__tests__/forceExit.test.ts|1 ✅|||2s|
-|e2e/__tests__/generatorMock.test.ts|1 ✅|||1s|
-|e2e/__tests__/global-mutation.test.ts|1 ✅|||40ms|
-|e2e/__tests__/global.test.ts|1 ✅|||31ms|
-|e2e/__tests__/globals.test.ts|10 ✅|||8s|
-|e2e/__tests__/globalSetup.test.ts|10 ✅|||14s|
-|e2e/__tests__/globalTeardown.test.ts|7 ✅|||12s|
-|e2e/__tests__/hasteMapMockChanged.test.ts|1 ✅|||379ms|
-|e2e/__tests__/hasteMapSha1.test.ts|1 ✅|||298ms|
-|e2e/__tests__/hasteMapSize.test.ts|2 ✅|||397ms|
-|e2e/__tests__/importedGlobals.test.ts|1 ✅|||1s|
-|e2e/__tests__/injectGlobals.test.ts|2 ✅|||2s|
-|e2e/__tests__/jasmineAsync.test.ts|15 ✅|||28s|
-|e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts|1 ✅||1 ⚪|72ms|
-|e2e/__tests__/jest.config.js.test.ts|3 ✅|||2s|
-|e2e/__tests__/jest.config.ts.test.ts|5 ✅|||14s|
+|[e2e/__tests__/asyncAndCallback.test.ts](#user-content-r0s0)|1 ✅|||746ms|
+|[e2e/__tests__/asyncRegenerator.test.ts](#user-content-r0s1)|1 ✅|||4s|
+|[e2e/__tests__/autoClearMocks.test.ts](#user-content-r0s2)|2 ✅|||2s|
+|[e2e/__tests__/autoResetMocks.test.ts](#user-content-r0s3)|2 ✅|||2s|
+|[e2e/__tests__/autoRestoreMocks.test.ts](#user-content-r0s4)|2 ✅|||2s|
+|[e2e/__tests__/babelPluginJestHoist.test.ts](#user-content-r0s5)|1 ✅|||6s|
+|[e2e/__tests__/badSourceMap.test.ts](#user-content-r0s6)|1 ✅|||858ms|
+|[e2e/__tests__/beforeAllFiltered.ts](#user-content-r0s7)|1 ✅|||958ms|
+|[e2e/__tests__/beforeEachQueue.ts](#user-content-r0s8)|1 ✅||1 ⚪|55ms|
+|[e2e/__tests__/callDoneTwice.test.ts](#user-content-r0s9)|1 ✅|||882ms|
+|[e2e/__tests__/chaiAssertionLibrary.ts](#user-content-r0s10)|1 ✅|||2s|
+|[e2e/__tests__/circularInequality.test.ts](#user-content-r0s11)|1 ✅|||1s|
+|[e2e/__tests__/circusConcurrentEach.test.ts](#user-content-r0s12)|2 ✅|||2s|
+|[e2e/__tests__/circusDeclarationErrors.test.ts](#user-content-r0s13)|1 ✅|||869ms|
+|[e2e/__tests__/clearCache.test.ts](#user-content-r0s14)|2 ✅|||1s|
+|[e2e/__tests__/cliHandlesExactFilenames.test.ts](#user-content-r0s15)|2 ✅|||1s|
+|[e2e/__tests__/compareDomNodes.test.ts](#user-content-r0s16)|1 ✅|||1s|
+|[e2e/__tests__/config.test.ts](#user-content-r0s17)|6 ✅|||4s|
+|[e2e/__tests__/console.test.ts](#user-content-r0s18)|7 ✅|||8s|
+|[e2e/__tests__/consoleAfterTeardown.test.ts](#user-content-r0s19)|1 ✅|||1s|
+|[e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts](#user-content-r0s20)|1 ✅|||793ms|
+|[e2e/__tests__/coverageHandlebars.test.ts](#user-content-r0s21)|1 ✅|||2s|
+|[e2e/__tests__/coverageRemapping.test.ts](#user-content-r0s22)|1 ✅|||13s|
+|[e2e/__tests__/coverageReport.test.ts](#user-content-r0s23)|12 ✅|||22s|
+|[e2e/__tests__/coverageThreshold.test.ts](#user-content-r0s24)|5 ✅|||5s|
+|[e2e/__tests__/coverageTransformInstrumented.test.ts](#user-content-r0s25)|1 ✅|||5s|
+|[e2e/__tests__/coverageWithoutTransform.test.ts](#user-content-r0s26)|1 ✅|||1s|
+|[e2e/__tests__/createProcessObject.test.ts](#user-content-r0s27)|1 ✅|||908ms|
+|[e2e/__tests__/customInlineSnapshotMatchers.test.ts](#user-content-r0s28)|1 ✅|||2s|
+|[e2e/__tests__/customMatcherStackTrace.test.ts](#user-content-r0s29)|2 ✅|||2s|
+|[e2e/__tests__/customReporters.test.ts](#user-content-r0s30)|9 ✅|||7s|
+|[e2e/__tests__/customResolver.test.ts](#user-content-r0s31)|1 ✅|||826ms|
+|[e2e/__tests__/customTestSequencers.test.ts](#user-content-r0s32)|3 ✅|||3s|
+|[e2e/__tests__/debug.test.ts](#user-content-r0s33)|1 ✅|||899ms|
+|[e2e/__tests__/declarationErrors.test.ts](#user-content-r0s34)|3 ✅|||2s|
+|[e2e/__tests__/dependencyClash.test.ts](#user-content-r0s35)|1 ✅|||833ms|
+|[e2e/__tests__/detectOpenHandles.ts](#user-content-r0s36)|8 ✅|||8s|
+|[e2e/__tests__/domDiffing.test.ts](#user-content-r0s37)|1 ✅|||1s|
+|[e2e/__tests__/doneInHooks.test.ts](#user-content-r0s38)|1 ✅|||855ms|
+|[e2e/__tests__/dynamicRequireDependencies.ts](#user-content-r0s39)|1 ✅|||847ms|
+|[e2e/__tests__/each.test.ts](#user-content-r0s40)|7 ✅|||5s|
+|[e2e/__tests__/emptyDescribeWithHooks.test.ts](#user-content-r0s41)|4 ✅|||3s|
+|[e2e/__tests__/emptySuiteError.test.ts](#user-content-r0s42)|1 ✅|||885ms|
+|[e2e/__tests__/env.test.ts](#user-content-r0s43)|6 ✅|||5s|
+|[e2e/__tests__/environmentAfterTeardown.test.ts](#user-content-r0s44)|1 ✅|||892ms|
+|[e2e/__tests__/errorOnDeprecated.test.ts](#user-content-r0s45)|1 ✅||24 ⚪|56ms|
+|[e2e/__tests__/esmConfigFile.test.ts](#user-content-r0s46)|3 ✅|||526ms|
+|[e2e/__tests__/executeTestsOnceInMpr.ts](#user-content-r0s47)|1 ✅|||976ms|
+|[e2e/__tests__/existentRoots.test.ts](#user-content-r0s48)|4 ✅|||627ms|
+|[e2e/__tests__/expectAsyncMatcher.test.ts](#user-content-r0s49)|2 ✅|||3s|
+|[e2e/__tests__/expectInVm.test.ts](#user-content-r0s50)|1 ✅|||2s|
+|[e2e/__tests__/extraGlobals.test.ts](#user-content-r0s51)|1 ✅|||1s|
+|[e2e/__tests__/failureDetailsProperty.test.ts](#user-content-r0s52)|1 ✅|||907ms|
+|[e2e/__tests__/failures.test.ts](#user-content-r0s53)|7 ✅|||10s|
+|[e2e/__tests__/fakePromises.test.ts](#user-content-r0s54)|2 ✅|||2s|
+|[e2e/__tests__/fatalWorkerError.test.ts](#user-content-r0s55)|1 ✅|||3s|
+|[e2e/__tests__/filter.test.ts](#user-content-r0s56)|7 ✅|||5s|
+|[e2e/__tests__/findRelatedFiles.test.ts](#user-content-r0s57)|5 ✅|||6s|
+|[e2e/__tests__/focusedTests.test.ts](#user-content-r0s58)|1 ✅|||888ms|
+|[e2e/__tests__/forceExit.test.ts](#user-content-r0s59)|1 ✅|||2s|
+|[e2e/__tests__/generatorMock.test.ts](#user-content-r0s60)|1 ✅|||1s|
+|[e2e/__tests__/global-mutation.test.ts](#user-content-r0s61)|1 ✅|||40ms|
+|[e2e/__tests__/global.test.ts](#user-content-r0s62)|1 ✅|||31ms|
+|[e2e/__tests__/globals.test.ts](#user-content-r0s63)|10 ✅|||8s|
+|[e2e/__tests__/globalSetup.test.ts](#user-content-r0s64)|10 ✅|||14s|
+|[e2e/__tests__/globalTeardown.test.ts](#user-content-r0s65)|7 ✅|||12s|
+|[e2e/__tests__/hasteMapMockChanged.test.ts](#user-content-r0s66)|1 ✅|||379ms|
+|[e2e/__tests__/hasteMapSha1.test.ts](#user-content-r0s67)|1 ✅|||298ms|
+|[e2e/__tests__/hasteMapSize.test.ts](#user-content-r0s68)|2 ✅|||397ms|
+|[e2e/__tests__/importedGlobals.test.ts](#user-content-r0s69)|1 ✅|||1s|
+|[e2e/__tests__/injectGlobals.test.ts](#user-content-r0s70)|2 ✅|||2s|
+|[e2e/__tests__/jasmineAsync.test.ts](#user-content-r0s71)|15 ✅|||28s|
+|[e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts](#user-content-r0s72)|1 ✅||1 ⚪|72ms|
+|[e2e/__tests__/jest.config.js.test.ts](#user-content-r0s73)|3 ✅|||2s|
+|[e2e/__tests__/jest.config.ts.test.ts](#user-content-r0s74)|5 ✅|||14s|
|[e2e/__tests__/jestChangedFiles.test.ts](#user-content-r0s75)|9 ✅|1 ❌||9s|
-|e2e/__tests__/jestEnvironmentJsdom.test.ts|1 ✅|||2s|
-|e2e/__tests__/jestRequireActual.test.ts|1 ✅|||2s|
-|e2e/__tests__/jestRequireMock.test.ts|1 ✅|||2s|
-|e2e/__tests__/json.test.ts|2 ✅|||29ms|
-|e2e/__tests__/jsonReporter.test.ts|2 ✅|||2s|
-|e2e/__tests__/lifecycles.ts|1 ✅|||861ms|
-|e2e/__tests__/listTests.test.ts|2 ✅|||945ms|
-|e2e/__tests__/locationInResults.test.ts|2 ✅|||2s|
-|e2e/__tests__/logHeapUsage.test.ts|1 ✅|||884ms|
-|e2e/__tests__/mockNames.test.ts|8 ✅|||7s|
-|e2e/__tests__/modernFakeTimers.test.ts|2 ✅|||2s|
-|e2e/__tests__/moduleNameMapper.test.ts|5 ✅|||5s|
-|e2e/__tests__/moduleParentNullInTest.ts|1 ✅|||886ms|
-|e2e/__tests__/multiProjectRunner.test.ts|14 ✅|||16s|
-|e2e/__tests__/nativeAsyncMock.test.ts|1 ✅|||55ms|
-|e2e/__tests__/nativeEsm.test.ts|2 ✅||1 ⚪|905ms|
-|e2e/__tests__/nativeEsmTypescript.test.ts|1 ✅|||956ms|
-|e2e/__tests__/nestedEventLoop.test.ts|1 ✅|||1s|
-|e2e/__tests__/nestedTestDefinitions.test.ts|4 ✅|||5s|
-|e2e/__tests__/nodePath.test.ts|1 ✅|||866ms|
-|e2e/__tests__/noTestFound.test.ts|2 ✅|||1s|
-|e2e/__tests__/noTestsFound.test.ts|5 ✅|||3s|
+|[e2e/__tests__/jestEnvironmentJsdom.test.ts](#user-content-r0s76)|1 ✅|||2s|
+|[e2e/__tests__/jestRequireActual.test.ts](#user-content-r0s77)|1 ✅|||2s|
+|[e2e/__tests__/jestRequireMock.test.ts](#user-content-r0s78)|1 ✅|||2s|
+|[e2e/__tests__/json.test.ts](#user-content-r0s79)|2 ✅|||29ms|
+|[e2e/__tests__/jsonReporter.test.ts](#user-content-r0s80)|2 ✅|||2s|
+|[e2e/__tests__/lifecycles.ts](#user-content-r0s81)|1 ✅|||861ms|
+|[e2e/__tests__/listTests.test.ts](#user-content-r0s82)|2 ✅|||945ms|
+|[e2e/__tests__/locationInResults.test.ts](#user-content-r0s83)|2 ✅|||2s|
+|[e2e/__tests__/logHeapUsage.test.ts](#user-content-r0s84)|1 ✅|||884ms|
+|[e2e/__tests__/mockNames.test.ts](#user-content-r0s85)|8 ✅|||7s|
+|[e2e/__tests__/modernFakeTimers.test.ts](#user-content-r0s86)|2 ✅|||2s|
+|[e2e/__tests__/moduleNameMapper.test.ts](#user-content-r0s87)|5 ✅|||5s|
+|[e2e/__tests__/moduleParentNullInTest.ts](#user-content-r0s88)|1 ✅|||886ms|
+|[e2e/__tests__/multiProjectRunner.test.ts](#user-content-r0s89)|14 ✅|||16s|
+|[e2e/__tests__/nativeAsyncMock.test.ts](#user-content-r0s90)|1 ✅|||55ms|
+|[e2e/__tests__/nativeEsm.test.ts](#user-content-r0s91)|2 ✅||1 ⚪|905ms|
+|[e2e/__tests__/nativeEsmTypescript.test.ts](#user-content-r0s92)|1 ✅|||956ms|
+|[e2e/__tests__/nestedEventLoop.test.ts](#user-content-r0s93)|1 ✅|||1s|
+|[e2e/__tests__/nestedTestDefinitions.test.ts](#user-content-r0s94)|4 ✅|||5s|
+|[e2e/__tests__/nodePath.test.ts](#user-content-r0s95)|1 ✅|||866ms|
+|[e2e/__tests__/noTestFound.test.ts](#user-content-r0s96)|2 ✅|||1s|
+|[e2e/__tests__/noTestsFound.test.ts](#user-content-r0s97)|5 ✅|||3s|
|[e2e/__tests__/onlyChanged.test.ts](#user-content-r0s98)|8 ✅|1 ❌||22s|
-|e2e/__tests__/onlyFailuresNonWatch.test.ts|1 ✅|||3s|
-|e2e/__tests__/overrideGlobals.test.ts|2 ✅|||2s|
-|e2e/__tests__/pnp.test.ts|1 ✅|||3s|
-|e2e/__tests__/presets.test.ts|2 ✅|||2s|
-|e2e/__tests__/processExit.test.ts|1 ✅|||1s|
-|e2e/__tests__/promiseReject.test.ts|1 ✅|||967ms|
-|e2e/__tests__/regexCharInPath.test.ts|1 ✅|||962ms|
-|e2e/__tests__/requireAfterTeardown.test.ts|1 ✅|||921ms|
-|e2e/__tests__/requireMain.test.ts|1 ✅|||1s|
-|e2e/__tests__/requireMainAfterCreateRequire.test.ts|1 ✅|||966ms|
-|e2e/__tests__/requireMainIsolateModules.test.ts|1 ✅|||976ms|
-|e2e/__tests__/requireMainResetModules.test.ts|2 ✅|||2s|
-|e2e/__tests__/requireV8Module.test.ts|1 ✅|||30ms|
-|e2e/__tests__/resetModules.test.ts|1 ✅|||926ms|
-|e2e/__tests__/resolve.test.ts|1 ✅|||2s|
-|e2e/__tests__/resolveGetPaths.test.ts|1 ✅|||1s|
-|e2e/__tests__/resolveNodeModule.test.ts|1 ✅|||943ms|
-|e2e/__tests__/resolveNoFileExtensions.test.ts|2 ✅|||1s|
-|e2e/__tests__/resolveWithPaths.test.ts|1 ✅|||1s|
-|e2e/__tests__/runProgrammatically.test.ts|2 ✅|||575ms|
-|e2e/__tests__/runTestsByPath.test.ts|1 ✅|||2s|
-|e2e/__tests__/runtimeInternalModuleRegistry.test.ts|1 ✅|||1s|
-|e2e/__tests__/selectProjects.test.ts|18 ✅|||5s|
-|e2e/__tests__/setImmediate.test.ts|1 ✅|||904ms|
-|e2e/__tests__/setupFilesAfterEnvConfig.test.ts|2 ✅|||2s|
-|e2e/__tests__/showConfig.test.ts|1 ✅|||195ms|
-|e2e/__tests__/skipBeforeAfterAll.test.ts|1 ✅|||1s|
-|e2e/__tests__/snapshot-unknown.test.ts|1 ✅|||838ms|
-|e2e/__tests__/snapshot.test.ts|9 ✅|||14s|
-|e2e/__tests__/snapshotMockFs.test.ts|1 ✅|||883ms|
-|e2e/__tests__/snapshotResolver.test.ts|1 ✅|||823ms|
-|e2e/__tests__/snapshotSerializers.test.ts|2 ✅|||2s|
-|e2e/__tests__/stackTrace.test.ts|7 ✅|||5s|
-|e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts|1 ✅|||899ms|
-|e2e/__tests__/stackTraceSourceMaps.test.ts|1 ✅|||2s|
-|e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts|1 ✅|||2s|
-|e2e/__tests__/supportsDashedArgs.ts|2 ✅|||968ms|
-|e2e/__tests__/symbol.test.ts|1 ✅|||49ms|
-|e2e/__tests__/testEnvironment.test.ts|1 ✅|||2s|
-|e2e/__tests__/testEnvironmentAsync.test.ts|1 ✅|||1s|
-|e2e/__tests__/testEnvironmentCircus.test.ts|1 ✅|||2s|
-|e2e/__tests__/testEnvironmentCircusAsync.test.ts|1 ✅|||2s|
-|e2e/__tests__/testFailureExitCode.test.ts|2 ✅|||4s|
-|e2e/__tests__/testInRoot.test.ts|1 ✅|||1s|
-|e2e/__tests__/testNamePattern.test.ts|1 ✅|||859ms|
-|e2e/__tests__/testNamePatternSkipped.test.ts|1 ✅|||991ms|
-|e2e/__tests__/testPathPatternReporterMessage.test.ts|1 ✅|||3s|
-|e2e/__tests__/testResultsProcessor.test.ts|1 ✅|||910ms|
-|e2e/__tests__/testRetries.test.ts|4 ✅|||3s|
-|e2e/__tests__/testTodo.test.ts|5 ✅|||4s|
-|e2e/__tests__/timeouts.test.ts|4 ✅|||4s|
-|e2e/__tests__/timeoutsLegacy.test.ts|1 ✅||3 ⚪|71ms|
-|e2e/__tests__/timerResetMocks.test.ts|2 ✅|||2s|
-|e2e/__tests__/timerUseRealTimers.test.ts|1 ✅|||1s|
-|e2e/__tests__/toMatchInlineSnapshot.test.ts|12 ✅|||24s|
-|e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts|3 ✅|||5s|
-|e2e/__tests__/toMatchSnapshot.test.ts|9 ✅|||17s|
-|e2e/__tests__/toMatchSnapshotWithRetries.test.ts|2 ✅|||4s|
-|e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts|3 ✅|||4s|
-|e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts|4 ✅|||4s|
-|e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts|5 ✅|||4s|
-|e2e/__tests__/transform.test.ts|16 ✅|||27s|
-|e2e/__tests__/transformLinkedModules.test.ts|1 ✅|||783ms|
-|e2e/__tests__/typescriptCoverage.test.ts|1 ✅|||3s|
-|e2e/__tests__/unexpectedToken.test.ts|3 ✅|||3s|
-|e2e/__tests__/useStderr.test.ts|1 ✅|||1s|
-|e2e/__tests__/v8Coverage.test.ts|2 ✅|||2s|
-|e2e/__tests__/verbose.test.ts|1 ✅|||683ms|
-|e2e/__tests__/version.test.ts|1 ✅|||138ms|
-|e2e/__tests__/watchModeNoAccess.test.ts|1 ✅|||4s|
-|e2e/__tests__/watchModeOnlyFailed.test.ts|1 ✅|||1s|
-|e2e/__tests__/watchModePatterns.test.ts|2 ✅|||4s|
-|e2e/__tests__/watchModeUpdateSnapshot.test.ts|1 ✅|||1s|
-|e2e/__tests__/workerForceExit.test.ts|2 ✅|||5s|
-|e2e/__tests__/wrongEnv.test.ts|5 ✅|||4s|
-|e2e/custom-test-sequencer/a.test.js|1 ✅|||29ms|
-|e2e/custom-test-sequencer/b.test.js|1 ✅|||21ms|
-|e2e/custom-test-sequencer/c.test.js|1 ✅|||42ms|
-|e2e/custom-test-sequencer/d.test.js|1 ✅|||21ms|
-|e2e/custom-test-sequencer/e.test.js|1 ✅|||27ms|
-|e2e/test-in-root/spec.js|1 ✅|||19ms|
-|e2e/test-in-root/test.js|1 ✅|||37ms|
-|e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js|2 ✅|||30ms|
-|e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js|1 ✅|||34ms|
-|e2e/v8-coverage/empty-sourcemap/test.ts|1 ✅|||31ms|
-|examples/angular/app.component.spec.ts|3 ✅|||654ms|
-|examples/angular/shared/data.service.spec.ts|2 ✅|||431ms|
-|examples/angular/shared/sub.service.spec.ts|1 ✅|||109ms|
-|examples/async/__tests__/user.test.js|8 ✅|||96ms|
-|examples/automatic-mocks/__tests__/automock.test.js|2 ✅|||74ms|
-|examples/automatic-mocks/__tests__/createMockFromModule.test.js|2 ✅|||115ms|
-|examples/automatic-mocks/__tests__/disableAutomocking.test.js|1 ✅|||24ms|
-|examples/enzyme/__tests__/CheckboxWithLabel-test.js|1 ✅|||434ms|
-|examples/getting-started/sum.test.js|1 ✅|||78ms|
-|examples/jquery/__tests__/display_user.test.js|1 ✅|||196ms|
-|examples/jquery/__tests__/fetch_current_user.test.js|2 ✅|||196ms|
-|examples/manual-mocks/__tests__/file_summarizer.test.js|1 ✅|||87ms|
-|examples/manual-mocks/__tests__/lodashMocking.test.js|1 ✅|||109ms|
-|examples/manual-mocks/__tests__/user.test.js|1 ✅|||41ms|
-|examples/manual-mocks/__tests__/userMocked.test.js|1 ✅|||105ms|
-|examples/module-mock/__tests__/full_mock.js|1 ✅|||60ms|
-|examples/module-mock/__tests__/mock_per_test.js|2 ✅|||116ms|
-|examples/module-mock/__tests__/partial_mock.js|1 ✅|||215ms|
-|examples/mongodb/__test__/db.test.js|1 ✅|||236ms|
-|examples/react-native/__tests__/intro.test.js|4 ✅|||9s|
-|examples/react-testing-library/__tests__/CheckboxWithLabel-test.js|1 ✅|||469ms|
-|examples/react/__tests__/CheckboxWithLabel-test.js|1 ✅|||256ms|
-|examples/snapshot/__tests__/clock.react.test.js|1 ✅|||62ms|
-|examples/snapshot/__tests__/link.react.test.js|4 ✅|||181ms|
-|examples/timer/__tests__/infinite_timer_game.test.js|1 ✅|||94ms|
-|examples/timer/__tests__/timer_game.test.js|3 ✅|||74ms|
-|examples/typescript/__tests__/calc.test.ts|6 ✅|||276ms|
-|examples/typescript/__tests__/CheckboxWithLabel-test.tsx|1 ✅|||227ms|
-|examples/typescript/__tests__/sub-test.ts|1 ✅|||43ms|
-|examples/typescript/__tests__/sum-test.ts|2 ✅|||69ms|
-|examples/typescript/__tests__/sum.test.js|2 ✅|||100ms|
-|packages/babel-jest/src/__tests__/index.ts|6 ✅|||371ms|
-|packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts|4 ✅|||347ms|
-|packages/diff-sequences/src/__tests__/index.property.test.ts|7 ✅|||357ms|
-|packages/diff-sequences/src/__tests__/index.test.ts|48 ✅|||195ms|
-|packages/expect/src/__tests__/assertionCounts.test.ts|6 ✅|||60ms|
-|packages/expect/src/__tests__/asymmetricMatchers.test.ts|38 ✅|||207ms|
-|packages/expect/src/__tests__/extend.test.ts|10 ✅|||99ms|
-|packages/expect/src/__tests__/isError.test.ts|4 ✅|||43ms|
-|packages/expect/src/__tests__/matchers-toContain.property.test.ts|2 ✅|||236ms|
-|packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts|2 ✅|||287ms|
-|packages/expect/src/__tests__/matchers-toEqual.property.test.ts|2 ✅|||1s|
-|packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts|3 ✅|||394ms|
-|packages/expect/src/__tests__/matchers.test.js|592 ✅|||862ms|
-|packages/expect/src/__tests__/spyMatchers.test.ts|248 ✅|||395ms|
-|packages/expect/src/__tests__/stacktrace.test.ts|3 ✅|||69ms|
-|packages/expect/src/__tests__/symbolInObjects.test.ts|3 ✅|||33ms|
-|packages/expect/src/__tests__/toEqual-dom.test.ts|12 ✅|||99ms|
-|packages/expect/src/__tests__/toThrowMatchers.test.ts|98 ✅|||257ms|
-|packages/expect/src/__tests__/utils.test.ts|41 ✅|||147ms|
-|packages/jest-circus/src/__tests__/afterAll.test.ts|6 ✅|||6s|
-|packages/jest-circus/src/__tests__/baseTest.test.ts|2 ✅|||3s|
-|packages/jest-circus/src/__tests__/circusItTestError.test.ts|8 ✅|||300ms|
-|packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts|3 ✅|||81ms|
-|packages/jest-circus/src/__tests__/hooks.test.ts|3 ✅|||4s|
-|packages/jest-circus/src/__tests__/hooksError.test.ts|32 ✅|||127ms|
-|packages/jest-cli/src/__tests__/cli/args.test.ts|17 ✅|||345ms|
-|packages/jest-cli/src/init/__tests__/init.test.js|24 ✅|||119ms|
-|packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts|4 ✅|||30ms|
-|packages/jest-config/src/__tests__/Defaults.test.ts|1 ✅|||672ms|
-|packages/jest-config/src/__tests__/getMaxWorkers.test.ts|7 ✅|||67ms|
-|packages/jest-config/src/__tests__/normalize.test.js|118 ✅|||798ms|
-|packages/jest-config/src/__tests__/readConfig.test.ts|1 ✅|||76ms|
-|packages/jest-config/src/__tests__/readConfigs.test.ts|3 ✅|||135ms|
-|packages/jest-config/src/__tests__/resolveConfigPath.test.ts|10 ✅|||183ms|
-|packages/jest-config/src/__tests__/setFromArgv.test.ts|4 ✅|||53ms|
-|packages/jest-config/src/__tests__/validatePattern.test.ts|4 ✅|||52ms|
-|packages/jest-console/src/__tests__/bufferedConsole.test.ts|20 ✅|||171ms|
-|packages/jest-console/src/__tests__/CustomConsole.test.ts|23 ✅|||115ms|
-|packages/jest-console/src/__tests__/getConsoleOutput.test.ts|12 ✅|||56ms|
-|packages/jest-core/src/__tests__/FailedTestsCache.test.js|1 ✅|||25ms|
-|packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js|5 ✅|||61ms|
-|packages/jest-core/src/__tests__/globals.test.ts|1 ✅|||22ms|
-|packages/jest-core/src/__tests__/runJest.test.js|2 ✅|||261ms|
-|packages/jest-core/src/__tests__/SearchSource.test.ts|27 ✅|||3s|
-|packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js|13 ✅|||89ms|
-|packages/jest-core/src/__tests__/TestScheduler.test.js|8 ✅|||520ms|
-|packages/jest-core/src/__tests__/testSchedulerHelper.test.js|12 ✅|||48ms|
-|packages/jest-core/src/__tests__/watch.test.js|80 ✅|||7s|
-|packages/jest-core/src/__tests__/watchFileChanges.test.ts|1 ✅|||2s|
-|packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js|2 ✅|||165ms|
-|packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js|1 ✅|||246ms|
-|packages/jest-core/src/lib/__tests__/isValidPath.test.ts|3 ✅|||166ms|
-|packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts|3 ✅|||48ms|
-|packages/jest-create-cache-key-function/src/__tests__/index.test.ts|1 ✅|||75ms|
-|packages/jest-diff/src/__tests__/diff.test.ts|107 ✅|||625ms|
-|packages/jest-diff/src/__tests__/diffStringsRaw.test.ts|2 ✅|||55ms|
-|packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts|24 ✅|||72ms|
-|packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts|6 ✅|||44ms|
-|packages/jest-docblock/src/__tests__/index.test.ts|36 ✅|||177ms|
-|packages/jest-each/src/__tests__/array.test.ts|159 ✅|||192ms|
-|packages/jest-each/src/__tests__/index.test.ts|10 ✅|||44ms|
-|packages/jest-each/src/__tests__/template.test.ts|242 ✅|||483ms|
-|packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts|2 ✅|||783ms|
-|packages/jest-environment-node/src/__tests__/node_environment.test.ts|6 ✅|||184ms|
-|packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts|50 ✅|||302ms|
-|packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts|40 ✅|||317ms|
-|packages/jest-get-type/src/__tests__/getType.test.ts|14 ✅|||45ms|
-|packages/jest-get-type/src/__tests__/isPrimitive.test.ts|18 ✅|||36ms|
-|packages/jest-globals/src/__tests__/index.ts|1 ✅|||533ms|
-|packages/jest-haste-map/src/__tests__/get_mock_name.test.js|1 ✅|||22ms|
-|packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts|1 ✅|||337ms|
-|packages/jest-haste-map/src/__tests__/index.test.js|44 ✅|||1s|
-|packages/jest-haste-map/src/__tests__/worker.test.js|7 ✅|||100ms|
-|packages/jest-haste-map/src/crawlers/__tests__/node.test.js|10 ✅|||170ms|
-|packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js|8 ✅|||153ms|
-|packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js|15 ✅|||56ms|
-|packages/jest-haste-map/src/lib/__tests__/fast_path.test.js|5 ✅|||29ms|
-|packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js|1 ✅|||35ms|
-|packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js|2 ✅|||31ms|
-|packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js|2 ✅|||35ms|
-|packages/jest-jasmine2/src/__tests__/concurrent.test.ts|3 ✅|||24ms|
-|packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts|7 ✅|||70ms|
-|packages/jest-jasmine2/src/__tests__/hooksError.test.ts|32 ✅|||51ms|
-|packages/jest-jasmine2/src/__tests__/iterators.test.ts|4 ✅|||43ms|
-|packages/jest-jasmine2/src/__tests__/itTestError.test.ts|6 ✅|||32ms|
-|packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts|1 ✅|||23ms|
-|packages/jest-jasmine2/src/__tests__/pTimeout.test.ts|3 ✅|||44ms|
-|packages/jest-jasmine2/src/__tests__/queueRunner.test.ts|6 ✅|||93ms|
-|packages/jest-jasmine2/src/__tests__/reporter.test.ts|1 ✅|||107ms|
-|packages/jest-jasmine2/src/__tests__/Suite.test.ts|1 ✅|||84ms|
-|packages/jest-jasmine2/src/__tests__/todoError.test.ts|3 ✅|||27ms|
-|packages/jest-leak-detector/src/__tests__/index.test.ts|6 ✅|||986ms|
-|packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts|11 ✅|||49ms|
-|packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts|2 ✅|||48ms|
-|packages/jest-matcher-utils/src/__tests__/index.test.ts|48 ✅|||391ms|
-|packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts|21 ✅|||114ms|
-|packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts|17 ✅|||111ms|
-|packages/jest-message-util/src/__tests__/messages.test.ts|11 ✅|||205ms|
-|packages/jest-mock/src/__tests__/index.test.ts|84 ✅|||509ms|
-|packages/jest-regex-util/src/__tests__/index.test.ts|8 ✅|||56ms|
-|packages/jest-repl/src/__tests__/jest_repl.test.js|1 ✅|||1s|
-|packages/jest-repl/src/__tests__/runtime_cli.test.js|4 ✅|||4s|
-|packages/jest-reporters/src/__tests__/CoverageReporter.test.js|12 ✅|||397ms|
-|packages/jest-reporters/src/__tests__/CoverageWorker.test.js|2 ✅|||199ms|
-|packages/jest-reporters/src/__tests__/DefaultReporter.test.js|2 ✅|||148ms|
-|packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js|3 ✅|||1s|
-|packages/jest-reporters/src/__tests__/getResultHeader.test.js|4 ✅|||30ms|
-|packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js|3 ✅|||28ms|
-|packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js|4 ✅|||49ms|
-|packages/jest-reporters/src/__tests__/getWatermarks.test.ts|2 ✅|||37ms|
-|packages/jest-reporters/src/__tests__/NotifyReporter.test.ts|18 ✅|||166ms|
-|packages/jest-reporters/src/__tests__/SummaryReporter.test.js|4 ✅|||366ms|
-|packages/jest-reporters/src/__tests__/utils.test.ts|10 ✅|||85ms|
-|packages/jest-reporters/src/__tests__/VerboseReporter.test.js|11 ✅|||425ms|
-|packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts|11 ✅|||666ms|
-|packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts|4 ✅|||36ms|
-|packages/jest-resolve/src/__tests__/resolve.test.ts|16 ✅|||1s|
-|packages/jest-runner/src/__tests__/testRunner.test.ts|2 ✅|||905ms|
-|packages/jest-runtime/src/__tests__/instrumentation.test.ts|1 ✅|||275ms|
-|packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js|3 ✅|||606ms|
-|packages/jest-runtime/src/__tests__/runtime_environment.test.js|2 ✅|||497ms|
-|packages/jest-runtime/src/__tests__/runtime_internal_module.test.js|4 ✅|||727ms|
-|packages/jest-runtime/src/__tests__/runtime_jest_fn.js|4 ✅|||479ms|
-|packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js|2 ✅|||521ms|
-|packages/jest-runtime/src/__tests__/runtime_mock.test.js|4 ✅|||743ms|
-|packages/jest-runtime/src/__tests__/runtime_module_directories.test.js|4 ✅|||525ms|
-|packages/jest-runtime/src/__tests__/runtime_node_path.test.js|4 ✅|||1s|
-|packages/jest-runtime/src/__tests__/runtime_require_actual.test.js|2 ✅|||478ms|
-|packages/jest-runtime/src/__tests__/runtime_require_cache.test.js|2 ✅|||454ms|
-|packages/jest-runtime/src/__tests__/runtime_require_mock.test.js|13 ✅|||962ms|
-|packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js|1 ✅|||261ms|
-|packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js|6 ✅|||2s|
-|packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js|17 ✅|||1s|
-|packages/jest-runtime/src/__tests__/runtime_require_module.test.js|27 ✅|||2s|
-|packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts|5 ✅|||707ms|
-|packages/jest-runtime/src/__tests__/runtime_wrap.js|2 ✅|||263ms|
-|packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js|1 ✅|||584ms|
-|packages/jest-runtime/src/__tests__/Runtime-statics.test.js|2 ✅|||162ms|
-|packages/jest-serializer/src/__tests__/index.test.ts|17 ✅|||158ms|
-|packages/jest-snapshot/src/__tests__/dedentLines.test.ts|17 ✅|||94ms|
-|packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts|22 ✅|||1s|
-|packages/jest-snapshot/src/__tests__/matcher.test.ts|1 ✅|||131ms|
-|packages/jest-snapshot/src/__tests__/mockSerializer.test.ts|10 ✅|||45ms|
-|packages/jest-snapshot/src/__tests__/printSnapshot.test.ts|71 ✅|||1s|
-|packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts|10 ✅|||98ms|
-|packages/jest-snapshot/src/__tests__/throwMatcher.test.ts|3 ✅|||481ms|
-|packages/jest-snapshot/src/__tests__/utils.test.ts|26 ✅|||214ms|
-|packages/jest-source-map/src/__tests__/getCallsite.test.ts|3 ✅|||86ms|
-|packages/jest-test-result/src/__tests__/formatTestResults.test.ts|1 ✅|||53ms|
-|packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js|8 ✅|||251ms|
-|packages/jest-transform/src/__tests__/ScriptTransformer.test.ts|22 ✅|||2s|
-|packages/jest-transform/src/__tests__/shouldInstrument.test.ts|25 ✅|||155ms|
-|packages/jest-util/src/__tests__/createProcessObject.test.ts|4 ✅|||81ms|
-|packages/jest-util/src/__tests__/deepCyclicCopy.test.ts|12 ✅|||86ms|
-|packages/jest-util/src/__tests__/errorWithStack.test.ts|1 ✅|||41ms|
-|packages/jest-util/src/__tests__/formatTime.test.ts|11 ✅|||82ms|
-|packages/jest-util/src/__tests__/globsToMatcher.test.ts|4 ✅|||56ms|
-|packages/jest-util/src/__tests__/installCommonGlobals.test.ts|2 ✅|||68ms|
-|packages/jest-util/src/__tests__/isInteractive.test.ts|2 ✅|||35ms|
-|packages/jest-util/src/__tests__/isPromise.test.ts|10 ✅|||30ms|
-|packages/jest-validate/src/__tests__/validate.test.ts|23 ✅|||283ms|
-|packages/jest-validate/src/__tests__/validateCLIOptions.test.js|6 ✅|||83ms|
-|packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts|11 ✅|||129ms|
-|packages/jest-watcher/src/lib/__tests__/prompt.test.ts|3 ✅|||91ms|
-|packages/jest-watcher/src/lib/__tests__/scroll.test.ts|5 ✅|||57ms|
-|packages/jest-worker/src/__tests__/Farm.test.js|10 ✅|||158ms|
-|packages/jest-worker/src/__tests__/FifoQueue.test.js|3 ✅|||48ms|
-|packages/jest-worker/src/__tests__/index.test.js|8 ✅|||230ms|
-|packages/jest-worker/src/__tests__/PriorityQueue.test.js|5 ✅|||63ms|
-|packages/jest-worker/src/__tests__/process-integration.test.js|5 ✅|||62ms|
-|packages/jest-worker/src/__tests__/thread-integration.test.js|6 ✅|||114ms|
-|packages/jest-worker/src/__tests__/WorkerPool.test.js|3 ✅|||51ms|
-|packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js|11 ✅|||653ms|
-|packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js|17 ✅|||184ms|
-|packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js|15 ✅|||258ms|
-|packages/jest-worker/src/workers/__tests__/processChild.test.js|10 ✅|||135ms|
-|packages/jest-worker/src/workers/__tests__/threadChild.test.js|10 ✅|||120ms|
-|packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts|38 ✅|||137ms|
-|packages/pretty-format/src/__tests__/ConvertAnsi.test.ts|6 ✅|||43ms|
-|packages/pretty-format/src/__tests__/DOMCollection.test.ts|10 ✅|||64ms|
-|packages/pretty-format/src/__tests__/DOMElement.test.ts|28 ✅|||148ms|
-|packages/pretty-format/src/__tests__/Immutable.test.ts|111 ✅|||443ms|
-|packages/pretty-format/src/__tests__/prettyFormat.test.ts|86 ✅|||219ms|
-|packages/pretty-format/src/__tests__/react.test.tsx|55 ✅|||325ms|
-|packages/pretty-format/src/__tests__/ReactElement.test.ts|3 ✅|||64ms|
+|[e2e/__tests__/onlyFailuresNonWatch.test.ts](#user-content-r0s99)|1 ✅|||3s|
+|[e2e/__tests__/overrideGlobals.test.ts](#user-content-r0s100)|2 ✅|||2s|
+|[e2e/__tests__/pnp.test.ts](#user-content-r0s101)|1 ✅|||3s|
+|[e2e/__tests__/presets.test.ts](#user-content-r0s102)|2 ✅|||2s|
+|[e2e/__tests__/processExit.test.ts](#user-content-r0s103)|1 ✅|||1s|
+|[e2e/__tests__/promiseReject.test.ts](#user-content-r0s104)|1 ✅|||967ms|
+|[e2e/__tests__/regexCharInPath.test.ts](#user-content-r0s105)|1 ✅|||962ms|
+|[e2e/__tests__/requireAfterTeardown.test.ts](#user-content-r0s106)|1 ✅|||921ms|
+|[e2e/__tests__/requireMain.test.ts](#user-content-r0s107)|1 ✅|||1s|
+|[e2e/__tests__/requireMainAfterCreateRequire.test.ts](#user-content-r0s108)|1 ✅|||966ms|
+|[e2e/__tests__/requireMainIsolateModules.test.ts](#user-content-r0s109)|1 ✅|||976ms|
+|[e2e/__tests__/requireMainResetModules.test.ts](#user-content-r0s110)|2 ✅|||2s|
+|[e2e/__tests__/requireV8Module.test.ts](#user-content-r0s111)|1 ✅|||30ms|
+|[e2e/__tests__/resetModules.test.ts](#user-content-r0s112)|1 ✅|||926ms|
+|[e2e/__tests__/resolve.test.ts](#user-content-r0s113)|1 ✅|||2s|
+|[e2e/__tests__/resolveGetPaths.test.ts](#user-content-r0s114)|1 ✅|||1s|
+|[e2e/__tests__/resolveNodeModule.test.ts](#user-content-r0s115)|1 ✅|||943ms|
+|[e2e/__tests__/resolveNoFileExtensions.test.ts](#user-content-r0s116)|2 ✅|||1s|
+|[e2e/__tests__/resolveWithPaths.test.ts](#user-content-r0s117)|1 ✅|||1s|
+|[e2e/__tests__/runProgrammatically.test.ts](#user-content-r0s118)|2 ✅|||575ms|
+|[e2e/__tests__/runTestsByPath.test.ts](#user-content-r0s119)|1 ✅|||2s|
+|[e2e/__tests__/runtimeInternalModuleRegistry.test.ts](#user-content-r0s120)|1 ✅|||1s|
+|[e2e/__tests__/selectProjects.test.ts](#user-content-r0s121)|18 ✅|||5s|
+|[e2e/__tests__/setImmediate.test.ts](#user-content-r0s122)|1 ✅|||904ms|
+|[e2e/__tests__/setupFilesAfterEnvConfig.test.ts](#user-content-r0s123)|2 ✅|||2s|
+|[e2e/__tests__/showConfig.test.ts](#user-content-r0s124)|1 ✅|||195ms|
+|[e2e/__tests__/skipBeforeAfterAll.test.ts](#user-content-r0s125)|1 ✅|||1s|
+|[e2e/__tests__/snapshot-unknown.test.ts](#user-content-r0s126)|1 ✅|||838ms|
+|[e2e/__tests__/snapshot.test.ts](#user-content-r0s127)|9 ✅|||14s|
+|[e2e/__tests__/snapshotMockFs.test.ts](#user-content-r0s128)|1 ✅|||883ms|
+|[e2e/__tests__/snapshotResolver.test.ts](#user-content-r0s129)|1 ✅|||823ms|
+|[e2e/__tests__/snapshotSerializers.test.ts](#user-content-r0s130)|2 ✅|||2s|
+|[e2e/__tests__/stackTrace.test.ts](#user-content-r0s131)|7 ✅|||5s|
+|[e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts](#user-content-r0s132)|1 ✅|||899ms|
+|[e2e/__tests__/stackTraceSourceMaps.test.ts](#user-content-r0s133)|1 ✅|||2s|
+|[e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts](#user-content-r0s134)|1 ✅|||2s|
+|[e2e/__tests__/supportsDashedArgs.ts](#user-content-r0s135)|2 ✅|||968ms|
+|[e2e/__tests__/symbol.test.ts](#user-content-r0s136)|1 ✅|||49ms|
+|[e2e/__tests__/testEnvironment.test.ts](#user-content-r0s137)|1 ✅|||2s|
+|[e2e/__tests__/testEnvironmentAsync.test.ts](#user-content-r0s138)|1 ✅|||1s|
+|[e2e/__tests__/testEnvironmentCircus.test.ts](#user-content-r0s139)|1 ✅|||2s|
+|[e2e/__tests__/testEnvironmentCircusAsync.test.ts](#user-content-r0s140)|1 ✅|||2s|
+|[e2e/__tests__/testFailureExitCode.test.ts](#user-content-r0s141)|2 ✅|||4s|
+|[e2e/__tests__/testInRoot.test.ts](#user-content-r0s142)|1 ✅|||1s|
+|[e2e/__tests__/testNamePattern.test.ts](#user-content-r0s143)|1 ✅|||859ms|
+|[e2e/__tests__/testNamePatternSkipped.test.ts](#user-content-r0s144)|1 ✅|||991ms|
+|[e2e/__tests__/testPathPatternReporterMessage.test.ts](#user-content-r0s145)|1 ✅|||3s|
+|[e2e/__tests__/testResultsProcessor.test.ts](#user-content-r0s146)|1 ✅|||910ms|
+|[e2e/__tests__/testRetries.test.ts](#user-content-r0s147)|4 ✅|||3s|
+|[e2e/__tests__/testTodo.test.ts](#user-content-r0s148)|5 ✅|||4s|
+|[e2e/__tests__/timeouts.test.ts](#user-content-r0s149)|4 ✅|||4s|
+|[e2e/__tests__/timeoutsLegacy.test.ts](#user-content-r0s150)|1 ✅||3 ⚪|71ms|
+|[e2e/__tests__/timerResetMocks.test.ts](#user-content-r0s151)|2 ✅|||2s|
+|[e2e/__tests__/timerUseRealTimers.test.ts](#user-content-r0s152)|1 ✅|||1s|
+|[e2e/__tests__/toMatchInlineSnapshot.test.ts](#user-content-r0s153)|12 ✅|||24s|
+|[e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts](#user-content-r0s154)|3 ✅|||5s|
+|[e2e/__tests__/toMatchSnapshot.test.ts](#user-content-r0s155)|9 ✅|||17s|
+|[e2e/__tests__/toMatchSnapshotWithRetries.test.ts](#user-content-r0s156)|2 ✅|||4s|
+|[e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts](#user-content-r0s157)|3 ✅|||4s|
+|[e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts](#user-content-r0s158)|4 ✅|||4s|
+|[e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts](#user-content-r0s159)|5 ✅|||4s|
+|[e2e/__tests__/transform.test.ts](#user-content-r0s160)|16 ✅|||27s|
+|[e2e/__tests__/transformLinkedModules.test.ts](#user-content-r0s161)|1 ✅|||783ms|
+|[e2e/__tests__/typescriptCoverage.test.ts](#user-content-r0s162)|1 ✅|||3s|
+|[e2e/__tests__/unexpectedToken.test.ts](#user-content-r0s163)|3 ✅|||3s|
+|[e2e/__tests__/useStderr.test.ts](#user-content-r0s164)|1 ✅|||1s|
+|[e2e/__tests__/v8Coverage.test.ts](#user-content-r0s165)|2 ✅|||2s|
+|[e2e/__tests__/verbose.test.ts](#user-content-r0s166)|1 ✅|||683ms|
+|[e2e/__tests__/version.test.ts](#user-content-r0s167)|1 ✅|||138ms|
+|[e2e/__tests__/watchModeNoAccess.test.ts](#user-content-r0s168)|1 ✅|||4s|
+|[e2e/__tests__/watchModeOnlyFailed.test.ts](#user-content-r0s169)|1 ✅|||1s|
+|[e2e/__tests__/watchModePatterns.test.ts](#user-content-r0s170)|2 ✅|||4s|
+|[e2e/__tests__/watchModeUpdateSnapshot.test.ts](#user-content-r0s171)|1 ✅|||1s|
+|[e2e/__tests__/workerForceExit.test.ts](#user-content-r0s172)|2 ✅|||5s|
+|[e2e/__tests__/wrongEnv.test.ts](#user-content-r0s173)|5 ✅|||4s|
+|[e2e/custom-test-sequencer/a.test.js](#user-content-r0s174)|1 ✅|||29ms|
+|[e2e/custom-test-sequencer/b.test.js](#user-content-r0s175)|1 ✅|||21ms|
+|[e2e/custom-test-sequencer/c.test.js](#user-content-r0s176)|1 ✅|||42ms|
+|[e2e/custom-test-sequencer/d.test.js](#user-content-r0s177)|1 ✅|||21ms|
+|[e2e/custom-test-sequencer/e.test.js](#user-content-r0s178)|1 ✅|||27ms|
+|[e2e/test-in-root/spec.js](#user-content-r0s179)|1 ✅|||19ms|
+|[e2e/test-in-root/test.js](#user-content-r0s180)|1 ✅|||37ms|
+|[e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js](#user-content-r0s181)|2 ✅|||30ms|
+|[e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js](#user-content-r0s182)|1 ✅|||34ms|
+|[e2e/v8-coverage/empty-sourcemap/test.ts](#user-content-r0s183)|1 ✅|||31ms|
+|[examples/angular/app.component.spec.ts](#user-content-r0s184)|3 ✅|||654ms|
+|[examples/angular/shared/data.service.spec.ts](#user-content-r0s185)|2 ✅|||431ms|
+|[examples/angular/shared/sub.service.spec.ts](#user-content-r0s186)|1 ✅|||109ms|
+|[examples/async/__tests__/user.test.js](#user-content-r0s187)|8 ✅|||96ms|
+|[examples/automatic-mocks/__tests__/automock.test.js](#user-content-r0s188)|2 ✅|||74ms|
+|[examples/automatic-mocks/__tests__/createMockFromModule.test.js](#user-content-r0s189)|2 ✅|||115ms|
+|[examples/automatic-mocks/__tests__/disableAutomocking.test.js](#user-content-r0s190)|1 ✅|||24ms|
+|[examples/enzyme/__tests__/CheckboxWithLabel-test.js](#user-content-r0s191)|1 ✅|||434ms|
+|[examples/getting-started/sum.test.js](#user-content-r0s192)|1 ✅|||78ms|
+|[examples/jquery/__tests__/display_user.test.js](#user-content-r0s193)|1 ✅|||196ms|
+|[examples/jquery/__tests__/fetch_current_user.test.js](#user-content-r0s194)|2 ✅|||196ms|
+|[examples/manual-mocks/__tests__/file_summarizer.test.js](#user-content-r0s195)|1 ✅|||87ms|
+|[examples/manual-mocks/__tests__/lodashMocking.test.js](#user-content-r0s196)|1 ✅|||109ms|
+|[examples/manual-mocks/__tests__/user.test.js](#user-content-r0s197)|1 ✅|||41ms|
+|[examples/manual-mocks/__tests__/userMocked.test.js](#user-content-r0s198)|1 ✅|||105ms|
+|[examples/module-mock/__tests__/full_mock.js](#user-content-r0s199)|1 ✅|||60ms|
+|[examples/module-mock/__tests__/mock_per_test.js](#user-content-r0s200)|2 ✅|||116ms|
+|[examples/module-mock/__tests__/partial_mock.js](#user-content-r0s201)|1 ✅|||215ms|
+|[examples/mongodb/__test__/db.test.js](#user-content-r0s202)|1 ✅|||236ms|
+|[examples/react-native/__tests__/intro.test.js](#user-content-r0s203)|4 ✅|||9s|
+|[examples/react-testing-library/__tests__/CheckboxWithLabel-test.js](#user-content-r0s204)|1 ✅|||469ms|
+|[examples/react/__tests__/CheckboxWithLabel-test.js](#user-content-r0s205)|1 ✅|||256ms|
+|[examples/snapshot/__tests__/clock.react.test.js](#user-content-r0s206)|1 ✅|||62ms|
+|[examples/snapshot/__tests__/link.react.test.js](#user-content-r0s207)|4 ✅|||181ms|
+|[examples/timer/__tests__/infinite_timer_game.test.js](#user-content-r0s208)|1 ✅|||94ms|
+|[examples/timer/__tests__/timer_game.test.js](#user-content-r0s209)|3 ✅|||74ms|
+|[examples/typescript/__tests__/calc.test.ts](#user-content-r0s210)|6 ✅|||276ms|
+|[examples/typescript/__tests__/CheckboxWithLabel-test.tsx](#user-content-r0s211)|1 ✅|||227ms|
+|[examples/typescript/__tests__/sub-test.ts](#user-content-r0s212)|1 ✅|||43ms|
+|[examples/typescript/__tests__/sum-test.ts](#user-content-r0s213)|2 ✅|||69ms|
+|[examples/typescript/__tests__/sum.test.js](#user-content-r0s214)|2 ✅|||100ms|
+|[packages/babel-jest/src/__tests__/index.ts](#user-content-r0s215)|6 ✅|||371ms|
+|[packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts](#user-content-r0s216)|4 ✅|||347ms|
+|[packages/diff-sequences/src/__tests__/index.property.test.ts](#user-content-r0s217)|7 ✅|||357ms|
+|[packages/diff-sequences/src/__tests__/index.test.ts](#user-content-r0s218)|48 ✅|||195ms|
+|[packages/expect/src/__tests__/assertionCounts.test.ts](#user-content-r0s219)|6 ✅|||60ms|
+|[packages/expect/src/__tests__/asymmetricMatchers.test.ts](#user-content-r0s220)|38 ✅|||207ms|
+|[packages/expect/src/__tests__/extend.test.ts](#user-content-r0s221)|10 ✅|||99ms|
+|[packages/expect/src/__tests__/isError.test.ts](#user-content-r0s222)|4 ✅|||43ms|
+|[packages/expect/src/__tests__/matchers-toContain.property.test.ts](#user-content-r0s223)|2 ✅|||236ms|
+|[packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts](#user-content-r0s224)|2 ✅|||287ms|
+|[packages/expect/src/__tests__/matchers-toEqual.property.test.ts](#user-content-r0s225)|2 ✅|||1s|
+|[packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts](#user-content-r0s226)|3 ✅|||394ms|
+|[packages/expect/src/__tests__/matchers.test.js](#user-content-r0s227)|592 ✅|||862ms|
+|[packages/expect/src/__tests__/spyMatchers.test.ts](#user-content-r0s228)|248 ✅|||395ms|
+|[packages/expect/src/__tests__/stacktrace.test.ts](#user-content-r0s229)|3 ✅|||69ms|
+|[packages/expect/src/__tests__/symbolInObjects.test.ts](#user-content-r0s230)|3 ✅|||33ms|
+|[packages/expect/src/__tests__/toEqual-dom.test.ts](#user-content-r0s231)|12 ✅|||99ms|
+|[packages/expect/src/__tests__/toThrowMatchers.test.ts](#user-content-r0s232)|98 ✅|||257ms|
+|[packages/expect/src/__tests__/utils.test.ts](#user-content-r0s233)|41 ✅|||147ms|
+|[packages/jest-circus/src/__tests__/afterAll.test.ts](#user-content-r0s234)|6 ✅|||6s|
+|[packages/jest-circus/src/__tests__/baseTest.test.ts](#user-content-r0s235)|2 ✅|||3s|
+|[packages/jest-circus/src/__tests__/circusItTestError.test.ts](#user-content-r0s236)|8 ✅|||300ms|
+|[packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts](#user-content-r0s237)|3 ✅|||81ms|
+|[packages/jest-circus/src/__tests__/hooks.test.ts](#user-content-r0s238)|3 ✅|||4s|
+|[packages/jest-circus/src/__tests__/hooksError.test.ts](#user-content-r0s239)|32 ✅|||127ms|
+|[packages/jest-cli/src/__tests__/cli/args.test.ts](#user-content-r0s240)|17 ✅|||345ms|
+|[packages/jest-cli/src/init/__tests__/init.test.js](#user-content-r0s241)|24 ✅|||119ms|
+|[packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts](#user-content-r0s242)|4 ✅|||30ms|
+|[packages/jest-config/src/__tests__/Defaults.test.ts](#user-content-r0s243)|1 ✅|||672ms|
+|[packages/jest-config/src/__tests__/getMaxWorkers.test.ts](#user-content-r0s244)|7 ✅|||67ms|
+|[packages/jest-config/src/__tests__/normalize.test.js](#user-content-r0s245)|118 ✅|||798ms|
+|[packages/jest-config/src/__tests__/readConfig.test.ts](#user-content-r0s246)|1 ✅|||76ms|
+|[packages/jest-config/src/__tests__/readConfigs.test.ts](#user-content-r0s247)|3 ✅|||135ms|
+|[packages/jest-config/src/__tests__/resolveConfigPath.test.ts](#user-content-r0s248)|10 ✅|||183ms|
+|[packages/jest-config/src/__tests__/setFromArgv.test.ts](#user-content-r0s249)|4 ✅|||53ms|
+|[packages/jest-config/src/__tests__/validatePattern.test.ts](#user-content-r0s250)|4 ✅|||52ms|
+|[packages/jest-console/src/__tests__/bufferedConsole.test.ts](#user-content-r0s251)|20 ✅|||171ms|
+|[packages/jest-console/src/__tests__/CustomConsole.test.ts](#user-content-r0s252)|23 ✅|||115ms|
+|[packages/jest-console/src/__tests__/getConsoleOutput.test.ts](#user-content-r0s253)|12 ✅|||56ms|
+|[packages/jest-core/src/__tests__/FailedTestsCache.test.js](#user-content-r0s254)|1 ✅|||25ms|
+|[packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js](#user-content-r0s255)|5 ✅|||61ms|
+|[packages/jest-core/src/__tests__/globals.test.ts](#user-content-r0s256)|1 ✅|||22ms|
+|[packages/jest-core/src/__tests__/runJest.test.js](#user-content-r0s257)|2 ✅|||261ms|
+|[packages/jest-core/src/__tests__/SearchSource.test.ts](#user-content-r0s258)|27 ✅|||3s|
+|[packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js](#user-content-r0s259)|13 ✅|||89ms|
+|[packages/jest-core/src/__tests__/TestScheduler.test.js](#user-content-r0s260)|8 ✅|||520ms|
+|[packages/jest-core/src/__tests__/testSchedulerHelper.test.js](#user-content-r0s261)|12 ✅|||48ms|
+|[packages/jest-core/src/__tests__/watch.test.js](#user-content-r0s262)|80 ✅|||7s|
+|[packages/jest-core/src/__tests__/watchFileChanges.test.ts](#user-content-r0s263)|1 ✅|||2s|
+|[packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js](#user-content-r0s264)|2 ✅|||165ms|
+|[packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js](#user-content-r0s265)|1 ✅|||246ms|
+|[packages/jest-core/src/lib/__tests__/isValidPath.test.ts](#user-content-r0s266)|3 ✅|||166ms|
+|[packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts](#user-content-r0s267)|3 ✅|||48ms|
+|[packages/jest-create-cache-key-function/src/__tests__/index.test.ts](#user-content-r0s268)|1 ✅|||75ms|
+|[packages/jest-diff/src/__tests__/diff.test.ts](#user-content-r0s269)|107 ✅|||625ms|
+|[packages/jest-diff/src/__tests__/diffStringsRaw.test.ts](#user-content-r0s270)|2 ✅|||55ms|
+|[packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts](#user-content-r0s271)|24 ✅|||72ms|
+|[packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts](#user-content-r0s272)|6 ✅|||44ms|
+|[packages/jest-docblock/src/__tests__/index.test.ts](#user-content-r0s273)|36 ✅|||177ms|
+|[packages/jest-each/src/__tests__/array.test.ts](#user-content-r0s274)|159 ✅|||192ms|
+|[packages/jest-each/src/__tests__/index.test.ts](#user-content-r0s275)|10 ✅|||44ms|
+|[packages/jest-each/src/__tests__/template.test.ts](#user-content-r0s276)|242 ✅|||483ms|
+|[packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts](#user-content-r0s277)|2 ✅|||783ms|
+|[packages/jest-environment-node/src/__tests__/node_environment.test.ts](#user-content-r0s278)|6 ✅|||184ms|
+|[packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts](#user-content-r0s279)|50 ✅|||302ms|
+|[packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts](#user-content-r0s280)|40 ✅|||317ms|
+|[packages/jest-get-type/src/__tests__/getType.test.ts](#user-content-r0s281)|14 ✅|||45ms|
+|[packages/jest-get-type/src/__tests__/isPrimitive.test.ts](#user-content-r0s282)|18 ✅|||36ms|
+|[packages/jest-globals/src/__tests__/index.ts](#user-content-r0s283)|1 ✅|||533ms|
+|[packages/jest-haste-map/src/__tests__/get_mock_name.test.js](#user-content-r0s284)|1 ✅|||22ms|
+|[packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts](#user-content-r0s285)|1 ✅|||337ms|
+|[packages/jest-haste-map/src/__tests__/index.test.js](#user-content-r0s286)|44 ✅|||1s|
+|[packages/jest-haste-map/src/__tests__/worker.test.js](#user-content-r0s287)|7 ✅|||100ms|
+|[packages/jest-haste-map/src/crawlers/__tests__/node.test.js](#user-content-r0s288)|10 ✅|||170ms|
+|[packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js](#user-content-r0s289)|8 ✅|||153ms|
+|[packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js](#user-content-r0s290)|15 ✅|||56ms|
+|[packages/jest-haste-map/src/lib/__tests__/fast_path.test.js](#user-content-r0s291)|5 ✅|||29ms|
+|[packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js](#user-content-r0s292)|1 ✅|||35ms|
+|[packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js](#user-content-r0s293)|2 ✅|||31ms|
+|[packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js](#user-content-r0s294)|2 ✅|||35ms|
+|[packages/jest-jasmine2/src/__tests__/concurrent.test.ts](#user-content-r0s295)|3 ✅|||24ms|
+|[packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts](#user-content-r0s296)|7 ✅|||70ms|
+|[packages/jest-jasmine2/src/__tests__/hooksError.test.ts](#user-content-r0s297)|32 ✅|||51ms|
+|[packages/jest-jasmine2/src/__tests__/iterators.test.ts](#user-content-r0s298)|4 ✅|||43ms|
+|[packages/jest-jasmine2/src/__tests__/itTestError.test.ts](#user-content-r0s299)|6 ✅|||32ms|
+|[packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts](#user-content-r0s300)|1 ✅|||23ms|
+|[packages/jest-jasmine2/src/__tests__/pTimeout.test.ts](#user-content-r0s301)|3 ✅|||44ms|
+|[packages/jest-jasmine2/src/__tests__/queueRunner.test.ts](#user-content-r0s302)|6 ✅|||93ms|
+|[packages/jest-jasmine2/src/__tests__/reporter.test.ts](#user-content-r0s303)|1 ✅|||107ms|
+|[packages/jest-jasmine2/src/__tests__/Suite.test.ts](#user-content-r0s304)|1 ✅|||84ms|
+|[packages/jest-jasmine2/src/__tests__/todoError.test.ts](#user-content-r0s305)|3 ✅|||27ms|
+|[packages/jest-leak-detector/src/__tests__/index.test.ts](#user-content-r0s306)|6 ✅|||986ms|
+|[packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts](#user-content-r0s307)|11 ✅|||49ms|
+|[packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts](#user-content-r0s308)|2 ✅|||48ms|
+|[packages/jest-matcher-utils/src/__tests__/index.test.ts](#user-content-r0s309)|48 ✅|||391ms|
+|[packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts](#user-content-r0s310)|21 ✅|||114ms|
+|[packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts](#user-content-r0s311)|17 ✅|||111ms|
+|[packages/jest-message-util/src/__tests__/messages.test.ts](#user-content-r0s312)|11 ✅|||205ms|
+|[packages/jest-mock/src/__tests__/index.test.ts](#user-content-r0s313)|84 ✅|||509ms|
+|[packages/jest-regex-util/src/__tests__/index.test.ts](#user-content-r0s314)|8 ✅|||56ms|
+|[packages/jest-repl/src/__tests__/jest_repl.test.js](#user-content-r0s315)|1 ✅|||1s|
+|[packages/jest-repl/src/__tests__/runtime_cli.test.js](#user-content-r0s316)|4 ✅|||4s|
+|[packages/jest-reporters/src/__tests__/CoverageReporter.test.js](#user-content-r0s317)|12 ✅|||397ms|
+|[packages/jest-reporters/src/__tests__/CoverageWorker.test.js](#user-content-r0s318)|2 ✅|||199ms|
+|[packages/jest-reporters/src/__tests__/DefaultReporter.test.js](#user-content-r0s319)|2 ✅|||148ms|
+|[packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js](#user-content-r0s320)|3 ✅|||1s|
+|[packages/jest-reporters/src/__tests__/getResultHeader.test.js](#user-content-r0s321)|4 ✅|||30ms|
+|[packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js](#user-content-r0s322)|3 ✅|||28ms|
+|[packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js](#user-content-r0s323)|4 ✅|||49ms|
+|[packages/jest-reporters/src/__tests__/getWatermarks.test.ts](#user-content-r0s324)|2 ✅|||37ms|
+|[packages/jest-reporters/src/__tests__/NotifyReporter.test.ts](#user-content-r0s325)|18 ✅|||166ms|
+|[packages/jest-reporters/src/__tests__/SummaryReporter.test.js](#user-content-r0s326)|4 ✅|||366ms|
+|[packages/jest-reporters/src/__tests__/utils.test.ts](#user-content-r0s327)|10 ✅|||85ms|
+|[packages/jest-reporters/src/__tests__/VerboseReporter.test.js](#user-content-r0s328)|11 ✅|||425ms|
+|[packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts](#user-content-r0s329)|11 ✅|||666ms|
+|[packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts](#user-content-r0s330)|4 ✅|||36ms|
+|[packages/jest-resolve/src/__tests__/resolve.test.ts](#user-content-r0s331)|16 ✅|||1s|
+|[packages/jest-runner/src/__tests__/testRunner.test.ts](#user-content-r0s332)|2 ✅|||905ms|
+|[packages/jest-runtime/src/__tests__/instrumentation.test.ts](#user-content-r0s333)|1 ✅|||275ms|
+|[packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js](#user-content-r0s334)|3 ✅|||606ms|
+|[packages/jest-runtime/src/__tests__/runtime_environment.test.js](#user-content-r0s335)|2 ✅|||497ms|
+|[packages/jest-runtime/src/__tests__/runtime_internal_module.test.js](#user-content-r0s336)|4 ✅|||727ms|
+|[packages/jest-runtime/src/__tests__/runtime_jest_fn.js](#user-content-r0s337)|4 ✅|||479ms|
+|[packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js](#user-content-r0s338)|2 ✅|||521ms|
+|[packages/jest-runtime/src/__tests__/runtime_mock.test.js](#user-content-r0s339)|4 ✅|||743ms|
+|[packages/jest-runtime/src/__tests__/runtime_module_directories.test.js](#user-content-r0s340)|4 ✅|||525ms|
+|[packages/jest-runtime/src/__tests__/runtime_node_path.test.js](#user-content-r0s341)|4 ✅|||1s|
+|[packages/jest-runtime/src/__tests__/runtime_require_actual.test.js](#user-content-r0s342)|2 ✅|||478ms|
+|[packages/jest-runtime/src/__tests__/runtime_require_cache.test.js](#user-content-r0s343)|2 ✅|||454ms|
+|[packages/jest-runtime/src/__tests__/runtime_require_mock.test.js](#user-content-r0s344)|13 ✅|||962ms|
+|[packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js](#user-content-r0s345)|1 ✅|||261ms|
+|[packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js](#user-content-r0s346)|6 ✅|||2s|
+|[packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js](#user-content-r0s347)|17 ✅|||1s|
+|[packages/jest-runtime/src/__tests__/runtime_require_module.test.js](#user-content-r0s348)|27 ✅|||2s|
+|[packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts](#user-content-r0s349)|5 ✅|||707ms|
+|[packages/jest-runtime/src/__tests__/runtime_wrap.js](#user-content-r0s350)|2 ✅|||263ms|
+|[packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js](#user-content-r0s351)|1 ✅|||584ms|
+|[packages/jest-runtime/src/__tests__/Runtime-statics.test.js](#user-content-r0s352)|2 ✅|||162ms|
+|[packages/jest-serializer/src/__tests__/index.test.ts](#user-content-r0s353)|17 ✅|||158ms|
+|[packages/jest-snapshot/src/__tests__/dedentLines.test.ts](#user-content-r0s354)|17 ✅|||94ms|
+|[packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts](#user-content-r0s355)|22 ✅|||1s|
+|[packages/jest-snapshot/src/__tests__/matcher.test.ts](#user-content-r0s356)|1 ✅|||131ms|
+|[packages/jest-snapshot/src/__tests__/mockSerializer.test.ts](#user-content-r0s357)|10 ✅|||45ms|
+|[packages/jest-snapshot/src/__tests__/printSnapshot.test.ts](#user-content-r0s358)|71 ✅|||1s|
+|[packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts](#user-content-r0s359)|10 ✅|||98ms|
+|[packages/jest-snapshot/src/__tests__/throwMatcher.test.ts](#user-content-r0s360)|3 ✅|||481ms|
+|[packages/jest-snapshot/src/__tests__/utils.test.ts](#user-content-r0s361)|26 ✅|||214ms|
+|[packages/jest-source-map/src/__tests__/getCallsite.test.ts](#user-content-r0s362)|3 ✅|||86ms|
+|[packages/jest-test-result/src/__tests__/formatTestResults.test.ts](#user-content-r0s363)|1 ✅|||53ms|
+|[packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js](#user-content-r0s364)|8 ✅|||251ms|
+|[packages/jest-transform/src/__tests__/ScriptTransformer.test.ts](#user-content-r0s365)|22 ✅|||2s|
+|[packages/jest-transform/src/__tests__/shouldInstrument.test.ts](#user-content-r0s366)|25 ✅|||155ms|
+|[packages/jest-util/src/__tests__/createProcessObject.test.ts](#user-content-r0s367)|4 ✅|||81ms|
+|[packages/jest-util/src/__tests__/deepCyclicCopy.test.ts](#user-content-r0s368)|12 ✅|||86ms|
+|[packages/jest-util/src/__tests__/errorWithStack.test.ts](#user-content-r0s369)|1 ✅|||41ms|
+|[packages/jest-util/src/__tests__/formatTime.test.ts](#user-content-r0s370)|11 ✅|||82ms|
+|[packages/jest-util/src/__tests__/globsToMatcher.test.ts](#user-content-r0s371)|4 ✅|||56ms|
+|[packages/jest-util/src/__tests__/installCommonGlobals.test.ts](#user-content-r0s372)|2 ✅|||68ms|
+|[packages/jest-util/src/__tests__/isInteractive.test.ts](#user-content-r0s373)|2 ✅|||35ms|
+|[packages/jest-util/src/__tests__/isPromise.test.ts](#user-content-r0s374)|10 ✅|||30ms|
+|[packages/jest-validate/src/__tests__/validate.test.ts](#user-content-r0s375)|23 ✅|||283ms|
+|[packages/jest-validate/src/__tests__/validateCLIOptions.test.js](#user-content-r0s376)|6 ✅|||83ms|
+|[packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts](#user-content-r0s377)|11 ✅|||129ms|
+|[packages/jest-watcher/src/lib/__tests__/prompt.test.ts](#user-content-r0s378)|3 ✅|||91ms|
+|[packages/jest-watcher/src/lib/__tests__/scroll.test.ts](#user-content-r0s379)|5 ✅|||57ms|
+|[packages/jest-worker/src/__tests__/Farm.test.js](#user-content-r0s380)|10 ✅|||158ms|
+|[packages/jest-worker/src/__tests__/FifoQueue.test.js](#user-content-r0s381)|3 ✅|||48ms|
+|[packages/jest-worker/src/__tests__/index.test.js](#user-content-r0s382)|8 ✅|||230ms|
+|[packages/jest-worker/src/__tests__/PriorityQueue.test.js](#user-content-r0s383)|5 ✅|||63ms|
+|[packages/jest-worker/src/__tests__/process-integration.test.js](#user-content-r0s384)|5 ✅|||62ms|
+|[packages/jest-worker/src/__tests__/thread-integration.test.js](#user-content-r0s385)|6 ✅|||114ms|
+|[packages/jest-worker/src/__tests__/WorkerPool.test.js](#user-content-r0s386)|3 ✅|||51ms|
+|[packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js](#user-content-r0s387)|11 ✅|||653ms|
+|[packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js](#user-content-r0s388)|17 ✅|||184ms|
+|[packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js](#user-content-r0s389)|15 ✅|||258ms|
+|[packages/jest-worker/src/workers/__tests__/processChild.test.js](#user-content-r0s390)|10 ✅|||135ms|
+|[packages/jest-worker/src/workers/__tests__/threadChild.test.js](#user-content-r0s391)|10 ✅|||120ms|
+|[packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts](#user-content-r0s392)|38 ✅|||137ms|
+|[packages/pretty-format/src/__tests__/ConvertAnsi.test.ts](#user-content-r0s393)|6 ✅|||43ms|
+|[packages/pretty-format/src/__tests__/DOMCollection.test.ts](#user-content-r0s394)|10 ✅|||64ms|
+|[packages/pretty-format/src/__tests__/DOMElement.test.ts](#user-content-r0s395)|28 ✅|||148ms|
+|[packages/pretty-format/src/__tests__/Immutable.test.ts](#user-content-r0s396)|111 ✅|||443ms|
+|[packages/pretty-format/src/__tests__/prettyFormat.test.ts](#user-content-r0s397)|86 ✅|||219ms|
+|[packages/pretty-format/src/__tests__/react.test.tsx](#user-content-r0s398)|55 ✅|||325ms|
+|[packages/pretty-format/src/__tests__/ReactElement.test.ts](#user-content-r0s399)|3 ✅|||64ms|
+### ✅ e2e/__tests__/asyncAndCallback.test.ts
+```
+✅ errors when a test both returns a promise and takes a callback
+```
+### ✅ e2e/__tests__/asyncRegenerator.test.ts
+```
+✅ successfully transpiles async
+```
+### ✅ e2e/__tests__/autoClearMocks.test.ts
+```
+✅ suite with auto-clear
+✅ suite without auto-clear
+```
+### ✅ e2e/__tests__/autoResetMocks.test.ts
+```
+✅ suite with auto-reset
+✅ suite without auto-reset
+```
+### ✅ e2e/__tests__/autoRestoreMocks.test.ts
+```
+✅ suite with auto-restore
+✅ suite without auto-restore
+```
+### ✅ e2e/__tests__/babelPluginJestHoist.test.ts
+```
+✅ successfully runs the tests inside `babel-plugin-jest-hoist/`
+```
+### ✅ e2e/__tests__/badSourceMap.test.ts
+```
+✅ suite with test cases that contain malformed sourcemaps
+```
+### ✅ e2e/__tests__/beforeAllFiltered.ts
+```
+Correct BeforeAll run
+ ✅ ensures the BeforeAll of ignored suite is not run
+```
+### ✅ e2e/__tests__/beforeEachQueue.ts
+```
+✅ does not work on jest-circus
+Correct beforeEach order
+ ⚪ ensures the correct order for beforeEach
+```
+### ✅ e2e/__tests__/callDoneTwice.test.ts
+```
+✅ `done()` should not be called more than once
+```
+### ✅ e2e/__tests__/chaiAssertionLibrary.ts
+```
+✅ chai assertion errors should display properly
+```
+### ✅ e2e/__tests__/circularInequality.test.ts
+```
+✅ handles circular inequality properly
+```
+### ✅ e2e/__tests__/circusConcurrentEach.test.ts
+```
+✅ works with concurrent.each
+✅ works with concurrent.only.each
+```
+### ✅ e2e/__tests__/circusDeclarationErrors.test.ts
+```
+✅ defining tests and hooks asynchronously throws
+```
+### ✅ e2e/__tests__/clearCache.test.ts
+```
+jest --clearCache
+ ✅ normal run results in cache directory being written
+ ✅ clearCache results in deleted directory and exitCode 0
+```
+### ✅ e2e/__tests__/cliHandlesExactFilenames.test.ts
+```
+✅ CLI accepts exact file names if matchers matched
+✅ CLI skips exact file names if no matchers matched
+```
+### ✅ e2e/__tests__/compareDomNodes.test.ts
+```
+✅ does not crash when expect involving a DOM node fails
+```
+### ✅ e2e/__tests__/config.test.ts
+```
+✅ config as JSON
+✅ works with sane config JSON
+✅ watchman config option is respected over default argv
+✅ config from argv is respected with sane config JSON
+✅ works with jsdom testEnvironmentOptions config JSON
+✅ negated flags override previous flags
+```
+### ✅ e2e/__tests__/console.test.ts
+```
+✅ console printing
+✅ console printing with --verbose
+✅ does not print to console with --silent
+✅ respects --noStackTrace
+✅ respects noStackTrace in config
+✅ the jsdom console is the same as the test console
+✅ does not error out when using winston
+```
+### ✅ e2e/__tests__/consoleAfterTeardown.test.ts
+```
+✅ console printing
+```
+### ✅ e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts
+```
+✅ prints console.logs when run with forceExit
+```
+### ✅ e2e/__tests__/coverageHandlebars.test.ts
+```
+✅ code coverage for Handlebars
+```
+### ✅ e2e/__tests__/coverageRemapping.test.ts
+```
+✅ maps code coverage against original source
+```
+### ✅ e2e/__tests__/coverageReport.test.ts
+```
+✅ outputs coverage report
+✅ collects coverage only from specified file
+✅ collects coverage only from multiple specified files
+✅ collects coverage only from specified files avoiding dependencies
+✅ json reporter printing with --coverage
+✅ outputs coverage report as json
+✅ outputs coverage report when text is requested
+✅ outputs coverage report when text-summary is requested
+✅ outputs coverage report when text and text-summary is requested
+✅ does not output coverage report when html is requested
+✅ collects coverage from duplicate files avoiding shared cache
+✅ generates coverage when using the testRegex config param
+```
+### ✅ e2e/__tests__/coverageThreshold.test.ts
+```
+✅ exits with 1 if coverage threshold is not met
+✅ exits with 1 if path threshold group is not found in coverage data
+✅ exits with 0 if global threshold group is not found in coverage data
+✅ excludes tests matched by path threshold groups from global group
+✅ file is matched by all path and glob threshold groups
+```
+### ✅ e2e/__tests__/coverageTransformInstrumented.test.ts
+```
+✅ code coverage for transform instrumented code
+```
+### ✅ e2e/__tests__/coverageWithoutTransform.test.ts
+```
+✅ produces code coverage for uncovered files without transformer
+```
+### ✅ e2e/__tests__/createProcessObject.test.ts
+```
+✅ allows retrieving the current domain
+```
+### ✅ e2e/__tests__/customInlineSnapshotMatchers.test.ts
+```
+✅ works with custom inline snapshot matchers
+```
+### ✅ e2e/__tests__/customMatcherStackTrace.test.ts
+```
+✅ works with custom matchers
+✅ custom async matchers
+```
+### ✅ e2e/__tests__/customReporters.test.ts
+```
+Custom Reporters Integration
+ ✅ valid string format for adding reporters
+ ✅ valid array format for adding reporters
+ ✅ invalid format for adding reporters
+ ✅ default reporters enabled
+ ✅ TestReporter with all tests passing
+ ✅ TestReporter with all tests failing
+ ✅ IncompleteReporter for flexibility
+ ✅ reporters can be default exports
+ ✅ prints reporter errors
+```
+### ✅ e2e/__tests__/customResolver.test.ts
+```
+✅ use the custom resolver
+```
+### ✅ e2e/__tests__/customTestSequencers.test.ts
+```
+✅ run prioritySequence first sync
+✅ run prioritySequence first async
+✅ run failed tests async
+```
+### ✅ e2e/__tests__/debug.test.ts
+```
+jest --debug
+ ✅ outputs debugging info before running the test
+```
+### ✅ e2e/__tests__/declarationErrors.test.ts
+```
+✅ errors if describe returns a Promise
+✅ errors if describe returns something
+✅ errors if describe throws
+```
+### ✅ e2e/__tests__/dependencyClash.test.ts
+```
+✅ does not require project modules from inside node_modules
+```
+### ✅ e2e/__tests__/detectOpenHandles.ts
+```
+✅ prints message about flag on slow tests
+✅ prints message about flag on forceExit
+✅ prints out info about open handlers
+✅ does not report promises
+✅ prints out info about open handlers from inside tests
+on node >=11.10.0
+ ✅ does not report ELD histograms
+notify
+ ✅ does not report --notify flag
+on node >=11
+ ✅ does not report timeouts using unref
+```
+### ✅ e2e/__tests__/domDiffing.test.ts
+```
+✅ should work without error
+```
+### ✅ e2e/__tests__/doneInHooks.test.ts
+```
+✅ `done()` works properly in hooks
+```
+### ✅ e2e/__tests__/dynamicRequireDependencies.ts
+```
+✅ successfully runs tests with dynamic dependencies
+```
+### ✅ e2e/__tests__/each.test.ts
+```
+✅ works with passing tests
+✅ shows error message when not enough arguments are supplied to tests
+✅ shows the correct errors in stderr when failing tests
+✅ shows only the tests with .only as being ran
+✅ shows only the tests without .skip as being ran
+✅ runs only the describe.only.each tests
+✅ formats args with pretty format when given %p
+```
+### ✅ e2e/__tests__/emptyDescribeWithHooks.test.ts
+```
+✅ hook in empty describe
+✅ hook in describe with skipped test
+✅ hook in empty nested describe
+✅ multiple hooks in empty describe
+```
+### ✅ e2e/__tests__/emptySuiteError.test.ts
+```
+JSON Reporter
+ ✅ fails the test suite if it contains no tests
+```
+### ✅ e2e/__tests__/env.test.ts
+```
+Environment override
+ ✅ uses jsdom when specified
+ ✅ uses node as default from package.json
+ ✅ uses node when specified
+ ✅ fails when the env is not available
+Environment equivalent
+ ✅ uses jsdom
+ ✅ uses node
+```
+### ✅ e2e/__tests__/environmentAfterTeardown.test.ts
+```
+✅ prints useful error for environment methods after test is done
+```
+### ✅ e2e/__tests__/errorOnDeprecated.test.ts
+```
+✅ does not work on jest-circus
+⚪ fail.test.js errors in errorOnDeprecated mode
+⚪ jasmine.addMatchers.test.js errors in errorOnDeprecated mode
+⚪ jasmine.any.test.js errors in errorOnDeprecated mode
+⚪ jasmine.anything.test.js errors in errorOnDeprecated mode
+⚪ jasmine.arrayContaining.test.js errors in errorOnDeprecated mode
+⚪ jasmine.createSpy.test.js errors in errorOnDeprecated mode
+⚪ jasmine.objectContaining.test.js errors in errorOnDeprecated mode
+⚪ jasmine.stringMatching.test.js errors in errorOnDeprecated mode
+⚪ pending.test.js errors in errorOnDeprecated mode
+⚪ spyOn.test.js errors in errorOnDeprecated mode
+⚪ spyOnProperty.test.js errors in errorOnDeprecated mode
+⚪ defaultTimeoutInterval.test.js errors in errorOnDeprecated mode
+⚪ fail.test.js errors when not in errorOnDeprecated mode
+⚪ jasmine.addMatchers.test.js passes when not in errorOnDeprecated mode
+⚪ jasmine.any.test.js passes when not in errorOnDeprecated mode
+⚪ jasmine.anything.test.js passes when not in errorOnDeprecated mode
+⚪ jasmine.arrayContaining.test.js passes when not in errorOnDeprecated mode
+⚪ jasmine.createSpy.test.js passes when not in errorOnDeprecated mode
+⚪ jasmine.objectContaining.test.js passes when not in errorOnDeprecated mode
+⚪ jasmine.stringMatching.test.js passes when not in errorOnDeprecated mode
+⚪ pending.test.js passes when not in errorOnDeprecated mode
+⚪ spyOn.test.js passes when not in errorOnDeprecated mode
+⚪ spyOnProperty.test.js errors when not in errorOnDeprecated mode
+⚪ defaultTimeoutInterval.test.js passes when not in errorOnDeprecated mode
+```
+### ✅ e2e/__tests__/esmConfigFile.test.ts
+```
+✅ reads config from cjs file
+on node ^12.17.0 || >=13.2.0
+ ✅ reads config from mjs file
+ ✅ reads config from js file when package.json#type=module
+```
+### ✅ e2e/__tests__/executeTestsOnceInMpr.ts
+```
+✅ Tests are executed only once even in an MPR
+```
+### ✅ e2e/__tests__/existentRoots.test.ts
+```
+✅ error when rootDir does not exist
+✅ error when rootDir is a file
+✅ error when roots directory does not exist
+✅ error when roots is a file
+```
+### ✅ e2e/__tests__/expectAsyncMatcher.test.ts
+```
+✅ works with passing tests
+✅ shows the correct errors in stderr when failing tests
+```
+### ✅ e2e/__tests__/expectInVm.test.ts
+```
+✅ expect works correctly with RegExps created inside a VM
+```
+### ✅ e2e/__tests__/extraGlobals.test.ts
+```
+✅ works with injected globals
+```
+### ✅ e2e/__tests__/failureDetailsProperty.test.ts
+```
+✅ that the failureDetails property is set
+```
+### ✅ e2e/__tests__/failures.test.ts
+```
+✅ not throwing Error objects
+✅ works with node assert
+✅ works with assertions in separate files
+✅ works with async failures
+✅ works with snapshot failures
+✅ works with snapshot failures with hint
+✅ errors after test has completed
+```
+### ✅ e2e/__tests__/fakePromises.test.ts
+```
+Fake promises
+ ✅ should be possible to resolve with fake timers using immediates
+ ✅ should be possible to resolve with fake timers using asap
+```
+### ✅ e2e/__tests__/fatalWorkerError.test.ts
+```
+✅ fails a test that terminates the worker with a fatal error
+```
+### ✅ e2e/__tests__/filter.test.ts
+```
+Dynamic test filtering
+ ✅ uses the default JSON option
+ ✅ uses the CLI option
+ ✅ ignores the filter if requested to do so
+ ✅ throws when you return clowny stuff
+ ✅ will call setup on filter before filtering
+ ✅ will print error when filter throws
+ ✅ will return no results when setup hook throws
+```
+### ✅ e2e/__tests__/findRelatedFiles.test.ts
+```
+--findRelatedTests flag
+ ✅ runs tests related to filename
+ ✅ runs tests related to uppercased filename on case-insensitive os
+ ✅ runs tests related to filename with a custom dependency extractor
+ ✅ generates coverage report for filename
+ ✅ coverage configuration is applied correctly
+```
+### ✅ e2e/__tests__/focusedTests.test.ts
+```
+✅ runs only "it.only" tests
+```
+### ✅ e2e/__tests__/forceExit.test.ts
+```
+✅ exits the process after test are done but before timers complete
+```
+### ✅ e2e/__tests__/generatorMock.test.ts
+```
+✅ mock works with generator
+```
+### ✅ e2e/__tests__/global-mutation.test.ts
+```
+✅ can redefine global
+```
+### ✅ e2e/__tests__/global.test.ts
+```
+✅ globals are properly defined
+```
+### ✅ e2e/__tests__/globals.test.ts
+```
+✅ basic test constructs
+✅ interleaved describe and test children order
+✅ skips
+✅ only
+✅ cannot have describe with no implementation
+✅ cannot test with no implementation
+✅ skips with expand arg
+✅ only with expand arg
+✅ cannot test with no implementation with expand arg
+✅ function as descriptor
+```
+### ✅ e2e/__tests__/globalSetup.test.ts
+```
+✅ globalSetup is triggered once before all test suites
+✅ jest throws an error when globalSetup does not export a function
+✅ globalSetup function gets jest config object as a parameter
+✅ should call globalSetup function of multiple projects
+✅ should not call a globalSetup of a project if there are no tests to run from this project
+✅ should not call any globalSetup if there are no tests to run
+✅ globalSetup works with default export
+✅ globalSetup throws with named export
+✅ should not transpile the transformer
+✅ should transform node_modules if configured by transformIgnorePatterns
+```
+### ✅ e2e/__tests__/globalTeardown.test.ts
+```
+✅ globalTeardown is triggered once after all test suites
+✅ jest throws an error when globalTeardown does not export a function
+✅ globalTeardown function gets jest config object as a parameter
+✅ should call globalTeardown function of multiple projects
+✅ should not call a globalTeardown of a project if there are no tests to run from this project
+✅ globalTeardown works with default export
+✅ globalTeardown throws with named export
+```
+### ✅ e2e/__tests__/hasteMapMockChanged.test.ts
+```
+✅ should not warn when a mock file changes
+```
+### ✅ e2e/__tests__/hasteMapSha1.test.ts
+```
+✅ exits the process after test are done but before timers complete
+```
+### ✅ e2e/__tests__/hasteMapSize.test.ts
+```
+✅ reports the correct file size
+✅ updates the file size when a file changes
+```
+### ✅ e2e/__tests__/importedGlobals.test.ts
+```
+✅ imported globals
+```
+### ✅ e2e/__tests__/injectGlobals.test.ts
+```
+✅ globals are undefined if passed `false` from CLI
+✅ globals are undefined if passed `false` from config
+```
+### ✅ e2e/__tests__/jasmineAsync.test.ts
+```
+async jasmine
+ ✅ works with beforeAll
+ ✅ works with beforeEach
+ ✅ works with afterAll
+ ✅ works with afterEach
+ ✅ works with fit
+ ✅ works with xit
+ ✅ throws when not a promise is returned
+ ✅ tests async promise code
+ ✅ works with concurrent
+ ✅ works with concurrent within a describe block when invoked with testNamePattern
+ ✅ works with concurrent.each
+ ✅ works with concurrent.only.each
+ ✅ doesn't execute more than 5 tests simultaneously
+ ✅ async test fails
+ ✅ generator test
+```
+### ✅ e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts
+```
+async jasmine with pending during test
+ ✅ does not work on jest-circus
+ ⚪ should be reported as a pending test
+```
+### ✅ e2e/__tests__/jest.config.js.test.ts
+```
+✅ works with jest.config.js
+✅ traverses directory tree up until it finds jest.config
+✅ invalid JS in jest.config.js
+```
+### ✅ e2e/__tests__/jest.config.ts.test.ts
+```
+✅ works with jest.config.ts
+✅ works with tsconfig.json
+✅ traverses directory tree up until it finds jest.config
+✅ it does type check the config
+✅ invalid JS in jest.config.ts
+```
### ❌ e2e/__tests__/jestChangedFiles.test.ts
```
✅ gets hg SCM roots and dedupes them
@@ -420,6 +898,143 @@
✅ monitors only root paths for hg
✅ handles a bad revision for "changedSince", for hg
```
+### ✅ e2e/__tests__/jestEnvironmentJsdom.test.ts
+```
+✅ check is not leaking memory
+```
+### ✅ e2e/__tests__/jestRequireActual.test.ts
+```
+✅ understands dependencies using jest.requireActual
+```
+### ✅ e2e/__tests__/jestRequireMock.test.ts
+```
+✅ understands dependencies using jest.requireMock
+```
+### ✅ e2e/__tests__/json.test.ts
+```
+✅ JSON is available in the global scope
+✅ JSON.parse creates objects from within this context
+```
+### ✅ e2e/__tests__/jsonReporter.test.ts
+```
+JSON Reporter
+ ✅ writes test result to sum.result.json
+ ✅ outputs coverage report
+```
+### ✅ e2e/__tests__/lifecycles.ts
+```
+✅ suite with invalid assertions in afterAll
+```
+### ✅ e2e/__tests__/listTests.test.ts
+```
+--listTests flag
+ ✅ causes tests to be printed in different lines
+ ✅ causes tests to be printed out as JSON when using the --json flag
+```
+### ✅ e2e/__tests__/locationInResults.test.ts
+```
+✅ defaults to null for location
+✅ adds correct location info when provided with flag
+```
+### ✅ e2e/__tests__/logHeapUsage.test.ts
+```
+✅ logs memory usage
+```
+### ✅ e2e/__tests__/mockNames.test.ts
+```
+✅ suite without mock name, mock called
+✅ suite without mock name, mock not called
+✅ suite with mock name, expect mock not called
+✅ suite with mock name, mock called, expect fail
+✅ suite with mock name, mock called 5 times
+✅ suite with mock name, mock not called 5 times, expect fail
+✅ suite with mock name, mock called
+✅ suite with mock name, mock not called
+```
+### ✅ e2e/__tests__/modernFakeTimers.test.ts
+```
+modern implementation of fake timers
+ ✅ should be possible to use modern implementation from config
+ ✅ should be possible to use modern implementation from jest-object
+```
+### ✅ e2e/__tests__/moduleNameMapper.test.ts
+```
+✅ moduleNameMapper wrong configuration
+✅ moduleNameMapper wrong array configuration
+✅ moduleNameMapper correct configuration
+✅ moduleNameMapper correct configuration mocking module of absolute path
+✅ moduleNameMapper with mocking
+```
+### ✅ e2e/__tests__/moduleParentNullInTest.ts
+```
+✅ module.parent should be null in test files
+```
+### ✅ e2e/__tests__/multiProjectRunner.test.ts
+```
+✅ --listTests doesn't duplicate the test files
+✅ can pass projects or global config
+✅ "No tests found" message for projects
+✅ allows a single non-root project
+✅ allows a single non-root project
+✅ correctly runs a single non-root project
+✅ correctly runs a single non-root project
+✅ projects can be workspaces with non-JS/JSON files
+✅ objects in project configuration
+✅ allows a single project
+✅ resolves projects and their properly
+✅ Does transform files with the corresponding project transformer
+doesn't bleed module file extensions resolution with multiple workers
+ ✅ external config files
+ ✅ inline config files
+```
+### ✅ e2e/__tests__/nativeAsyncMock.test.ts
+```
+✅ mocks async functions
+```
+### ✅ e2e/__tests__/nativeEsm.test.ts
+```
+✅ test config is without transform
+on node ^12.16.0 || >=13.7.0
+ ✅ runs test with native ESM
+on node >=14.3.0
+ ⚪ supports top-level await
+```
+### ✅ e2e/__tests__/nativeEsmTypescript.test.ts
+```
+on node ^12.16.0 || >=13.7.0
+ ✅ runs TS test with native ESM
+```
+### ✅ e2e/__tests__/nestedEventLoop.test.ts
+```
+✅ works with nested event loops
+```
+### ✅ e2e/__tests__/nestedTestDefinitions.test.ts
+```
+✅ print correct error message with nested test definitions outside describe
+✅ print correct error message with nested test definitions inside describe
+✅ print correct message when nesting describe inside it
+✅ print correct message when nesting a hook inside it
+```
+### ✅ e2e/__tests__/nodePath.test.ts
+```
+✅ supports NODE_PATH
+```
+### ✅ e2e/__tests__/noTestFound.test.ts
+```
+Coverage Report
+ ✅ outputs coverage report
+File path not found in mulit-project scenario
+ ✅ outputs coverage report
+```
+### ✅ e2e/__tests__/noTestsFound.test.ts
+```
+No tests are found
+ ✅ fails the test suite in standard situation
+ ✅ doesn't fail the test suite if --passWithNoTests passed
+ ✅ doesn't fail the test suite if using --lastCommit
+ ✅ doesn't fail the test suite if using --onlyChanged
+ ✅ doesn't fail the test suite if using --findRelatedTests
+```
### ❌ e2e/__tests__/onlyChanged.test.ts
```
✅ run for "onlyChanged" and "changedSince"
@@ -432,4 +1047,5416 @@
❌ gets changed files for hg
Error: expect(received).toMatch(expected)
✅ path on Windows is case-insensitive
+```
+### ✅ e2e/__tests__/onlyFailuresNonWatch.test.ts
+```
+✅ onlyFailures flag works in non-watch mode
+```
+### ✅ e2e/__tests__/overrideGlobals.test.ts
+```
+✅ overriding native promise does not freeze Jest
+✅ has a duration even if time is faked
+```
+### ✅ e2e/__tests__/pnp.test.ts
+```
+✅ successfully runs the tests inside `pnp/`
+```
+### ✅ e2e/__tests__/presets.test.ts
+```
+✅ supports json preset
+✅ supports js preset
+```
+### ✅ e2e/__tests__/processExit.test.ts
+```
+✅ prints stack trace pointing to process.exit call
+```
+### ✅ e2e/__tests__/promiseReject.test.ts
+```
+✅
+```
+### ✅ e2e/__tests__/regexCharInPath.test.ts
+```
+Regex Char In Path
+ ✅ parses paths containing regex chars correctly
+```
+### ✅ e2e/__tests__/requireAfterTeardown.test.ts
+```
+✅ prints useful error for requires after test is done
+```
+### ✅ e2e/__tests__/requireMain.test.ts
+```
+✅ provides `require.main` set to test suite module
+```
+### ✅ e2e/__tests__/requireMainAfterCreateRequire.test.ts
+```
+on node >=12.2.0
+ ✅ `require.main` not undefined after createRequire
+```
+### ✅ e2e/__tests__/requireMainIsolateModules.test.ts
+```
+✅ `require.main` on using `jest.isolateModules` should not be undefined
+```
+### ✅ e2e/__tests__/requireMainResetModules.test.ts
+```
+✅ `require.main` on using `--resetModules='true'` should not be undefined
+✅ `require.main` on using `jest.resetModules()` should not be undefined
+```
+### ✅ e2e/__tests__/requireV8Module.test.ts
+```
+✅ v8 module
+```
+### ✅ e2e/__tests__/resetModules.test.ts
+```
+✅ jest.resetModules should not error when _isMockFunction is defined but not boolean
+```
+### ✅ e2e/__tests__/resolve.test.ts
+```
+✅ resolve platform modules
+```
+### ✅ e2e/__tests__/resolveGetPaths.test.ts
+```
+✅ require.resolve.paths
+```
+### ✅ e2e/__tests__/resolveNodeModule.test.ts
+```
+✅ resolve node module
+```
+### ✅ e2e/__tests__/resolveNoFileExtensions.test.ts
+```
+✅ show error message with matching files
+✅ show error message when no js moduleFileExtensions
+```
+### ✅ e2e/__tests__/resolveWithPaths.test.ts
+```
+✅ require.resolve with paths
+```
+### ✅ e2e/__tests__/runProgrammatically.test.ts
+```
+✅ run Jest programmatically cjs
+✅ run Jest programmatically esm
+```
+### ✅ e2e/__tests__/runTestsByPath.test.ts
+```
+✅ runs tests by exact path
+```
+### ✅ e2e/__tests__/runtimeInternalModuleRegistry.test.ts
+```
+Runtime Internal Module Registry
+ ✅ correctly makes use of internal module registry when requiring modules
+```
+### ✅ e2e/__tests__/selectProjects.test.ts
+```
+Given a config with two named projects, first-project and second-project when Jest is started with `--selectProjects first-project`
+ ✅ runs the tests in the first project only
+ ✅ prints that only first-project will run
+Given a config with two named projects, first-project and second-project when Jest is started with `--selectProjects second-project`
+ ✅ runs the tests in the second project only
+ ✅ prints that only second-project will run
+Given a config with two named projects, first-project and second-project when Jest is started with `--selectProjects first-project second-project`
+ ✅ runs the tests in the first and second projects
+ ✅ prints that both first-project and second-project will run
+Given a config with two named projects, first-project and second-project when Jest is started without providing `--selectProjects`
+ ✅ runs the tests in the first and second projects
+ ✅ does not print which projects are run
+Given a config with two named projects, first-project and second-project when Jest is started with `--selectProjects third-project`
+ ✅ fails
+ ✅ prints that no project was found
+Given a config with two projects, first-project and an unnamed project when Jest is started with `--selectProjects first-project`
+ ✅ runs the tests in the first project only
+ ✅ prints that a project does not have a name
+ ✅ prints that only first-project will run
+Given a config with two projects, first-project and an unnamed project when Jest is started without providing `--selectProjects`
+ ✅ runs the tests in the first and second projects
+ ✅ does not print that a project has no name
+Given a config with two projects, first-project and an unnamed project when Jest is started with `--selectProjects third-project`
+ ✅ fails
+ ✅ prints that a project does not have a name
+ ✅ prints that no project was found
+```
+### ✅ e2e/__tests__/setImmediate.test.ts
+```
+✅ setImmediate
+```
+### ✅ e2e/__tests__/setupFilesAfterEnvConfig.test.ts
+```
+setupFilesAfterEnv
+ ✅ requires multiple setup files before each file in the suite
+ ✅ requires setup files *after* the test runners are required
+```
+### ✅ e2e/__tests__/showConfig.test.ts
+```
+✅ --showConfig outputs config info and exits
+```
+### ✅ e2e/__tests__/skipBeforeAfterAll.test.ts
+```
+✅ correctly skip `beforeAll`s in skipped tests
+```
+### ✅ e2e/__tests__/snapshot-unknown.test.ts
+```
+Snapshot serializers
+ ✅ renders snapshot
+```
+### ✅ e2e/__tests__/snapshot.test.ts
+```
+Snapshot
+ ✅ stores new snapshots on the first run
+ ✅ works with escaped characters
+ ✅ works with escaped regex
+ ✅ works with template literal substitutions
+Snapshot Validation
+ ✅ does not save snapshots in CI mode by default
+ ✅ works on subsequent runs without `-u`
+ ✅ deletes the snapshot if the test suite has been removed
+ ✅ deletes a snapshot when a test does removes all the snapshots
+ ✅ updates the snapshot when a test removes some snapshots
+```
+### ✅ e2e/__tests__/snapshotMockFs.test.ts
+```
+✅ store snapshot even if fs is mocked
+```
+### ✅ e2e/__tests__/snapshotResolver.test.ts
+```
+Custom snapshot resolver
+ ✅ Resolves snapshot files using custom resolver
+```
+### ✅ e2e/__tests__/snapshotSerializers.test.ts
+```
+Snapshot serializers
+ ✅ renders snapshot
+ ✅ compares snapshots correctly
+```
+### ✅ e2e/__tests__/stackTrace.test.ts
+```
+Stack Trace
+ ✅ prints a stack trace for runtime errors
+ ✅ does not print a stack trace for runtime errors when --noStackTrace is given
+ ✅ prints a stack trace for matching errors
+ ✅ does not print a stack trace for matching errors when --noStackTrace is given
+ ✅ prints a stack trace for errors
+ ✅ prints a stack trace for errors without message in stack trace
+ ✅ does not print a stack trace for errors when --noStackTrace is given
+```
+### ✅ e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts
+```
+✅ prints a usable stack trace even if no Error.captureStackTrace
+```
+### ✅ e2e/__tests__/stackTraceSourceMaps.test.ts
+```
+✅ processes stack traces and code frames with source maps
+```
+### ✅ e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts
+```
+✅ processes stack traces and code frames with source maps with coverage
+```
+### ✅ e2e/__tests__/supportsDashedArgs.ts
+```
+✅ works with passing tests
+✅ throws error for unknown dashed & camelcase args
+```
+### ✅ e2e/__tests__/symbol.test.ts
+```
+✅ Symbol deletion
+```
+### ✅ e2e/__tests__/testEnvironment.test.ts
+```
+✅ respects testEnvironment docblock
+```
+### ✅ e2e/__tests__/testEnvironmentAsync.test.ts
+```
+✅ triggers setup/teardown hooks
+```
+### ✅ e2e/__tests__/testEnvironmentCircus.test.ts
+```
+✅ calls testEnvironment handleTestEvent
+```
+### ✅ e2e/__tests__/testEnvironmentCircusAsync.test.ts
+```
+✅ calls asynchronous handleTestEvent in testEnvironment
+```
+### ✅ e2e/__tests__/testFailureExitCode.test.ts
+```
+✅ exits with a specified code when test fail
+✅ exits with a specified code when bailing from a failed test
+```
+### ✅ e2e/__tests__/testInRoot.test.ts
+```
+✅ runs tests in only test.js and spec.js
+```
+### ✅ e2e/__tests__/testNamePattern.test.ts
+```
+✅ testNamePattern
+```
+### ✅ e2e/__tests__/testNamePatternSkipped.test.ts
+```
+✅ testNamePattern skipped
+```
+### ✅ e2e/__tests__/testPathPatternReporterMessage.test.ts
+```
+✅ prints a message with path pattern at the end
+```
+### ✅ e2e/__tests__/testResultsProcessor.test.ts
+```
+✅ testNamePattern
+```
+### ✅ e2e/__tests__/testRetries.test.ts
+```
+Test Retries
+ ✅ retries failed tests
+ ✅ reporter shows more than 1 invocation if test is retried
+ ✅ reporter shows 1 invocation if tests are not retried
+ ✅ tests are not retried if beforeAll hook failure occurs
+```
+### ✅ e2e/__tests__/testTodo.test.ts
+```
+✅ works with all statuses
+✅ shows error messages when called with no arguments
+✅ shows error messages when called with multiple arguments
+✅ shows error messages when called with invalid argument
+✅ shows todo messages when in verbose mode
+```
+### ✅ e2e/__tests__/timeouts.test.ts
+```
+✅ exceeds the timeout
+✅ does not exceed the timeout
+✅ exceeds the command line testTimeout
+✅ does not exceed the command line testTimeout
+```
+### ✅ e2e/__tests__/timeoutsLegacy.test.ts
+```
+✅ does not work on jest-circus
+⚪ exceeds the timeout set using jasmine.DEFAULT_TIMEOUT_INTERVAL
+⚪ does not exceed the timeout using jasmine.DEFAULT_TIMEOUT_INTERVAL
+⚪ can read and write jasmine.DEFAULT_TIMEOUT_INTERVAL
+```
+### ✅ e2e/__tests__/timerResetMocks.test.ts
+```
+✅ run timers after resetAllMocks test
+✅ run timers with resetMocks in config test
+```
+### ✅ e2e/__tests__/timerUseRealTimers.test.ts
+```
+✅ useRealTimers cancels "timers": "fake" for whole test file
+```
+### ✅ e2e/__tests__/toMatchInlineSnapshot.test.ts
+```
+✅ basic support
+✅ do not indent empty lines
+✅ handles property matchers
+✅ removes obsolete external snapshots
+✅ supports async matchers
+✅ supports async tests
+✅ writes snapshots with non-literals in expect(...)
+✅ handles mocking native modules prettier relies on
+✅ supports custom matchers
+✅ supports custom matchers with property matcher
+✅ multiple custom matchers and native matchers
+✅ indentation is correct in the presences of existing snapshots
+```
+### ✅ e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts
+```
+✅ works with a single snapshot
+✅ works when a different assertion is failing
+✅ works when multiple tests have snapshots but only one of them failed multiple times
+```
+### ✅ e2e/__tests__/toMatchSnapshot.test.ts
+```
+✅ basic support
+✅ error thrown before snapshot
+✅ first snapshot fails, second passes
+✅ does not mark snapshots as obsolete in skipped tests
+✅ accepts custom snapshot name
+✅ handles property matchers
+✅ handles invalid property matchers
+✅ handles property matchers with hint
+✅ handles property matchers with deep properties
+```
+### ✅ e2e/__tests__/toMatchSnapshotWithRetries.test.ts
+```
+✅ works with a single snapshot
+✅ works when multiple tests have snapshots but only one of them failed multiple times
+```
+### ✅ e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts
+```
+✅ empty external
+✅ empty internal ci false
+✅ undefined internal ci true
+```
+### ✅ e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts
+```
+✅ works fine when function throws error
+✅ updates existing snapshot
+✅ cannot be used with .not
+✅ should support rejecting promises
+```
+### ✅ e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts
+```
+✅ works fine when function throws error
+✅ throws the error if tested function didn't throw error
+✅ accepts custom snapshot name
+✅ cannot be used with .not
+✅ should support rejecting promises
+```
+### ✅ e2e/__tests__/transform.test.ts
+```
+babel-jest
+ ✅ runs transpiled code
+ ✅ instruments only specific files and collects coverage
+babel-jest ignored
+ ✅ tells user to match ignored files
+babel-jest with manual transformer
+ ✅ runs transpiled code
+no babel-jest
+ ✅ fails with syntax error on flow types
+ ✅ instrumentation with no babel-jest
+custom transformer
+ ✅ proprocesses files
+ ✅ instruments files
+multiple-transformers
+ ✅ transforms dependencies using specific transformers
+ecmascript-modules-support
+ ✅ runs transpiled code
+transformer-config
+ ✅ runs transpiled code
+ ✅ instruments only specific files and collects coverage
+transformer caching
+ ✅ does not rerun transform within worker
+transform-environment
+ ✅ should transform the environment
+transform-runner
+ ✅ should transform runner
+transform-testrunner
+ ✅ should transform testRunner
+```
+### ✅ e2e/__tests__/transformLinkedModules.test.ts
+```
+✅ should transform linked modules
+```
+### ✅ e2e/__tests__/typescriptCoverage.test.ts
+```
+✅ instruments and collects coverage for typescript files
+```
+### ✅ e2e/__tests__/unexpectedToken.test.ts
+```
+✅ triggers unexpected token error message for non-JS assets
+✅ triggers unexpected token error message for untranspiled node_modules
+✅ does not trigger unexpected token error message for regular syntax errors
+```
+### ✅ e2e/__tests__/useStderr.test.ts
+```
+✅ no tests found message is redirected to stderr
+```
+### ✅ e2e/__tests__/v8Coverage.test.ts
+```
+✅ prints coverage with missing sourcemaps
+✅ prints coverage with empty sourcemaps
+```
+### ✅ e2e/__tests__/verbose.test.ts
+```
+✅ Verbose Reporter
+```
+### ✅ e2e/__tests__/version.test.ts
+```
+✅ works with jest.config.js
+```
+### ✅ e2e/__tests__/watchModeNoAccess.test.ts
+```
+✅ does not re-run tests when only access time is modified
+```
+### ✅ e2e/__tests__/watchModeOnlyFailed.test.ts
+```
+✅ can press "f" to run only failed tests
+```
+### ✅ e2e/__tests__/watchModePatterns.test.ts
+```
+✅ can press "p" to filter by file name
+✅ can press "t" to filter by test name
+```
+### ✅ e2e/__tests__/watchModeUpdateSnapshot.test.ts
+```
+✅ can press "u" to update snapshots
+```
+### ✅ e2e/__tests__/workerForceExit.test.ts
+```
+✅ prints a warning if a worker is force exited
+✅ force exits a worker that fails to exit gracefully
+```
+### ✅ e2e/__tests__/wrongEnv.test.ts
+```
+Wrong globals for environment
+ ✅ print useful error for window
+ ✅ print useful error for document
+ ✅ print useful error for navigator
+ ✅ print useful error for unref
+ ✅ print useful error when it explodes during evaluation
+```
+### ✅ e2e/custom-test-sequencer/a.test.js
+```
+✅ a
+```
+### ✅ e2e/custom-test-sequencer/b.test.js
+```
+✅ b
+```
+### ✅ e2e/custom-test-sequencer/c.test.js
+```
+✅ c
+```
+### ✅ e2e/custom-test-sequencer/d.test.js
+```
+✅ d
+```
+### ✅ e2e/custom-test-sequencer/e.test.js
+```
+✅ e
+```
+### ✅ e2e/test-in-root/spec.js
+```
+✅ stub
+```
+### ✅ e2e/test-in-root/test.js
+```
+✅ stub
+```
+### ✅ e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js
+```
+timers
+ ✅ should work before calling resetAllMocks
+ ✅ should not break after calling resetAllMocks
+```
+### ✅ e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js
+```
+timers
+ ✅ should work before calling resetAllMocks
+```
+### ✅ e2e/v8-coverage/empty-sourcemap/test.ts
+```
+✅ dummy-test
+```
+### ✅ examples/angular/app.component.spec.ts
+```
+AppComponent
+ ✅ should create the app
+ ✅ should have as title 'angular'
+ ✅ should render title in a h1 tag
+```
+### ✅ examples/angular/shared/data.service.spec.ts
+```
+Service: DataService
+ ✅ should create service
+ ✅ should return the right title
+```
+### ✅ examples/angular/shared/sub.service.spec.ts
+```
+Service: SubService
+ ✅ should create service
+```
+### ✅ examples/async/__tests__/user.test.js
+```
+✅ works with resolves
+✅ works with promises
+✅ works with async/await
+✅ works with async/await and resolves
+✅ tests error with rejects
+✅ tests error with promises
+✅ tests error with async/await
+✅ tests error with async/await and rejects
+```
+### ✅ examples/automatic-mocks/__tests__/automock.test.js
+```
+✅ if utils are mocked
+✅ mocked implementation
+```
+### ✅ examples/automatic-mocks/__tests__/createMockFromModule.test.js
+```
+✅ implementation created by automock
+✅ implementation created by jest.createMockFromModule
+```
+### ✅ examples/automatic-mocks/__tests__/disableAutomocking.test.js
+```
+✅ original implementation
+```
+### ✅ examples/enzyme/__tests__/CheckboxWithLabel-test.js
+```
+✅ CheckboxWithLabel changes the text after click
+```
+### ✅ examples/getting-started/sum.test.js
+```
+✅ adds 1 + 2 to equal 3
+```
+### ✅ examples/jquery/__tests__/display_user.test.js
+```
+✅ displays a user after a click
+```
+### ✅ examples/jquery/__tests__/fetch_current_user.test.js
+```
+✅ calls into $.ajax with the correct params
+✅ calls the callback when $.ajax requests are finished
+```
+### ✅ examples/manual-mocks/__tests__/file_summarizer.test.js
+```
+listFilesInDirectorySync
+ ✅ includes all files in the directory in the summary
+```
+### ✅ examples/manual-mocks/__tests__/lodashMocking.test.js
+```
+✅ if lodash head is mocked
+```
+### ✅ examples/manual-mocks/__tests__/user.test.js
+```
+✅ if orginal user model
+```
+### ✅ examples/manual-mocks/__tests__/userMocked.test.js
+```
+✅ if user model is mocked
+```
+### ✅ examples/module-mock/__tests__/full_mock.js
+```
+✅ does a full mock
+```
+### ✅ examples/module-mock/__tests__/mock_per_test.js
+```
+define mock per test
+ ✅ uses mocked module
+ ✅ uses actual module
+```
+### ✅ examples/module-mock/__tests__/partial_mock.js
+```
+✅ does a partial mock
+```
+### ✅ examples/mongodb/__test__/db.test.js
+```
+✅ should aggregate docs from collection
+```
+### ✅ examples/react-native/__tests__/intro.test.js
+```
+✅ renders correctly
+✅ renders the ActivityIndicator component
+✅ renders the TextInput component
+✅ renders the FlatList component
+```
+### ✅ examples/react-testing-library/__tests__/CheckboxWithLabel-test.js
+```
+✅ CheckboxWithLabel changes the text after click
+```
+### ✅ examples/react/__tests__/CheckboxWithLabel-test.js
+```
+✅ CheckboxWithLabel changes the text after click
+```
+### ✅ examples/snapshot/__tests__/clock.react.test.js
+```
+✅ renders correctly
+```
+### ✅ examples/snapshot/__tests__/link.react.test.js
+```
+✅ renders correctly
+✅ renders as an anchor when no page is set
+✅ properly escapes quotes
+✅ changes the class when hovered
+```
+### ✅ examples/timer/__tests__/infinite_timer_game.test.js
+```
+✅ schedules a 10-second timer after 1 second
+```
+### ✅ examples/timer/__tests__/timer_game.test.js
+```
+timerGame
+ ✅ waits 1 second before ending the game
+ ✅ calls the callback after 1 second via runAllTimers
+ ✅ calls the callback after 1 second via advanceTimersByTime
+```
+### ✅ examples/typescript/__tests__/calc.test.ts
+```
+calc - mocks
+ ✅ returns result from subtract
+ ✅ returns result from sum
+ ✅ adds last result to memory
+ ✅ subtracts last result to memory
+ ✅ clears the memory
+ ✅ throws an error when invalid Op is passed
+```
+### ✅ examples/typescript/__tests__/CheckboxWithLabel-test.tsx
+```
+✅ CheckboxWithLabel changes the text after click
+```
+### ✅ examples/typescript/__tests__/sub-test.ts
+```
+✅ subtracts 5 - 1 to equal 4 in TypeScript
+```
+### ✅ examples/typescript/__tests__/sum-test.ts
+```
+✅ adds 1 + 2 to equal 3 in TScript
+✅ adds 1 + 2 to equal 3 in JavaScript
+```
+### ✅ examples/typescript/__tests__/sum.test.js
+```
+✅ adds 1 + 2 to equal 3 in Typescript
+✅ adds 1 + 2 to equal 3 in JavaScript
+```
+### ✅ packages/babel-jest/src/__tests__/index.ts
+```
+✅ Returns source string with inline maps when no transformOptions is passed
+✅ can pass null to createTransformer
+caller option correctly merges from defaults and options
+ ✅ {"supportsDynamicImport":true,"supportsStaticESM":true} -> {"supportsDynamicImport":true,"supportsStaticESM":true}
+ ✅ {"supportsDynamicImport":false,"supportsStaticESM":false} -> {"supportsDynamicImport":false,"supportsStaticESM":false}
+ ✅ {"supportsStaticESM":false} -> {"supportsDynamicImport":false,"supportsStaticESM":false}
+ ✅ {"supportsDynamicImport":true} -> {"supportsDynamicImport":true,"supportsStaticESM":false}
+```
+### ✅ packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts
+```
+babel-plugin-jest-hoist
+ ✅ automatic react runtime
+ ✅ top level mocking
+ ✅ within a block
+ ✅ within a block with no siblings
+```
+### ✅ packages/diff-sequences/src/__tests__/index.property.test.ts
+```
+✅ should be reflexive
+✅ should find the same number of common items when switching the inputs
+✅ should have at most the length of its inputs
+✅ should have at most the same number of each character as its inputs
+✅ should be a subsequence of its inputs
+✅ should be no-op when passing common items
+✅ should find the exact common items when one array is subarray of the other
+```
+### ✅ packages/diff-sequences/src/__tests__/index.test.ts
+```
+invalid arg length
+ ✅ is not a number
+ ✅ Infinity is not a safe integer
+ ✅ Not a Number is not a safe integer
+ ✅ MAX_SAFE_INTEGER + 1 is not a safe integer
+ ✅ MIN_SAFE_INTEGER - 1 is not a safe integer
+ ✅ is a negative integer
+invalid arg callback
+ ✅ null is not a function
+ ✅ undefined is not a function
+input callback encapsulates comparison zero and negative zero
+ ✅ are not common according to Object.is method
+ ✅ are common according to === operator
+input callback encapsulates comparison Not a Number
+ ✅ is common according to Object.is method
+ ✅ is not common according to === operator
+input callback encapsulates sequences
+ ✅ arrays of strings
+ ✅ string and array of strings
+ ✅ strings
+no common items negative zero is equivalent to zero for length
+ ✅ of a
+ ✅ of b
+ ✅ of a and b
+no common items
+ ✅ a empty and b empty
+ ✅ a empty and b non-empty
+ ✅ a non-empty and b empty
+no common items a non-empty and b non-empty
+ ✅ baDeltaLength 0 even
+ ✅ baDeltaLength 1 odd
+ ✅ baDeltaLength 2 even
+ ✅ baDeltaLength 7 odd
+only common items
+ ✅ length 1
+ ✅ length 2
+all common items outside
+ ✅ preceding changes
+ ✅ following change
+ ✅ preceding and following changes in one sequence
+some common items inside and outside
+ ✅ preceding changes adjacent to common in both sequences
+ ✅ following changes adjacent to common in both sequences
+all common items inside non-recursive
+ ✅ move from start to end relative to change
+ ✅ move from start to end relative to common
+ ✅ move from start to end relative to change and common
+ ✅ reverse relative to change
+ ✅ preceding middle
+ ✅ following middle
+all common items inside recursive
+ ✅ prev reverse at depth 1 and preceding at depth 2
+ ✅ last forward at depth 1 and following at depth 2
+ ✅ preceding at depth 2 and both at depth 3 of following
+ ✅ interleaved single change
+ ✅ interleaved double changes
+ ✅ optimization decreases iMaxF
+ ✅ optimization decreases iMaxR
+common substrings
+ ✅ progress
+ ✅ regression
+ ✅ wrapping
+```
+### ✅ packages/expect/src/__tests__/assertionCounts.test.ts
+```
+.assertions()
+ ✅ does not throw
+ ✅ redeclares different assertion count
+ ✅ expects no assertions
+.hasAssertions()
+ ✅ does not throw if there is an assertion
+ ✅ throws if expected is not undefined
+ ✅ hasAssertions not leaking to global state
+```
+### ✅ packages/expect/src/__tests__/asymmetricMatchers.test.ts
+```
+✅ Any.asymmetricMatch()
+✅ Any.toAsymmetricMatcher()
+✅ Any.toAsymmetricMatcher() with function name
+✅ Any throws when called with empty constructor
+✅ Anything matches any type
+✅ Anything does not match null and undefined
+✅ Anything.toAsymmetricMatcher()
+✅ ArrayContaining matches
+✅ ArrayContaining does not match
+✅ ArrayContaining throws for non-arrays
+✅ ArrayNotContaining matches
+✅ ArrayNotContaining does not match
+✅ ArrayNotContaining throws for non-arrays
+✅ ObjectContaining matches
+✅ ObjectContaining does not match
+✅ ObjectContaining matches defined properties
+✅ ObjectContaining matches prototype properties
+✅ ObjectContaining throws for non-objects
+✅ ObjectContaining does not mutate the sample
+✅ ObjectNotContaining matches
+✅ ObjectNotContaining does not match
+✅ ObjectNotContaining inverts ObjectContaining
+✅ ObjectNotContaining throws for non-objects
+✅ StringContaining matches string against string
+✅ StringContaining throws if expected value is not string
+✅ StringContaining returns false if received value is not string
+✅ StringNotContaining matches string against string
+✅ StringNotContaining throws if expected value is not string
+✅ StringNotContaining returns true if received value is not string
+✅ StringMatching matches string against regexp
+✅ StringMatching matches string against string
+✅ StringMatching throws if expected value is neither string nor regexp
+✅ StringMatching returns false if received value is not string
+✅ StringMatching returns false even if coerced non-string received value matches pattern
+✅ StringNotMatching matches string against regexp
+✅ StringNotMatching matches string against string
+✅ StringNotMatching throws if expected value is neither string nor regexp
+✅ StringNotMatching returns true if received value is not string
+```
+### ✅ packages/expect/src/__tests__/extend.test.ts
+```
+✅ is available globally when matcher is unary
+✅ is available globally when matcher is variadic
+✅ exposes matcherUtils in context
+✅ is ok if there is no message specified
+✅ exposes an equality function to custom matchers
+✅ defines asymmetric unary matchers
+✅ defines asymmetric unary matchers that can be prefixed by not
+✅ defines asymmetric variadic matchers
+✅ defines asymmetric variadic matchers that can be prefixed by not
+✅ prints the Symbol into the error message
+```
+### ✅ packages/expect/src/__tests__/isError.test.ts
+```
+isError
+ ✅ should not assume objects are errors
+ ✅ should detect simple error instances
+ ✅ should detect errors from another context
+ ✅ should detect DOMException errors from another context
+```
+### ✅ packages/expect/src/__tests__/matchers-toContain.property.test.ts
+```
+toContain
+ ✅ should always find the value when inside the array
+ ✅ should not find the value if it has been cloned into the array
+```
+### ✅ packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts
+```
+toContainEqual
+ ✅ should always find the value when inside the array
+ ✅ should always find the value when cloned inside the array
+```
+### ✅ packages/expect/src/__tests__/matchers-toEqual.property.test.ts
+```
+toEqual
+ ✅ should be reflexive
+ ✅ should be symmetric
+```
+### ✅ packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts
+```
+toStrictEqual
+ ✅ should be reflexive
+ ✅ should be symmetric
+toStrictEqual on node >=9
+ ✅ should be equivalent to Node deepStrictEqual
+```
+### ✅ packages/expect/src/__tests__/matchers.test.js
+```
+✅ should throw if passed two arguments
+.rejects
+ ✅ should reject
+ ✅ should reject with toThrow
+ ✅ should reject async function to toThrow
+ ✅ fails non-promise value "a" synchronously
+ ✅ fails non-promise value "a"
+ ✅ fails non-promise value [1] synchronously
+ ✅ fails non-promise value [1]
+ ✅ fails non-promise value [Function anonymous] synchronously
+ ✅ fails non-promise value [Function anonymous]
+ ✅ fails non-promise value {"a": 1} synchronously
+ ✅ fails non-promise value {"a": 1}
+ ✅ fails non-promise value 4 synchronously
+ ✅ fails non-promise value 4
+ ✅ fails non-promise value null synchronously
+ ✅ fails non-promise value null
+ ✅ fails non-promise value true synchronously
+ ✅ fails non-promise value true
+ ✅ fails non-promise value undefined synchronously
+ ✅ fails non-promise value undefined
+ ✅ fails for promise that resolves
+.resolves
+ ✅ should resolve
+ ✅ fails non-promise value "a" synchronously
+ ✅ fails non-promise value "a"
+ ✅ fails non-promise value [1] synchronously
+ ✅ fails non-promise value [1]
+ ✅ fails non-promise value [Function anonymous] synchronously
+ ✅ fails non-promise value [Function anonymous]
+ ✅ fails non-promise value {"a": 1} synchronously
+ ✅ fails non-promise value {"a": 1}
+ ✅ fails non-promise value 4 synchronously
+ ✅ fails non-promise value 4
+ ✅ fails non-promise value null synchronously
+ ✅ fails non-promise value null
+ ✅ fails non-promise value true synchronously
+ ✅ fails non-promise value true
+ ✅ fails non-promise value undefined synchronously
+ ✅ fails non-promise value undefined
+ ✅ fails for promise that rejects
+.toBe()
+ ✅ does not throw
+ ✅ fails for: 1 and 2
+ ✅ fails for: true and false
+ ✅ fails for: [Function anonymous] and [Function anonymous]
+ ✅ fails for: {} and {}
+ ✅ fails for: {"a": 1} and {"a": 1}
+ ✅ fails for: {"a": 1} and {"a": 5}
+ ✅ fails for: {"a": [Function a], "b": 2} and {"a": Any, "b": 2}
+ ✅ fails for: {"a": undefined, "b": 2} and {"b": 2}
+ ✅ fails for: 2020-02-20T00:00:00.000Z and 2020-02-20T00:00:00.000Z
+ ✅ fails for: 2020-02-21T00:00:00.000Z and 2020-02-20T00:00:00.000Z
+ ✅ fails for: /received/ and /expected/
+ ✅ fails for: Symbol(received) and Symbol(expected)
+ ✅ fails for: [Error: received] and [Error: expected]
+ ✅ fails for: "abc" and "cde"
+ ✅ fails for: "painless JavaScript testing" and "delightful JavaScript testing"
+ ✅ fails for: "" and "compare one-line string to empty string"
+ ✅ fails for: "with
+trailing space" and "without trailing space"
+ ✅ fails for: "four
+4
+line
+string" and "3
+line
+string"
+ ✅ fails for: [] and []
+ ✅ fails for: null and undefined
+ ✅ fails for: -0 and 0
+ ✅ fails for: 1n and 2n
+ ✅ fails for: {"a": 1n} and {"a": 1n}
+ ✅ fails for 'false' with '.not'
+ ✅ fails for '1' with '.not'
+ ✅ fails for '"a"' with '.not'
+ ✅ fails for 'undefined' with '.not'
+ ✅ fails for 'null' with '.not'
+ ✅ fails for '{}' with '.not'
+ ✅ fails for '[]' with '.not'
+ ✅ fails for '1n' with '.not'
+ ✅ fails for '1n' with '.not'
+ ✅ does not crash on circular references
+ ✅ assertion error matcherResult property contains matcher name, expected and actual values
+.toStrictEqual()
+ ✅ does not ignore keys with undefined values
+ ✅ does not ignore keys with undefined values inside an array
+ ✅ does not ignore keys with undefined values deep inside an object
+ ✅ passes when comparing same type
+ ✅ matches the expected snapshot when it fails
+ ✅ displays substring diff
+ ✅ displays substring diff for multiple lines
+ ✅ does not pass for different types
+ ✅ does not simply compare constructor names
+ ✅ passes for matching sparse arrays
+ ✅ does not pass when sparseness of arrays do not match
+ ✅ does not pass when equally sparse arrays have different values
+.toEqual()
+ ✅ {pass: false} expect(true).toEqual(false)
+ ✅ {pass: false} expect(1).toEqual(2)
+ ✅ {pass: false} expect(0).toEqual(-0)
+ ✅ {pass: false} expect(0).toEqual(5e-324)
+ ✅ {pass: false} expect(5e-324).toEqual(0)
+ ✅ {pass: false} expect(0).toEqual({})
+ ✅ {pass: false} expect({}).toEqual(0)
+ ✅ {pass: false} expect({}).toEqual({})
+ ✅ {pass: false} expect("abc").toEqual({"0": "a", "1": "b", "2": "c"})
+ ✅ {pass: false} expect({"0": "a", "1": "b", "2": "c"}).toEqual("abc")
+ ✅ {pass: false} expect(/abc/gsy).toEqual(/abc/g)
+ ✅ {pass: false} expect({"a": 1}).toEqual({"a": 2})
+ ✅ {pass: false} expect({"a": 5}).toEqual({"b": 6})
+ ✅ {pass: false} expect({"foo": {"bar": 1}}).toEqual({"foo": {}})
+ ✅ {pass: false} expect({"getterAndSetter": {}}).toEqual({"getterAndSetter": {"foo": "bar"}})
+ ✅ {pass: false} expect({"frozenGetterAndSetter": {}}).toEqual({"frozenGetterAndSetter": {"foo": "bar"}})
+ ✅ {pass: false} expect({"getter": {}}).toEqual({"getter": {"foo": "bar"}})
+ ✅ {pass: false} expect({"frozenGetter": {}}).toEqual({"frozenGetter": {"foo": "bar"}})
+ ✅ {pass: false} expect({"setter": undefined}).toEqual({"setter": {"foo": "bar"}})
+ ✅ {pass: false} expect({"frozenSetter": undefined}).toEqual({"frozenSetter": {"foo": "bar"}})
+ ✅ {pass: false} expect("banana").toEqual("apple")
+ ✅ {pass: false} expect("1 234,57 $").toEqual("1 234,57 $")
+ ✅ {pass: false} expect("type TypeName = T extends Function ? \"function\" : \"object\";").toEqual("type TypeName = T extends Function
+? \"function\"
+: \"object\";")
+ ✅ {pass: false} expect(null).toEqual(undefined)
+ ✅ {pass: false} expect([1]).toEqual([2])
+ ✅ {pass: false} expect([1, 2]).toEqual([2, 1])
+ ✅ {pass: false} expect(Immutable.List [1]).toEqual(Immutable.List [2])
+ ✅ {pass: false} expect(Immutable.List [1, 2]).toEqual(Immutable.List [2, 1])
+ ✅ {pass: false} expect(Map {}).toEqual(Set {})
+ ✅ {pass: false} expect(Set {1, 2}).toEqual(Set {})
+ ✅ {pass: false} expect(Set {1, 2}).toEqual(Set {1, 2, 3})
+ ✅ {pass: false} expect(Set {[1], [2]}).toEqual(Set {[1], [2], [3]})
+ ✅ {pass: false} expect(Set {[1], [2]}).toEqual(Set {[1], [2], [2]})
+ ✅ {pass: false} expect(Set {Set {1}, Set {2}}).toEqual(Set {Set {1}, Set {3}})
+ ✅ {pass: false} expect(Immutable.Set [1, 2]).toEqual(Immutable.Set [])
+ ✅ {pass: false} expect(Immutable.Set [1, 2]).toEqual(Immutable.Set [1, 2, 3])
+ ✅ {pass: false} expect(Immutable.OrderedSet [1, 2]).toEqual(Immutable.OrderedSet [2, 1])
+ ✅ {pass: false} expect(Map {1 => "one", 2 => "two"}).toEqual(Map {1 => "one"})
+ ✅ {pass: false} expect(Map {"a" => 0}).toEqual(Map {"b" => 0})
+ ✅ {pass: false} expect(Map {"v" => 1}).toEqual(Map {"v" => 2})
+ ✅ {pass: false} expect(Map {["v"] => 1}).toEqual(Map {["v"] => 2})
+ ✅ {pass: false} expect(Map {[1] => Map {[1] => "one"}}).toEqual(Map {[1] => Map {[1] => "two"}})
+ ✅ {pass: false} expect(Immutable.Map {"a": 0}).toEqual(Immutable.Map {"b": 0})
+ ✅ {pass: false} expect(Immutable.Map {"v": 1}).toEqual(Immutable.Map {"v": 2})
+ ✅ {pass: false} expect(Immutable.OrderedMap {1: "one", 2: "two"}).toEqual(Immutable.OrderedMap {2: "two", 1: "one"})
+ ✅ {pass: false} expect(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}).toEqual(Immutable.Map {"1": Immutable.Map {"2": {"a": 11}}})
+ ✅ {pass: false} expect([97, 98, 99]).toEqual([97, 98, 100])
+ ✅ {pass: false} expect({"a": 1, "b": 2}).toEqual(ObjectContaining {"a": 2})
+ ✅ {pass: false} expect(false).toEqual(ObjectContaining {"a": 2})
+ ✅ {pass: false} expect([1, 3]).toEqual(ArrayContaining [1, 2])
+ ✅ {pass: false} expect(1).toEqual(ArrayContaining [1, 2])
+ ✅ {pass: false} expect("abd").toEqual(StringContaining "bc")
+ ✅ {pass: false} expect("abd").toEqual(StringMatching /bc/i)
+ ✅ {pass: false} expect(undefined).toEqual(Anything)
+ ✅ {pass: false} expect(undefined).toEqual(Any)
+ ✅ {pass: false} expect("Eve").toEqual({"asymmetricMatch": [Function asymmetricMatch]})
+ ✅ {pass: false} expect({"target": {"nodeType": 1, "value": "a"}}).toEqual({"target": {"nodeType": 1, "value": "b"}})
+ ✅ {pass: false} expect({"nodeName": "div", "nodeType": 1}).toEqual({"nodeName": "p", "nodeType": 1})
+ ✅ {pass: false} expect({Symbol(foo): 1, Symbol(bar): 2}).toEqual({Symbol(foo): Any, Symbol(bar): 1})
+ ✅ {pass: false} expect(1n).toEqual(2n)
+ ✅ {pass: false} expect(1n).toEqual(1)
+ ✅ {pass: true} expect(true).not.toEqual(true)
+ ✅ {pass: true} expect(1).not.toEqual(1)
+ ✅ {pass: true} expect(NaN).not.toEqual(NaN)
+ ✅ {pass: true} expect(0).not.toEqual(0)
+ ✅ {pass: true} expect(0).not.toEqual(0)
+ ✅ {pass: true} expect({}).not.toEqual({})
+ ✅ {pass: true} expect("abc").not.toEqual("abc")
+ ✅ {pass: true} expect("abc").not.toEqual("abc")
+ ✅ {pass: true} expect("abc").not.toEqual("abc")
+ ✅ {pass: true} expect([1]).not.toEqual([1])
+ ✅ {pass: true} expect([1, 2]).not.toEqual([1, 2])
+ ✅ {pass: true} expect(Immutable.List [1]).not.toEqual(Immutable.List [1])
+ ✅ {pass: true} expect(Immutable.List [1, 2]).not.toEqual(Immutable.List [1, 2])
+ ✅ {pass: true} expect({}).not.toEqual({})
+ ✅ {pass: true} expect({"a": 99}).not.toEqual({"a": 99})
+ ✅ {pass: true} expect(Set {}).not.toEqual(Set {})
+ ✅ {pass: true} expect(Set {1, 2}).not.toEqual(Set {1, 2})
+ ✅ {pass: true} expect(Set {1, 2}).not.toEqual(Set {2, 1})
+ ✅ {pass: true} expect(Set {[1], [2]}).not.toEqual(Set {[2], [1]})
+ ✅ {pass: true} expect(Set {Set {[1]}, Set {[2]}}).not.toEqual(Set {Set {[2]}, Set {[1]}})
+ ✅ {pass: true} expect(Set {[1], [2], [3], [3]}).not.toEqual(Set {[3], [3], [2], [1]})
+ ✅ {pass: true} expect(Set {{"a": 1}, {"b": 2}}).not.toEqual(Set {{"b": 2}, {"a": 1}})
+ ✅ {pass: true} expect(Immutable.Set []).not.toEqual(Immutable.Set [])
+ ✅ {pass: true} expect(Immutable.Set [1, 2]).not.toEqual(Immutable.Set [1, 2])
+ ✅ {pass: true} expect(Immutable.Set [1, 2]).not.toEqual(Immutable.Set [2, 1])
+ ✅ {pass: true} expect(Immutable.OrderedSet []).not.toEqual(Immutable.OrderedSet [])
+ ✅ {pass: true} expect(Immutable.OrderedSet [1, 2]).not.toEqual(Immutable.OrderedSet [1, 2])
+ ✅ {pass: true} expect(Map {}).not.toEqual(Map {})
+ ✅ {pass: true} expect(Map {1 => "one", 2 => "two"}).not.toEqual(Map {1 => "one", 2 => "two"})
+ ✅ {pass: true} expect(Map {1 => "one", 2 => "two"}).not.toEqual(Map {2 => "two", 1 => "one"})
+ ✅ {pass: true} expect(Map {[1] => "one", [2] => "two", [3] => "three", [3] => "four"}).not.toEqual(Map {[3] => "three", [3] => "four", [2] => "two", [1] => "one"})
+ ✅ {pass: true} expect(Map {[1] => Map {[1] => "one"}, [2] => Map {[2] => "two"}}).not.toEqual(Map {[2] => Map {[2] => "two"}, [1] => Map {[1] => "one"}})
+ ✅ {pass: true} expect(Map {[1] => "one", [2] => "two"}).not.toEqual(Map {[2] => "two", [1] => "one"})
+ ✅ {pass: true} expect(Map {{"a": 1} => "one", {"b": 2} => "two"}).not.toEqual(Map {{"b": 2} => "two", {"a": 1} => "one"})
+ ✅ {pass: true} expect(Map {1 => ["one"], 2 => ["two"]}).not.toEqual(Map {2 => ["two"], 1 => ["one"]})
+ ✅ {pass: true} expect(Immutable.Map {}).not.toEqual(Immutable.Map {})
+ ✅ {pass: true} expect(Immutable.Map {1: "one", 2: "two"}).not.toEqual(Immutable.Map {1: "one", 2: "two"})
+ ✅ {pass: true} expect(Immutable.Map {1: "one", 2: "two"}).not.toEqual(Immutable.Map {2: "two", 1: "one"})
+ ✅ {pass: true} expect(Immutable.OrderedMap {1: "one", 2: "two"}).not.toEqual(Immutable.OrderedMap {1: "one", 2: "two"})
+ ✅ {pass: true} expect(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}).not.toEqual(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}})
+ ✅ {pass: true} expect([97, 98, 99]).not.toEqual([97, 98, 99])
+ ✅ {pass: true} expect({"a": 1, "b": 2}).not.toEqual(ObjectContaining {"a": 1})
+ ✅ {pass: true} expect([1, 2, 3]).not.toEqual(ArrayContaining [2, 3])
+ ✅ {pass: true} expect("abcd").not.toEqual(StringContaining "bc")
+ ✅ {pass: true} expect("abcd").not.toEqual(StringMatching /bc/)
+ ✅ {pass: true} expect(true).not.toEqual(Anything)
+ ✅ {pass: true} expect([Function anonymous]).not.toEqual(Any)
+ ✅ {pass: true} expect({"a": 1, "b": [Function b], "c": true}).not.toEqual({"a": 1, "b": Any, "c": Anything})
+ ✅ {pass: true} expect("Alice").not.toEqual({"asymmetricMatch": [Function asymmetricMatch]})
+ ✅ {pass: true} expect({"nodeName": "div", "nodeType": 1}).not.toEqual({"nodeName": "div", "nodeType": 1})
+ ✅ {pass: true} expect({Symbol(foo): 1, Symbol(bar): 2}).not.toEqual({Symbol(foo): Any, Symbol(bar): 2})
+ ✅ {pass: true} expect(1n).not.toEqual(1n)
+ ✅ {pass: true} expect(0n).not.toEqual(0n)
+ ✅ {pass: true} expect([1n]).not.toEqual([1n])
+ ✅ {pass: true} expect([1n, 2]).not.toEqual([1n, 2])
+ ✅ {pass: true} expect(Immutable.List [1n]).not.toEqual(Immutable.List [1n])
+ ✅ {pass: true} expect({"a": 99n}).not.toEqual({"a": 99n})
+ ✅ {pass: true} expect(Set {1n, 2n}).not.toEqual(Set {1n, 2n})
+ ✅ assertion error matcherResult property contains matcher name, expected and actual values
+ ✅ symbol based keys in arrays are processed correctly
+ ✅ non-enumerable members should be skipped during equal
+ ✅ non-enumerable symbolic members should be skipped during equal
+.toEqual() cyclic object equality
+ ✅ properties with the same circularity are equal
+ ✅ properties with different circularity are not equal
+ ✅ are not equal if circularity is not on the same property
+.toBeInstanceOf()
+ ✅ passing Map {} and [Function Map]
+ ✅ passing [] and [Function Array]
+ ✅ passing {} and [Function A]
+ ✅ passing {} and [Function B]
+ ✅ passing {} and [Function B]
+ ✅ passing {} and [Function anonymous]
+ ✅ passing {} and [Function B]
+ ✅ passing {} and [Function name() {}]
+ ✅ failing "a" and [Function String]
+ ✅ failing 1 and [Function Number]
+ ✅ failing true and [Function Boolean]
+ ✅ failing {} and [Function B]
+ ✅ failing {} and [Function A]
+ ✅ failing undefined and [Function String]
+ ✅ failing null and [Function String]
+ ✅ failing /\w+/ and [Function anonymous]
+ ✅ failing {} and [Function RegExp]
+ ✅ throws if constructor is not a function
+.toBeTruthy(), .toBeFalsy()
+ ✅ does not accept arguments
+ ✅ '{}' is truthy
+ ✅ '[]' is truthy
+ ✅ 'true' is truthy
+ ✅ '1' is truthy
+ ✅ '"a"' is truthy
+ ✅ '0.5' is truthy
+ ✅ 'Map {}' is truthy
+ ✅ '[Function anonymous]' is truthy
+ ✅ 'Infinity' is truthy
+ ✅ '1n' is truthy
+ ✅ 'false' is falsy
+ ✅ 'null' is falsy
+ ✅ 'NaN' is falsy
+ ✅ '0' is falsy
+ ✅ '""' is falsy
+ ✅ 'undefined' is falsy
+ ✅ '0n' is falsy
+.toBeNaN()
+ ✅ {pass: true} expect(NaN).toBeNaN()
+ ✅ throws
+.toBeNull()
+ ✅ fails for '{}'
+ ✅ fails for '[]'
+ ✅ fails for 'true'
+ ✅ fails for '1'
+ ✅ fails for '"a"'
+ ✅ fails for '0.5'
+ ✅ fails for 'Map {}'
+ ✅ fails for '[Function anonymous]'
+ ✅ fails for 'Infinity'
+ ✅ fails for null with .not
+ ✅ pass for null
+.toBeDefined(), .toBeUndefined()
+ ✅ '{}' is defined
+ ✅ '[]' is defined
+ ✅ 'true' is defined
+ ✅ '1' is defined
+ ✅ '"a"' is defined
+ ✅ '0.5' is defined
+ ✅ 'Map {}' is defined
+ ✅ '[Function anonymous]' is defined
+ ✅ 'Infinity' is defined
+ ✅ '1n' is defined
+ ✅ undefined is undefined
+.toBeGreaterThan(), .toBeLessThan(), .toBeGreaterThanOrEqual(), .toBeLessThanOrEqual()
+ ✅ {pass: true} expect(1).toBeLessThan(2)
+ ✅ {pass: false} expect(2).toBeLessThan(1)
+ ✅ {pass: true} expect(2).toBeGreaterThan(1)
+ ✅ {pass: false} expect(1).toBeGreaterThan(2)
+ ✅ {pass: true} expect(1).toBeLessThanOrEqual(2)
+ ✅ {pass: false} expect(2).toBeLessThanOrEqual(1)
+ ✅ {pass: true} expect(2).toBeGreaterThanOrEqual(1)
+ ✅ {pass: false} expect(1).toBeGreaterThanOrEqual(2)
+ ✅ throws: [1, 2]
+ ✅ {pass: true} expect(-Infinity).toBeLessThan(Infinity)
+ ✅ {pass: false} expect(Infinity).toBeLessThan(-Infinity)
+ ✅ {pass: true} expect(Infinity).toBeGreaterThan(-Infinity)
+ ✅ {pass: false} expect(-Infinity).toBeGreaterThan(Infinity)
+ ✅ {pass: true} expect(-Infinity).toBeLessThanOrEqual(Infinity)
+ ✅ {pass: false} expect(Infinity).toBeLessThanOrEqual(-Infinity)
+ ✅ {pass: true} expect(Infinity).toBeGreaterThanOrEqual(-Infinity)
+ ✅ {pass: false} expect(-Infinity).toBeGreaterThanOrEqual(Infinity)
+ ✅ throws: [-Infinity, Infinity]
+ ✅ {pass: true} expect(5e-324).toBeLessThan(1.7976931348623157e+308)
+ ✅ {pass: false} expect(1.7976931348623157e+308).toBeLessThan(5e-324)
+ ✅ {pass: true} expect(1.7976931348623157e+308).toBeGreaterThan(5e-324)
+ ✅ {pass: false} expect(5e-324).toBeGreaterThan(1.7976931348623157e+308)
+ ✅ {pass: true} expect(5e-324).toBeLessThanOrEqual(1.7976931348623157e+308)
+ ✅ {pass: false} expect(1.7976931348623157e+308).toBeLessThanOrEqual(5e-324)
+ ✅ {pass: true} expect(1.7976931348623157e+308).toBeGreaterThanOrEqual(5e-324)
+ ✅ {pass: false} expect(5e-324).toBeGreaterThanOrEqual(1.7976931348623157e+308)
+ ✅ throws: [5e-324, 1.7976931348623157e+308]
+ ✅ {pass: true} expect(17).toBeLessThan(34)
+ ✅ {pass: false} expect(34).toBeLessThan(17)
+ ✅ {pass: true} expect(34).toBeGreaterThan(17)
+ ✅ {pass: false} expect(17).toBeGreaterThan(34)
+ ✅ {pass: true} expect(17).toBeLessThanOrEqual(34)
+ ✅ {pass: false} expect(34).toBeLessThanOrEqual(17)
+ ✅ {pass: true} expect(34).toBeGreaterThanOrEqual(17)
+ ✅ {pass: false} expect(17).toBeGreaterThanOrEqual(34)
+ ✅ throws: [17, 34]
+ ✅ {pass: true} expect(3).toBeLessThan(7)
+ ✅ {pass: false} expect(7).toBeLessThan(3)
+ ✅ {pass: true} expect(7).toBeGreaterThan(3)
+ ✅ {pass: false} expect(3).toBeGreaterThan(7)
+ ✅ {pass: true} expect(3).toBeLessThanOrEqual(7)
+ ✅ {pass: false} expect(7).toBeLessThanOrEqual(3)
+ ✅ {pass: true} expect(7).toBeGreaterThanOrEqual(3)
+ ✅ {pass: false} expect(3).toBeGreaterThanOrEqual(7)
+ ✅ throws: [3, 7]
+ ✅ {pass: true} expect(9).toBeLessThan(18)
+ ✅ {pass: false} expect(18).toBeLessThan(9)
+ ✅ {pass: true} expect(18).toBeGreaterThan(9)
+ ✅ {pass: false} expect(9).toBeGreaterThan(18)
+ ✅ {pass: true} expect(9).toBeLessThanOrEqual(18)
+ ✅ {pass: false} expect(18).toBeLessThanOrEqual(9)
+ ✅ {pass: true} expect(18).toBeGreaterThanOrEqual(9)
+ ✅ {pass: false} expect(9).toBeGreaterThanOrEqual(18)
+ ✅ throws: [9, 18]
+ ✅ {pass: true} expect(0.1).toBeLessThan(0.2)
+ ✅ {pass: false} expect(0.2).toBeLessThan(0.1)
+ ✅ {pass: true} expect(0.2).toBeGreaterThan(0.1)
+ ✅ {pass: false} expect(0.1).toBeGreaterThan(0.2)
+ ✅ {pass: true} expect(0.1).toBeLessThanOrEqual(0.2)
+ ✅ {pass: false} expect(0.2).toBeLessThanOrEqual(0.1)
+ ✅ {pass: true} expect(0.2).toBeGreaterThanOrEqual(0.1)
+ ✅ {pass: false} expect(0.1).toBeGreaterThanOrEqual(0.2)
+ ✅ throws: [0.1, 0.2]
+ ✅ can compare BigInt to Numbers
+ ✅ {pass: true} expect(1n).toBeLessThan(2n)
+ ✅ {pass: false} expect(2n).toBeLessThan(1n)
+ ✅ {pass: true} expect(2n).toBeGreaterThan(1n)
+ ✅ {pass: false} expect(1n).toBeGreaterThan(2n)
+ ✅ {pass: true} expect(1n).toBeLessThanOrEqual(2n)
+ ✅ {pass: false} expect(2n).toBeLessThanOrEqual(1n)
+ ✅ {pass: true} expect(2n).toBeGreaterThanOrEqual(1n)
+ ✅ {pass: false} expect(1n).toBeGreaterThanOrEqual(2n)
+ ✅ throws: [1n, 2n]
+ ✅ {pass: true} expect(17n).toBeLessThan(34n)
+ ✅ {pass: false} expect(34n).toBeLessThan(17n)
+ ✅ {pass: true} expect(34n).toBeGreaterThan(17n)
+ ✅ {pass: false} expect(17n).toBeGreaterThan(34n)
+ ✅ {pass: true} expect(17n).toBeLessThanOrEqual(34n)
+ ✅ {pass: false} expect(34n).toBeLessThanOrEqual(17n)
+ ✅ {pass: true} expect(34n).toBeGreaterThanOrEqual(17n)
+ ✅ {pass: false} expect(17n).toBeGreaterThanOrEqual(34n)
+ ✅ throws: [17n, 34n]
+ ✅ {pass: true} expect(-1).toBeLessThan(2n)
+ ✅ {pass: false} expect(2n).toBeLessThan(-1)
+ ✅ {pass: true} expect(2n).toBeGreaterThan(-1)
+ ✅ {pass: false} expect(-1).toBeGreaterThan(2n)
+ ✅ {pass: true} expect(-1).toBeLessThanOrEqual(2n)
+ ✅ {pass: false} expect(2n).toBeLessThanOrEqual(-1)
+ ✅ {pass: true} expect(2n).toBeGreaterThanOrEqual(-1)
+ ✅ {pass: false} expect(-1).toBeGreaterThanOrEqual(2n)
+ ✅ throws: [-1, 2n]
+ ✅ equal numbers: [1, 1]
+ ✅ equal numbers: [5e-324, 5e-324]
+ ✅ equal numbers: [1.7976931348623157e+308, 1.7976931348623157e+308]
+ ✅ equal numbers: [Infinity, Infinity]
+ ✅ equal numbers: [-Infinity, -Infinity]
+ ✅ equal numbers: [1, 1]
+ ✅ equal numbers: [9007199254740991, 9007199254740991]
+.toContain(), .toContainEqual()
+ ✅ iterable
+ ✅ '[1, 2, 3, 4]' contains '1'
+ ✅ '["a", "b", "c", "d"]' contains '"a"'
+ ✅ '[undefined, null]' contains 'null'
+ ✅ '[undefined, null]' contains 'undefined'
+ ✅ '[Symbol(a)]' contains 'Symbol(a)'
+ ✅ '"abcdef"' contains '"abc"'
+ ✅ '"11112111"' contains '"2"'
+ ✅ 'Set {"abc", "def"}' contains '"abc"'
+ ✅ '[0, 1]' contains '1'
+ ✅ '[1n, 2n, 3n, 4n]' contains '1n'
+ ✅ '[1, 2, 3, 3n, 4]' contains '3n'
+ ✅ '[1, 2, 3]' does not contain '4'
+ ✅ '[null, undefined]' does not contain '1'
+ ✅ '[{}, []]' does not contain '[]'
+ ✅ '[{}, []]' does not contain '{}'
+ ✅ '[1n, 2n, 3n]' does not contain '3'
+ ✅ error cases
+ ✅ '[1, 2, 3, 4]' contains a value equal to '1'
+ ✅ '["a", "b", "c", "d"]' contains a value equal to '"a"'
+ ✅ '[undefined, null]' contains a value equal to 'null'
+ ✅ '[undefined, null]' contains a value equal to 'undefined'
+ ✅ '[Symbol(a)]' contains a value equal to 'Symbol(a)'
+ ✅ '[{"a": "b"}, {"a": "c"}]' contains a value equal to '{"a": "b"}'
+ ✅ 'Set {1, 2, 3, 4}' contains a value equal to '1'
+ ✅ '[0, 1]' contains a value equal to '1'
+ ✅ '[{"a": "b"}, {"a": "c"}]' does not contain a value equal to'{"a": "d"}'
+ ✅ error cases for toContainEqual
+.toBeCloseTo
+ ✅ {pass: true} expect(0).toBeCloseTo(0)
+ ✅ {pass: true} expect(0).toBeCloseTo(0.001)
+ ✅ {pass: true} expect(1.23).toBeCloseTo(1.229)
+ ✅ {pass: true} expect(1.23).toBeCloseTo(1.226)
+ ✅ {pass: true} expect(1.23).toBeCloseTo(1.225)
+ ✅ {pass: true} expect(1.23).toBeCloseTo(1.234)
+ ✅ {pass: true} expect(Infinity).toBeCloseTo(Infinity)
+ ✅ {pass: true} expect(-Infinity).toBeCloseTo(-Infinity)
+ ✅ {pass: false} expect(0).toBeCloseTo(0.01)
+ ✅ {pass: false} expect(1).toBeCloseTo(1.23)
+ ✅ {pass: false} expect(1.23).toBeCloseTo(1.2249999)
+ ✅ {pass: false} expect(Infinity).toBeCloseTo(-Infinity)
+ ✅ {pass: false} expect(Infinity).toBeCloseTo(1.23)
+ ✅ {pass: false} expect(-Infinity).toBeCloseTo(-1.23)
+ ✅ {pass: false} expect(3.141592e-7).toBeCloseTo(3e-7, 8)
+ ✅ {pass: false} expect(56789).toBeCloseTo(51234, -4)
+ ✅ {pass: true} expect(0).toBeCloseTo(0.1, 0)
+ ✅ {pass: true} expect(0).toBeCloseTo(0.0001, 3)
+ ✅ {pass: true} expect(0).toBeCloseTo(0.000004, 5)
+ ✅ {pass: true} expect(2.0000002).toBeCloseTo(2, 5)
+.toBeCloseTo throws: Matcher error
+ ✅ promise empty isNot false received
+ ✅ promise empty isNot true expected
+ ✅ promise rejects isNot false expected
+ ✅ promise rejects isNot true received
+ ✅ promise resolves isNot false received
+ ✅ promise resolves isNot true expected
+.toMatch()
+ ✅ {pass: true} expect(foo).toMatch(foo)
+ ✅ {pass: true} expect(Foo bar).toMatch(/^foo/i)
+ ✅ throws: [bar, foo]
+ ✅ throws: [bar, /foo/]
+ ✅ throws if non String actual value passed: [1, "foo"]
+ ✅ throws if non String actual value passed: [{}, "foo"]
+ ✅ throws if non String actual value passed: [[], "foo"]
+ ✅ throws if non String actual value passed: [true, "foo"]
+ ✅ throws if non String actual value passed: [/foo/i, "foo"]
+ ✅ throws if non String actual value passed: [[Function anonymous], "foo"]
+ ✅ throws if non String actual value passed: [undefined, "foo"]
+ ✅ throws if non String/RegExp expected value passed: ["foo", 1]
+ ✅ throws if non String/RegExp expected value passed: ["foo", {}]
+ ✅ throws if non String/RegExp expected value passed: ["foo", []]
+ ✅ throws if non String/RegExp expected value passed: ["foo", true]
+ ✅ throws if non String/RegExp expected value passed: ["foo", [Function anonymous]]
+ ✅ throws if non String/RegExp expected value passed: ["foo", undefined]
+ ✅ escapes strings properly
+ ✅ does not maintain RegExp state between calls
+.toHaveLength
+ ✅ {pass: true} expect([1, 2]).toHaveLength(2)
+ ✅ {pass: true} expect([]).toHaveLength(0)
+ ✅ {pass: true} expect(["a", "b"]).toHaveLength(2)
+ ✅ {pass: true} expect("abc").toHaveLength(3)
+ ✅ {pass: true} expect("").toHaveLength(0)
+ ✅ {pass: true} expect([Function anonymous]).toHaveLength(0)
+ ✅ {pass: false} expect([1, 2]).toHaveLength(3)
+ ✅ {pass: false} expect([]).toHaveLength(1)
+ ✅ {pass: false} expect(["a", "b"]).toHaveLength(99)
+ ✅ {pass: false} expect("abc").toHaveLength(66)
+ ✅ {pass: false} expect("").toHaveLength(1)
+ ✅ error cases
+.toHaveLength matcher error expected length
+ ✅ not number
+ ✅ number Infinity
+ ✅ number NaN
+ ✅ number float
+ ✅ number negative integer
+.toHaveProperty()
+ ✅ {pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.c.d', 1)
+ ✅ {pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a,b,c,d', 1)
+ ✅ {pass: true} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d', 1)
+ ✅ {pass: true} expect({"a": {"b": [1, 2, 3]}}).toHaveProperty('a,b,1', 2)
+ ✅ {pass: true} expect({"a": {"b": [1, 2, 3]}}).toHaveProperty('a,b,1', Any)
+ ✅ {pass: true} expect({"a": 0}).toHaveProperty('a', 0)
+ ✅ {pass: true} expect({"a": {"b": undefined}}).toHaveProperty('a.b', undefined)
+ ✅ {pass: true} expect({"a": {}}).toHaveProperty('a.b', undefined)
+ ✅ {pass: true} expect({"a": {"b": {"c": 5}}}).toHaveProperty('a.b', {"c": 5})
+ ✅ {pass: true} expect({"property": 1}).toHaveProperty('property', 1)
+ ✅ {pass: true} expect({}).toHaveProperty('a', undefined)
+ ✅ {pass: true} expect({}).toHaveProperty('b', "b")
+ ✅ {pass: true} expect({}).toHaveProperty('setter', undefined)
+ ✅ {pass: true} expect({"val": true}).toHaveProperty('a', undefined)
+ ✅ {pass: true} expect({"val": true}).toHaveProperty('c', "c")
+ ✅ {pass: true} expect({"val": true}).toHaveProperty('val', true)
+ ✅ {pass: true} expect({"nodeName": "DIV"}).toHaveProperty('nodeType', 1)
+ ✅ {pass: true} expect("").toHaveProperty('length', 0)
+ ✅ {pass: true} expect([Function memoized]).toHaveProperty('memo', [])
+ ✅ {pass: false} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.ttt.d', 1)
+ ✅ {pass: false} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.c.d', 2)
+ ✅ {pass: false} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d', 2)
+ ✅ {pass: false} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d', 2)
+ ✅ {pass: false} expect({"children": ["\"That cartoon\""], "props": null, "type": "p"}).toHaveProperty('children,0', "\"That cat cartoon\"")
+ ✅ {pass: false} expect({"children": ["Roses are red.
+Violets are blue.
+Testing with Jest is good for you."], "props": null, "type": "pre"}).toHaveProperty('children,0', "Roses are red, violets are blue.
+Testing with Jest
+Is good for you.")
+ ✅ {pass: false} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a,b,c,d', 2)
+ ✅ {pass: false} expect({"a": {"b": {"c": {}}}}).toHaveProperty('a.b.c.d', 1)
+ ✅ {pass: false} expect({"a": 1}).toHaveProperty('a.b.c.d', 5)
+ ✅ {pass: false} expect({}).toHaveProperty('a', "test")
+ ✅ {pass: false} expect({"a": {"b": 3}}).toHaveProperty('a.b', undefined)
+ ✅ {pass: false} expect(1).toHaveProperty('a.b.c', "test")
+ ✅ {pass: false} expect("abc").toHaveProperty('a.b.c', {"a": 5})
+ ✅ {pass: false} expect({"a": {"b": {"c": 5}}}).toHaveProperty('a.b', {"c": 4})
+ ✅ {pass: false} expect({}).toHaveProperty('a', "a")
+ ✅ {pass: false} expect({}).toHaveProperty('b', undefined)
+ ✅ {pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.c.d')
+ ✅ {pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a,b,c,d')
+ ✅ {pass: true} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d')
+ ✅ {pass: true} expect({"a": {"b": [1, 2, 3]}}).toHaveProperty('a,b,1')
+ ✅ {pass: true} expect({"a": 0}).toHaveProperty('a')
+ ✅ {pass: true} expect({"a": {"b": undefined}}).toHaveProperty('a.b')
+ ✅ {pass: false} expect({"a": {"b": {"c": {}}}}).toHaveProperty('a.b.c.d')
+ ✅ {pass: false} expect({"a": 1}).toHaveProperty('a.b.c.d')
+ ✅ {pass: false} expect({}).toHaveProperty('a')
+ ✅ {pass: false} expect(1).toHaveProperty('a.b.c')
+ ✅ {pass: false} expect("abc").toHaveProperty('a.b.c')
+ ✅ {pass: false} expect(false).toHaveProperty('key')
+ ✅ {pass: false} expect(0).toHaveProperty('key')
+ ✅ {pass: false} expect("").toHaveProperty('key')
+ ✅ {pass: false} expect(Symbol()).toHaveProperty('key')
+ ✅ {pass: false} expect({"key": 1}).toHaveProperty('not')
+ ✅ {error} expect(null).toHaveProperty('a.b')
+ ✅ {error} expect(undefined).toHaveProperty('a')
+ ✅ {error} expect({"a": {"b": {}}}).toHaveProperty('undefined')
+ ✅ {error} expect({"a": {"b": {}}}).toHaveProperty('null')
+ ✅ {error} expect({"a": {"b": {}}}).toHaveProperty('1')
+ ✅ {error} expect({}).toHaveProperty('')
+toMatchObject() circular references simple circular references
+ ✅ {pass: true} expect({"a": "hello", "ref": [Circular]}).toMatchObject({})
+ ✅ {pass: true} expect({"a": "hello", "ref": [Circular]}).toMatchObject({"a": "hello", "ref": [Circular]})
+ ✅ {pass: false} expect({}).toMatchObject({"a": "hello", "ref": [Circular]})
+ ✅ {pass: false} expect({"a": "hello", "ref": [Circular]}).toMatchObject({"a": "world", "ref": [Circular]})
+ ✅ {pass: false} expect({"ref": "not a ref"}).toMatchObject({"a": "hello", "ref": [Circular]})
+toMatchObject() circular references transitive circular references
+ ✅ {pass: true} expect({"a": "hello", "nestedObj": {"parentObj": [Circular]}}).toMatchObject({})
+ ✅ {pass: true} expect({"a": "hello", "nestedObj": {"parentObj": [Circular]}}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})
+ ✅ {pass: false} expect({}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})
+ ✅ {pass: false} expect({"a": "world", "nestedObj": {"parentObj": [Circular]}}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})
+ ✅ {pass: false} expect({"nestedObj": {"parentObj": "not the parent ref"}}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})
+toMatchObject()
+ ✅ {pass: true} expect({"a": "b", "c": "d"}).toMatchObject({"a": "b"})
+ ✅ {pass: true} expect({"a": "b", "c": "d"}).toMatchObject({"a": "b", "c": "d"})
+ ✅ {pass: true} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"a": "b", "t": {"z": "z"}})
+ ✅ {pass: true} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"t": {"x": {"r": "r"}}})
+ ✅ {pass: true} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": [3, 4, 5]})
+ ✅ {pass: true} expect({"a": [3, 4, 5, "v"], "b": "b"}).toMatchObject({"a": [3, 4, 5, "v"]})
+ ✅ {pass: true} expect({"a": 1, "c": 2}).toMatchObject({"a": Any})
+ ✅ {pass: true} expect({"a": {"x": "x", "y": "y"}}).toMatchObject({"a": {"x": Any}})
+ ✅ {pass: true} expect(Set {1, 2}).toMatchObject(Set {1, 2})
+ ✅ {pass: true} expect(Set {1, 2}).toMatchObject(Set {2, 1})
+ ✅ {pass: true} expect(2015-11-30T00:00:00.000Z).toMatchObject(2015-11-30T00:00:00.000Z)
+ ✅ {pass: true} expect({"a": 2015-11-30T00:00:00.000Z, "b": "b"}).toMatchObject({"a": 2015-11-30T00:00:00.000Z})
+ ✅ {pass: true} expect({"a": null, "b": "b"}).toMatchObject({"a": null})
+ ✅ {pass: true} expect({"a": undefined, "b": "b"}).toMatchObject({"a": undefined})
+ ✅ {pass: true} expect({"a": [{"a": "a", "b": "b"}]}).toMatchObject({"a": [{"a": "a"}]})
+ ✅ {pass: true} expect([1, 2]).toMatchObject([1, 2])
+ ✅ {pass: true} expect({"a": undefined}).toMatchObject({"a": undefined})
+ ✅ {pass: true} expect([]).toMatchObject([])
+ ✅ {pass: true} expect([Error: foo]).toMatchObject([Error: foo])
+ ✅ {pass: true} expect([Error: bar]).toMatchObject({"message": "bar"})
+ ✅ {pass: true} expect({}).toMatchObject({"a": undefined, "b": "b"})
+ ✅ {pass: true} expect({"a": "b"}).toMatchObject({"a": "b"})
+ ✅ {pass: true} expect({"a": "b", "c": "d", Symbol(jest): "jest"}).toMatchObject({"a": "b", Symbol(jest): "jest"})
+ ✅ {pass: true} expect({"a": "b", "c": "d", Symbol(jest): "jest"}).toMatchObject({"a": "b", "c": "d", Symbol(jest): "jest"})
+ ✅ {pass: true} expect({}).toMatchObject({"a": undefined, "b": "b", "c": "c"})
+ ✅ {pass: true} expect({}).toMatchObject({"d": 4})
+ ✅ {pass: true} expect({"a": "b", "toString": [Function toString]}).toMatchObject({"toString": Any})
+ ✅ {pass: false} expect({"a": "b", "c": "d"}).toMatchObject({"e": "b"})
+ ✅ {pass: false} expect({"a": "b", "c": "d"}).toMatchObject({"a": "b!", "c": "d"})
+ ✅ {pass: false} expect({"a": "a", "c": "d"}).toMatchObject({"a": Any})
+ ✅ {pass: false} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"a": "b", "t": {"z": [3]}})
+ ✅ {pass: false} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"t": {"l": {"r": "r"}}})
+ ✅ {pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": [3, 4, 5, 6]})
+ ✅ {pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": [3, 4]})
+ ✅ {pass: false} expect({"a": [3, 4, "v"], "b": "b"}).toMatchObject({"a": ["v"]})
+ ✅ {pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": {"b": 4}})
+ ✅ {pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": {"b": Any}})
+ ✅ {pass: false} expect([1, 2]).toMatchObject([1, 3])
+ ✅ {pass: false} expect([0]).toMatchObject([-0])
+ ✅ {pass: false} expect(Set {1, 2}).toMatchObject(Set {2})
+ ✅ {pass: false} expect(2015-11-30T00:00:00.000Z).toMatchObject(2015-10-10T00:00:00.000Z)
+ ✅ {pass: false} expect({"a": 2015-11-30T00:00:00.000Z, "b": "b"}).toMatchObject({"a": 2015-10-10T00:00:00.000Z})
+ ✅ {pass: false} expect({"a": null, "b": "b"}).toMatchObject({"a": "4"})
+ ✅ {pass: false} expect({"a": null, "b": "b"}).toMatchObject({"a": undefined})
+ ✅ {pass: false} expect({"a": undefined}).toMatchObject({"a": null})
+ ✅ {pass: false} expect({"a": [{"a": "a", "b": "b"}]}).toMatchObject({"a": [{"a": "c"}]})
+ ✅ {pass: false} expect({"a": 1, "b": 1, "c": 1, "d": {"e": {"f": 555}}}).toMatchObject({"d": {"e": {"f": 222}}})
+ ✅ {pass: false} expect({}).toMatchObject({"a": undefined})
+ ✅ {pass: false} expect([1, 2, 3]).toMatchObject([2, 3, 1])
+ ✅ {pass: false} expect([1, 2, 3]).toMatchObject([1, 2, 2])
+ ✅ {pass: false} expect([Error: foo]).toMatchObject([Error: bar])
+ ✅ {pass: false} expect({"a": "b"}).toMatchObject({"c": "d"})
+ ✅ {pass: false} expect({"a": "b", "c": "d", Symbol(jest): "jest"}).toMatchObject({"a": "c", Symbol(jest): Any})
+ ✅ {pass: false} expect({"a": "b"}).toMatchObject({"toString": Any})
+ ✅ throws expect(null).toMatchObject({})
+ ✅ throws expect(4).toMatchObject({})
+ ✅ throws expect("44").toMatchObject({})
+ ✅ throws expect(true).toMatchObject({})
+ ✅ throws expect(undefined).toMatchObject({})
+ ✅ throws expect({}).toMatchObject(null)
+ ✅ throws expect({}).toMatchObject(4)
+ ✅ throws expect({}).toMatchObject("some string")
+ ✅ throws expect({}).toMatchObject(true)
+ ✅ throws expect({}).toMatchObject(undefined)
+ ✅ does not match properties up in the prototype chain
+```
+### ✅ packages/expect/src/__tests__/spyMatchers.test.ts
+```
+toBeCalled
+ ✅ works only on spies or jest.fn
+ ✅ passes when called
+ ✅ .not passes when called
+ ✅ fails with any argument passed
+ ✅ .not fails with any argument passed
+ ✅ includes the custom mock name in the error message
+toHaveBeenCalled
+ ✅ works only on spies or jest.fn
+ ✅ passes when called
+ ✅ .not passes when called
+ ✅ fails with any argument passed
+ ✅ .not fails with any argument passed
+ ✅ includes the custom mock name in the error message
+toBeCalledTimes
+ ✅ .not works only on spies or jest.fn
+ ✅ only accepts a number argument
+ ✅ .not only accepts a number argument
+ ✅ passes if function called equal to expected times
+ ✅ .not passes if function called more than expected times
+ ✅ .not passes if function called less than expected times
+ ✅ includes the custom mock name in the error message
+toHaveBeenCalledTimes
+ ✅ .not works only on spies or jest.fn
+ ✅ only accepts a number argument
+ ✅ .not only accepts a number argument
+ ✅ passes if function called equal to expected times
+ ✅ .not passes if function called more than expected times
+ ✅ .not passes if function called less than expected times
+ ✅ includes the custom mock name in the error message
+lastCalledWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with arguments that don't match
+ ✅ works with arguments that match
+ ✅ works with trailing undefined arguments
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects
+ ✅ works with many arguments
+ ✅ works with many arguments that don't match
+ ✅ includes the custom mock name in the error message
+toHaveBeenLastCalledWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with arguments that don't match
+ ✅ works with arguments that match
+ ✅ works with trailing undefined arguments
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects
+ ✅ works with many arguments
+ ✅ works with many arguments that don't match
+ ✅ includes the custom mock name in the error message
+nthCalledWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with arguments that don't match
+ ✅ works with arguments that match
+ ✅ works with trailing undefined arguments
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects
+ ✅ works with three calls
+ ✅ positive throw matcher error for n that is not positive integer
+ ✅ positive throw matcher error for n that is not integer
+ ✅ negative throw matcher error for n that is not integer
+ ✅ includes the custom mock name in the error message
+toHaveBeenNthCalledWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with arguments that don't match
+ ✅ works with arguments that match
+ ✅ works with trailing undefined arguments
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects
+ ✅ works with three calls
+ ✅ positive throw matcher error for n that is not positive integer
+ ✅ positive throw matcher error for n that is not integer
+ ✅ negative throw matcher error for n that is not integer
+ ✅ includes the custom mock name in the error message
+toBeCalledWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with arguments that don't match
+ ✅ works with arguments that match
+ ✅ works with trailing undefined arguments
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects
+ ✅ works with many arguments
+ ✅ works with many arguments that don't match
+ ✅ includes the custom mock name in the error message
+toHaveBeenCalledWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with arguments that don't match
+ ✅ works with arguments that match
+ ✅ works with trailing undefined arguments
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects
+ ✅ works with many arguments
+ ✅ works with many arguments that don't match
+ ✅ includes the custom mock name in the error message
+toReturn
+ ✅ .not works only on jest.fn
+ ✅ throw matcher error if received is spy
+ ✅ passes when returned
+ ✅ passes when undefined is returned
+ ✅ passes when at least one call does not throw
+ ✅ .not passes when not returned
+ ✅ .not passes when all calls throw
+ ✅ .not passes when a call throws undefined
+ ✅ fails with any argument passed
+ ✅ .not fails with any argument passed
+ ✅ includes the custom mock name in the error message
+ ✅ incomplete recursive calls are handled properly
+toHaveReturned
+ ✅ .not works only on jest.fn
+ ✅ throw matcher error if received is spy
+ ✅ passes when returned
+ ✅ passes when undefined is returned
+ ✅ passes when at least one call does not throw
+ ✅ .not passes when not returned
+ ✅ .not passes when all calls throw
+ ✅ .not passes when a call throws undefined
+ ✅ fails with any argument passed
+ ✅ .not fails with any argument passed
+ ✅ includes the custom mock name in the error message
+ ✅ incomplete recursive calls are handled properly
+toReturnTimes
+ ✅ throw matcher error if received is spy
+ ✅ only accepts a number argument
+ ✅ .not only accepts a number argument
+ ✅ passes if function returned equal to expected times
+ ✅ calls that return undefined are counted as returns
+ ✅ .not passes if function returned more than expected times
+ ✅ .not passes if function called less than expected times
+ ✅ calls that throw are not counted
+ ✅ calls that throw undefined are not counted
+ ✅ includes the custom mock name in the error message
+ ✅ incomplete recursive calls are handled properly
+toHaveReturnedTimes
+ ✅ throw matcher error if received is spy
+ ✅ only accepts a number argument
+ ✅ .not only accepts a number argument
+ ✅ passes if function returned equal to expected times
+ ✅ calls that return undefined are counted as returns
+ ✅ .not passes if function returned more than expected times
+ ✅ .not passes if function called less than expected times
+ ✅ calls that throw are not counted
+ ✅ calls that throw undefined are not counted
+ ✅ includes the custom mock name in the error message
+ ✅ incomplete recursive calls are handled properly
+lastReturnedWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with argument that does not match
+ ✅ works with argument that does match
+ ✅ works with undefined
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects directly created
+ ✅ works with Immutable.js objects indirectly created
+ ✅ a call that throws is not considered to have returned
+ ✅ a call that throws undefined is not considered to have returned
+ ✅ includes the custom mock name in the error message
+lastReturnedWith lastReturnedWith
+ ✅ works with three calls
+ ✅ incomplete recursive calls are handled properly
+toHaveLastReturnedWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with argument that does not match
+ ✅ works with argument that does match
+ ✅ works with undefined
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects directly created
+ ✅ works with Immutable.js objects indirectly created
+ ✅ a call that throws is not considered to have returned
+ ✅ a call that throws undefined is not considered to have returned
+ ✅ includes the custom mock name in the error message
+toHaveLastReturnedWith lastReturnedWith
+ ✅ works with three calls
+ ✅ incomplete recursive calls are handled properly
+nthReturnedWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with argument that does not match
+ ✅ works with argument that does match
+ ✅ works with undefined
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects directly created
+ ✅ works with Immutable.js objects indirectly created
+ ✅ a call that throws is not considered to have returned
+ ✅ a call that throws undefined is not considered to have returned
+ ✅ includes the custom mock name in the error message
+nthReturnedWith nthReturnedWith
+ ✅ works with three calls
+ ✅ should replace 1st, 2nd, 3rd with first, second, third
+ ✅ positive throw matcher error for n that is not positive integer
+ ✅ should reject nth value greater than number of calls
+ ✅ positive throw matcher error for n that is not integer
+ ✅ negative throw matcher error for n that is not number
+ ✅ incomplete recursive calls are handled properly
+toHaveNthReturnedWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with argument that does not match
+ ✅ works with argument that does match
+ ✅ works with undefined
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects directly created
+ ✅ works with Immutable.js objects indirectly created
+ ✅ a call that throws is not considered to have returned
+ ✅ a call that throws undefined is not considered to have returned
+ ✅ includes the custom mock name in the error message
+toHaveNthReturnedWith nthReturnedWith
+ ✅ works with three calls
+ ✅ should replace 1st, 2nd, 3rd with first, second, third
+ ✅ positive throw matcher error for n that is not positive integer
+ ✅ should reject nth value greater than number of calls
+ ✅ positive throw matcher error for n that is not integer
+ ✅ negative throw matcher error for n that is not number
+ ✅ incomplete recursive calls are handled properly
+toReturnWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with argument that does not match
+ ✅ works with argument that does match
+ ✅ works with undefined
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects directly created
+ ✅ works with Immutable.js objects indirectly created
+ ✅ a call that throws is not considered to have returned
+ ✅ a call that throws undefined is not considered to have returned
+ ✅ includes the custom mock name in the error message
+toReturnWith returnedWith
+ ✅ works with more calls than the limit
+ ✅ incomplete recursive calls are handled properly
+toHaveReturnedWith
+ ✅ works only on spies or jest.fn
+ ✅ works when not called
+ ✅ works with no arguments
+ ✅ works with argument that does not match
+ ✅ works with argument that does match
+ ✅ works with undefined
+ ✅ works with Map
+ ✅ works with Set
+ ✅ works with Immutable.js objects directly created
+ ✅ works with Immutable.js objects indirectly created
+ ✅ a call that throws is not considered to have returned
+ ✅ a call that throws undefined is not considered to have returned
+ ✅ includes the custom mock name in the error message
+toHaveReturnedWith returnedWith
+ ✅ works with more calls than the limit
+ ✅ incomplete recursive calls are handled properly
+```
+### ✅ packages/expect/src/__tests__/stacktrace.test.ts
+```
+✅ stack trace points to correct location when using matchers
+✅ stack trace points to correct location when using nested matchers
+✅ stack trace points to correct location when throwing from a custom matcher
+```
+### ✅ packages/expect/src/__tests__/symbolInObjects.test.ts
+```
+Symbol in objects
+ ✅ should compare objects with Symbol keys
+ ✅ should compare objects with mixed keys and Symbol
+ ✅ should compare objects with different Symbol keys
+```
+### ✅ packages/expect/src/__tests__/toEqual-dom.test.ts
+```
+toEqual duck type Text
+ ✅ isNot false
+ ✅ isNot true
+toEqual duck type Element
+ ✅ isNot false
+ ✅ isNot true
+toEqual duck type Fragment
+ ✅ isNot false
+ ✅ isNot true
+toEqual document createTextNode
+ ✅ isNot false
+ ✅ isNot true
+toEqual document createElement
+ ✅ isNot false
+ ✅ isNot true
+toEqual document createDocumentFragment
+ ✅ isNot false
+ ✅ isNot true
+```
+### ✅ packages/expect/src/__tests__/toThrowMatchers.test.ts
+```
+toThrowError
+ ✅ to throw or not to throw
+ ✅ invalid arguments
+ ✅ invalid actual
+toThrowError substring
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but message did not match (error)
+ ✅ threw, but message did not match (non-error falsey)
+ ✅ properly escapes strings when matching against errors
+ ✅ threw, but message should not match (error)
+ ✅ threw, but message should not match (non-error truthy)
+toThrowError regexp
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but message did not match (error)
+ ✅ threw, but message did not match (non-error falsey)
+ ✅ threw, but message should not match (error)
+ ✅ threw, but message should not match (non-error truthy)
+toThrowError error class
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but class did not match (error)
+ ✅ threw, but class did not match (non-error falsey)
+ ✅ threw, but class should not match (error)
+ ✅ threw, but class should not match (error subclass)
+ ✅ threw, but class should not match (error subsubclass)
+toThrowError error-message pass
+ ✅ isNot false
+ ✅ isNot true
+toThrowError error-message fail
+ ✅ isNot false
+ ✅ isNot true
+ ✅ multiline diff highlight incorrect expected space
+toThrowError asymmetric any-Class pass
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric any-Class fail
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric anything pass
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric anything fail
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric no-symbol pass
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric no-symbol fail
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric objectContaining pass
+ ✅ isNot false
+ ✅ isNot true
+toThrowError asymmetric objectContaining fail
+ ✅ isNot false
+ ✅ isNot true
+toThrowError promise/async throws if Error-like object is returned
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but class did not match
+ ✅ threw, but should not have
+toThrowError expected is undefined
+ ✅ threw, but should not have (non-error falsey)
+toThrow
+ ✅ to throw or not to throw
+ ✅ invalid arguments
+ ✅ invalid actual
+toThrow substring
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but message did not match (error)
+ ✅ threw, but message did not match (non-error falsey)
+ ✅ properly escapes strings when matching against errors
+ ✅ threw, but message should not match (error)
+ ✅ threw, but message should not match (non-error truthy)
+toThrow regexp
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but message did not match (error)
+ ✅ threw, but message did not match (non-error falsey)
+ ✅ threw, but message should not match (error)
+ ✅ threw, but message should not match (non-error truthy)
+toThrow error class
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but class did not match (error)
+ ✅ threw, but class did not match (non-error falsey)
+ ✅ threw, but class should not match (error)
+ ✅ threw, but class should not match (error subclass)
+ ✅ threw, but class should not match (error subsubclass)
+toThrow error-message pass
+ ✅ isNot false
+ ✅ isNot true
+toThrow error-message fail
+ ✅ isNot false
+ ✅ isNot true
+ ✅ multiline diff highlight incorrect expected space
+toThrow asymmetric any-Class pass
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric any-Class fail
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric anything pass
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric anything fail
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric no-symbol pass
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric no-symbol fail
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric objectContaining pass
+ ✅ isNot false
+ ✅ isNot true
+toThrow asymmetric objectContaining fail
+ ✅ isNot false
+ ✅ isNot true
+toThrow promise/async throws if Error-like object is returned
+ ✅ passes
+ ✅ did not throw at all
+ ✅ threw, but class did not match
+ ✅ threw, but should not have
+toThrow expected is undefined
+ ✅ threw, but should not have (non-error falsey)
+```
+### ✅ packages/expect/src/__tests__/utils.test.ts
+```
+getPath()
+ ✅ property exists
+ ✅ property doesnt exist
+ ✅ property exist but undefined
+ ✅ property is a getter on class instance
+ ✅ property is inherited
+ ✅ path breaks
+ ✅ empty object at the end
+getObjectSubset
+ ✅ expect(getObjectSubset({"a": "b", "c": "d"}, {"a": "d"})).toEqual({"a": "b"})
+ ✅ expect(getObjectSubset({"a": [1, 2], "b": "b"}, {"a": [3, 4]})).toEqual({"a": [1, 2]})
+ ✅ expect(getObjectSubset([{"a": "b", "c": "d"}], [{"a": "z"}])).toEqual([{"a": "b"}])
+ ✅ expect(getObjectSubset([1, 2], [1, 2, 3])).toEqual([1, 2])
+ ✅ expect(getObjectSubset({"a": [1]}, {"a": [1, 2]})).toEqual({"a": [1]})
+ ✅ expect(getObjectSubset(2015-11-30T00:00:00.000Z, 2016-12-30T00:00:00.000Z)).toEqual(2015-11-30T00:00:00.000Z)
+getObjectSubset returns the object instance if the subset has no extra properties
+ ✅ Date
+getObjectSubset returns the subset instance if its property values are equal
+ ✅ Object
+getObjectSubset returns the subset instance if its property values are equal Uint8Array
+ ✅ expected
+ ✅ received
+getObjectSubset calculating subsets of objects with circular references
+ ✅ simple circular references
+ ✅ transitive circular references
+emptyObject()
+ ✅ matches an empty object
+ ✅ does not match an object with keys
+ ✅ does not match a non-object
+subsetEquality()
+ ✅ matching object returns true
+ ✅ object without keys is undefined
+ ✅ objects to not match
+ ✅ null does not return errors
+ ✅ undefined does not return errors
+subsetEquality() matching subsets with circular references
+ ✅ simple circular references
+ ✅ referenced object on same level should not regarded as circular reference
+ ✅ transitive circular references
+iterableEquality
+ ✅ returns true when given circular iterators
+ ✅ returns true when given circular Set
+ ✅ returns true when given nested Sets
+ ✅ returns false when given inequal set within a set
+ ✅ returns false when given inequal map within a set
+ ✅ returns false when given inequal set within a map
+ ✅ returns true when given circular Set shape
+ ✅ returns true when given circular key in Map
+ ✅ returns true when given nested Maps
+ ✅ returns true when given circular key and value in Map
+ ✅ returns true when given circular value in Map
+```
+### ✅ packages/jest-circus/src/__tests__/afterAll.test.ts
+```
+✅ tests are not marked done until their parent afterAll runs
+✅ describe block cannot have hooks and no tests
+✅ describe block _can_ have hooks if a child describe block has tests
+✅ describe block hooks must not run if describe block is skipped
+✅ child tests marked with todo should not run if describe block is skipped
+✅ child tests marked with only should not run if describe block is skipped
+```
+### ✅ packages/jest-circus/src/__tests__/baseTest.test.ts
+```
+✅ simple test
+✅ failures
+```
+### ✅ packages/jest-circus/src/__tests__/circusItTestError.test.ts
+```
+test/it error throwing
+ ✅ it doesn't throw an error with valid arguments
+ ✅ it throws error with missing callback function
+ ✅ it throws an error when first argument isn't a string
+ ✅ it throws an error when callback function is not a function
+ ✅ test doesn't throw an error with valid arguments
+ ✅ test throws error with missing callback function
+ ✅ test throws an error when first argument isn't a string
+ ✅ test throws an error when callback function is not a function
+```
+### ✅ packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts
+```
+test/it.todo error throwing
+ ✅ todo throws error when given no arguments
+ ✅ todo throws error when given more than one argument
+ ✅ todo throws error when given none string description
+```
+### ✅ packages/jest-circus/src/__tests__/hooks.test.ts
+```
+✅ beforeEach is executed before each test in current/child describe blocks
+✅ multiple before each hooks in one describe are executed in the right order
+✅ beforeAll is exectued correctly
+```
+### ✅ packages/jest-circus/src/__tests__/hooksError.test.ts
+```
+beforeEach hooks error throwing
+ ✅ beforeEach throws an error when "String" is provided as a first argument to it
+ ✅ beforeEach throws an error when 1 is provided as a first argument to it
+ ✅ beforeEach throws an error when [] is provided as a first argument to it
+ ✅ beforeEach throws an error when {} is provided as a first argument to it
+ ✅ beforeEach throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ beforeEach throws an error when true is provided as a first argument to it
+ ✅ beforeEach throws an error when null is provided as a first argument to it
+ ✅ beforeEach throws an error when undefined is provided as a first argument to it
+beforeAll hooks error throwing
+ ✅ beforeAll throws an error when "String" is provided as a first argument to it
+ ✅ beforeAll throws an error when 1 is provided as a first argument to it
+ ✅ beforeAll throws an error when [] is provided as a first argument to it
+ ✅ beforeAll throws an error when {} is provided as a first argument to it
+ ✅ beforeAll throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ beforeAll throws an error when true is provided as a first argument to it
+ ✅ beforeAll throws an error when null is provided as a first argument to it
+ ✅ beforeAll throws an error when undefined is provided as a first argument to it
+afterEach hooks error throwing
+ ✅ afterEach throws an error when "String" is provided as a first argument to it
+ ✅ afterEach throws an error when 1 is provided as a first argument to it
+ ✅ afterEach throws an error when [] is provided as a first argument to it
+ ✅ afterEach throws an error when {} is provided as a first argument to it
+ ✅ afterEach throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ afterEach throws an error when true is provided as a first argument to it
+ ✅ afterEach throws an error when null is provided as a first argument to it
+ ✅ afterEach throws an error when undefined is provided as a first argument to it
+afterAll hooks error throwing
+ ✅ afterAll throws an error when "String" is provided as a first argument to it
+ ✅ afterAll throws an error when 1 is provided as a first argument to it
+ ✅ afterAll throws an error when [] is provided as a first argument to it
+ ✅ afterAll throws an error when {} is provided as a first argument to it
+ ✅ afterAll throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ afterAll throws an error when true is provided as a first argument to it
+ ✅ afterAll throws an error when null is provided as a first argument to it
+ ✅ afterAll throws an error when undefined is provided as a first argument to it
+```
+### ✅ packages/jest-cli/src/__tests__/cli/args.test.ts
+```
+check
+ ✅ returns true if the arguments are valid
+ ✅ raises an exception if runInBand and maxWorkers are both specified
+ ✅ raises an exception if onlyChanged and watchAll are both specified
+ ✅ raises an exception if onlyFailures and watchAll are both specified
+ ✅ raises an exception when lastCommit and watchAll are both specified
+ ✅ raises an exception if findRelatedTests is specified with no file paths
+ ✅ raises an exception if maxWorkers is specified with no number
+ ✅ allows maxWorkers to be a %
+ ✅ allows using "js" file for --config option
+ ✅ allows using "ts" file for --config option
+ ✅ allows using "mjs" file for --config option
+ ✅ allows using "cjs" file for --config option
+ ✅ allows using "json" file for --config option
+ ✅ raises an exception if selectProjects is not provided any project names
+ ✅ raises an exception if config is not a valid JSON string
+ ✅ raises an exception if config is not a supported file type
+buildArgv
+ ✅ should return only camelcased args
+```
+### ✅ packages/jest-cli/src/init/__tests__/init.test.js
+```
+init project with package.json and no jest config all questions answered with answer: "No"
+ ✅ should return the default configuration (an empty config)
+ ✅ should generate empty config with mjs extension
+init project with package.json and no jest config some questions answered with answer: "Yes"
+ ✅ should create configuration for {clearMocks: true}
+ ✅ should create configuration for {coverage: true}
+ ✅ should create configuration for {coverageProvider: "babel"}
+ ✅ should create configuration for {coverageProvider: "v8"}
+ ✅ should create configuration for {environment: "jsdom"}
+ ✅ should create configuration for {environment: "node"}
+ ✅ should create package.json with configured test command when {scripts: true}
+init no package json
+ ✅ should throw an error if there is no package.json file
+init has-jest-config-file-js ask the user whether to override config or not
+ ✅ user answered with "Yes"
+ ✅ user answered with "No"
+init has-jest-config-file-ts ask the user whether to override config or not
+ ✅ user answered with "Yes"
+ ✅ user answered with "No"
+init has-jest-config-file-mjs ask the user whether to override config or not
+ ✅ user answered with "Yes"
+ ✅ user answered with "No"
+init has-jest-config-file-cjs ask the user whether to override config or not
+ ✅ user answered with "Yes"
+ ✅ user answered with "No"
+init has-jest-config-file-json ask the user whether to override config or not
+ ✅ user answered with "Yes"
+ ✅ user answered with "No"
+init project using jest.config.ts ask the user whether he wants to use Typescript or not
+ ✅ user answered with "Yes"
+ ✅ user answered with "No"
+init has jest config in package.json
+ ✅ should ask the user whether to override config or not
+init already has "jest" in packageJson.scripts.test
+ ✅ should not ask "test script question"
+```
+### ✅ packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts
+```
+✅ should remove jest config if exists
+✅ should add test script when there are no scripts
+✅ should add test script when there are scripts
+✅ should not add test script when { shouldModifyScripts: false }
+```
+### ✅ packages/jest-config/src/__tests__/Defaults.test.ts
+```
+✅ get configuration defaults
+```
+### ✅ packages/jest-config/src/__tests__/getMaxWorkers.test.ts
+```
+getMaxWorkers
+ ✅ Returns 1 when runInBand
+ ✅ Returns 1 when the OS CPUs are not available
+ ✅ Returns the `maxWorkers` when specified
+ ✅ Returns based on the number of cpus
+getMaxWorkers % based
+ ✅ 50% = 2 workers
+ ✅ < 0 workers should become 1
+ ✅ 0% shouldn't break
+```
+### ✅ packages/jest-config/src/__tests__/normalize.test.js
+```
+✅ picks a name based on the rootDir
+✅ keeps custom project name based on the projects rootDir
+✅ keeps custom names based on the rootDir
+✅ minimal config is stable across runs
+✅ sets coverageReporters correctly when argv.json is set
+rootDir
+ ✅ throws if the options is missing a rootDir property
+automock
+ ✅ falsy automock is not overwritten
+collectCoverageOnlyFrom
+ ✅ normalizes all paths relative to rootDir
+ ✅ does not change absolute paths
+ ✅ substitutes tokens
+collectCoverageFrom
+ ✅ substitutes tokens
+findRelatedTests
+ ✅ it generates --coverageCoverageFrom patterns when needed
+roots
+ ✅ normalizes all paths relative to rootDir
+ ✅ does not change absolute paths
+ ✅ substitutes tokens
+transform
+ ✅ normalizes the path
+ ✅ pulls in config if it's passed as an array, and defaults to empty object
+haste
+ ✅ normalizes the path for hasteImplModulePath
+setupFilesAfterEnv
+ ✅ normalizes the path according to rootDir
+ ✅ does not change absolute paths
+ ✅ substitutes tokens
+setupTestFrameworkScriptFile
+ ✅ logs a deprecation warning when `setupTestFrameworkScriptFile` is used
+ ✅ logs an error when `setupTestFrameworkScriptFile` and `setupFilesAfterEnv` are used
+coveragePathIgnorePatterns
+ ✅ does not normalize paths relative to rootDir
+ ✅ does not normalize trailing slashes
+ ✅ substitutes tokens
+watchPathIgnorePatterns
+ ✅ does not normalize paths relative to rootDir
+ ✅ does not normalize trailing slashes
+ ✅ substitutes tokens
+testPathIgnorePatterns
+ ✅ does not normalize paths relative to rootDir
+ ✅ does not normalize trailing slashes
+ ✅ substitutes tokens
+modulePathIgnorePatterns
+ ✅ does not normalize paths relative to rootDir
+ ✅ does not normalize trailing slashes
+ ✅ substitutes tokens
+testRunner
+ ✅ defaults to Circus
+ ✅ resolves jasmine
+ ✅ is overwritten by argv
+coverageDirectory
+ ✅ defaults to /coverage
+testEnvironment
+ ✅ resolves to an environment and prefers jest-environment-`name`
+ ✅ throws on invalid environment names
+ ✅ works with rootDir
+babel-jest
+ ✅ correctly identifies and uses babel-jest
+ ✅ uses babel-jest if babel-jest is explicitly specified in a custom transform options
+Upgrade help
+ ✅ logs a warning when `scriptPreprocessor` and/or `preprocessorIgnorePatterns` are used
+testRegex
+ ✅ testRegex empty string is mapped to empty array
+ ✅ testRegex string is mapped to an array
+ ✅ testRegex array is preserved
+testMatch
+ ✅ testMatch default not applied if testRegex is set
+ ✅ testRegex default not applied if testMatch is set
+ ✅ throws if testRegex and testMatch are both specified
+ ✅ normalizes testMatch
+moduleDirectories
+ ✅ defaults to node_modules
+ ✅ normalizes moduleDirectories
+preset
+ ✅ throws when preset not found
+ ✅ throws when module was found but no "jest-preset.js" or "jest-preset.json" files
+ ✅ throws when a dependency is missing in the preset
+ ✅ throws when preset is invalid
+ ✅ throws when preset evaluation throws type error
+ ✅ works with "react-native"
+ ✅ searches for .json and .js preset files
+ ✅ merges with options
+ ✅ merges with options and moduleNameMapper preset is overridden by options
+ ✅ merges with options and transform preset is overridden by options
+ ✅ extracts setupFilesAfterEnv from preset
+preset with globals
+ ✅ should merge the globals preset correctly
+preset without setupFiles
+ ✅ should normalize setupFiles correctly
+preset without setupFilesAfterEnv
+ ✅ should normalize setupFilesAfterEnv correctly
+runner
+ ✅ defaults to `jest-runner`
+ ✅ resolves to runners that do not have the prefix
+ ✅ resolves to runners and prefers jest-runner-`name`
+ ✅ throw error when a runner is not found
+watchPlugins
+ ✅ defaults to undefined
+ ✅ resolves to watch plugins and prefers jest-watch-`name`
+ ✅ resolves watch plugins that do not have the prefix
+ ✅ normalizes multiple watchPlugins
+ ✅ throw error when a watch plugin is not found
+testPathPattern
+ ✅ defaults to empty
+ ✅ joins multiple --testPathPatterns and
+ ✅ gives precedence to --all
+testPathPattern --testPathPattern
+ ✅ uses --testPathPattern if set
+ ✅ ignores invalid regular expressions and logs a warning
+ ✅ joins multiple --testPathPattern if set
+testPathPattern --testPathPattern posix
+ ✅ should not escape the pattern
+testPathPattern --testPathPattern win32
+ ✅ preserves any use of "\"
+ ✅ replaces POSIX path separators
+ ✅ replaces POSIX paths in multiple args
+ ✅ coerces all patterns to strings
+testPathPattern
+ ✅ uses if set
+ ✅ ignores invalid regular expressions and logs a warning
+ ✅ joins multiple if set
+testPathPattern posix
+ ✅ should not escape the pattern
+testPathPattern win32
+ ✅ preserves any use of "\"
+ ✅ replaces POSIX path separators
+ ✅ replaces POSIX paths in multiple args
+ ✅ coerces all patterns to strings
+moduleFileExtensions
+ ✅ defaults to something useful
+ ✅ throws if missing `js` but using jest-runner
+ ✅ does not throw if missing `js` with a custom runner
+cwd
+ ✅ is set to process.cwd
+ ✅ is not lost if the config has its own cwd property
+Defaults
+ ✅ should be accepted by normalize
+displayName
+ ✅ should throw an error when displayName is is an empty object
+ ✅ should throw an error when displayName is missing color
+ ✅ should throw an error when displayName is missing name
+ ✅ should throw an error when displayName is using invalid values
+ ✅ generates a default color for the runner undefined
+ ✅ generates a default color for the runner jest-runner
+ ✅ generates a default color for the runner jest-runner-eslint
+ ✅ generates a default color for the runner jest-runner-tslint
+ ✅ generates a default color for the runner jest-runner-tsc
+testTimeout
+ ✅ should return timeout value if defined
+ ✅ should throw an error if timeout is a negative number
+extensionsToTreatAsEsm
+ ✅ should pass valid config through
+ ✅ should enforce leading dots
+ ✅ throws on .js
+ ✅ throws on .mjs
+ ✅ throws on .cjs
+```
+### ✅ packages/jest-config/src/__tests__/readConfig.test.ts
+```
+✅ readConfig() throws when an object is passed without a file path
+```
+### ✅ packages/jest-config/src/__tests__/readConfigs.test.ts
+```
+✅ readConfigs() throws when called without project paths
+✅ readConfigs() loads async config file
+✅ readConfigs() reject if async was rejected
+```
+### ✅ packages/jest-config/src/__tests__/resolveConfigPath.test.ts
+```
+Resolve config path .js
+ ✅ file path with ".js"
+ ✅ directory path with ".js"
+Resolve config path .ts
+ ✅ file path with ".ts"
+ ✅ directory path with ".ts"
+Resolve config path .mjs
+ ✅ file path with ".mjs"
+ ✅ directory path with ".mjs"
+Resolve config path .cjs
+ ✅ file path with ".cjs"
+ ✅ directory path with ".cjs"
+Resolve config path .json
+ ✅ file path with ".json"
+ ✅ directory path with ".json"
+```
+### ✅ packages/jest-config/src/__tests__/setFromArgv.test.ts
+```
+✅ maps special values to valid options
+✅ maps regular values to themselves
+✅ works with string objects
+✅ explicit flags override those from --config
+```
+### ✅ packages/jest-config/src/__tests__/validatePattern.test.ts
+```
+validate pattern function
+ ✅ without passed args returns true
+ ✅ returns true for empty pattern
+ ✅ returns true for valid pattern
+ ✅ returns false for invalid pattern
+```
+### ✅ packages/jest-console/src/__tests__/bufferedConsole.test.ts
+```
+CustomConsole assert
+ ✅ do not log when the assertion is truthy
+ ✅ do not log when the assertion is truthy and there is a message
+ ✅ log the assertion error when the assertion is falsy
+ ✅ log the assertion error when the assertion is falsy with another message argument
+CustomConsole count
+ ✅ count using the default counter
+ ✅ count using the a labeled counter
+ ✅ countReset restarts default counter
+ ✅ countReset restarts custom counter
+CustomConsole group
+ ✅ group without label
+ ✅ group with label
+ ✅ groupEnd remove the indentation of the current group
+ ✅ groupEnd can not remove the indentation below the starting point
+CustomConsole time
+ ✅ should return the time between time() and timeEnd() on default timer
+ ✅ should return the time between time() and timeEnd() on custom timer
+CustomConsole dir
+ ✅ should print the deepest value
+CustomConsole timeLog
+ ✅ should return the time between time() and timeEnd() on default timer
+ ✅ should return the time between time() and timeEnd() on custom timer
+ ✅ default timer with data
+ ✅ custom timer with data
+CustomConsole console
+ ✅ should be able to initialize console instance
+```
+### ✅ packages/jest-console/src/__tests__/CustomConsole.test.ts
+```
+CustomConsole log
+ ✅ should print to stdout
+CustomConsole error
+ ✅ should print to stderr
+CustomConsole warn
+ ✅ should print to stderr
+CustomConsole assert
+ ✅ do not log when the assertion is truthy
+ ✅ do not log when the assertion is truthy and there is a message
+ ✅ log the assertion error when the assertion is falsy
+ ✅ log the assertion error when the assertion is falsy with another message argument
+CustomConsole count
+ ✅ count using the default counter
+ ✅ count using the a labeled counter
+ ✅ countReset restarts default counter
+ ✅ countReset restarts custom counter
+CustomConsole group
+ ✅ group without label
+ ✅ group with label
+ ✅ groupEnd remove the indentation of the current group
+ ✅ groupEnd can not remove the indentation below the starting point
+CustomConsole time
+ ✅ should return the time between time() and timeEnd() on default timer
+ ✅ should return the time between time() and timeEnd() on custom timer
+CustomConsole dir
+ ✅ should print the deepest value
+CustomConsole timeLog
+ ✅ should return the time between time() and timeEnd() on default timer
+ ✅ should return the time between time() and timeEnd() on custom timer
+ ✅ default timer with data
+ ✅ custom timer with data
+CustomConsole console
+ ✅ should be able to initialize console instance
+```
+### ✅ packages/jest-console/src/__tests__/getConsoleOutput.test.ts
+```
+getConsoleOutput
+ ✅ takes noStackTrace and pass it on for assert
+ ✅ takes noStackTrace and pass it on for count
+ ✅ takes noStackTrace and pass it on for debug
+ ✅ takes noStackTrace and pass it on for dir
+ ✅ takes noStackTrace and pass it on for dirxml
+ ✅ takes noStackTrace and pass it on for error
+ ✅ takes noStackTrace and pass it on for group
+ ✅ takes noStackTrace and pass it on for groupCollapsed
+ ✅ takes noStackTrace and pass it on for info
+ ✅ takes noStackTrace and pass it on for log
+ ✅ takes noStackTrace and pass it on for time
+ ✅ takes noStackTrace and pass it on for warn
+```
+### ✅ packages/jest-core/src/__tests__/FailedTestsCache.test.js
+```
+FailedTestsCache
+ ✅ should filter tests
+```
+### ✅ packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js
+```
+getNoTestsFoundMessage
+ ✅ returns correct message when monitoring only failures
+ ✅ returns correct message when monitoring only changed
+ ✅ returns correct message with verbose option
+ ✅ returns correct message without options
+ ✅ returns correct message with passWithNoTests
+```
+### ✅ packages/jest-core/src/__tests__/globals.test.ts
+```
+Common globals
+ ✅ check process
+```
+### ✅ packages/jest-core/src/__tests__/runJest.test.js
+```
+runJest
+ ✅ when watch is set then exit process
+ ✅ when watch is set then an error message is printed
+```
+### ✅ packages/jest-core/src/__tests__/SearchSource.test.ts
+```
+SearchSource isTestFilePath
+ ✅ supports ../ paths and unix separators via testRegex
+ ✅ supports unix separators
+ ✅ supports win32 separators
+SearchSource testPathsMatching
+ ✅ finds tests matching a pattern via testRegex
+ ✅ finds tests matching a pattern via testMatch
+ ✅ finds tests matching a JS regex pattern
+ ✅ finds tests matching a JS glob pattern
+ ✅ finds tests matching a JS with overriding glob patterns
+ ✅ finds tests with default file extensions using testRegex
+ ✅ finds tests with default file extensions using testMatch
+ ✅ finds tests with parentheses in their rootDir when using testMatch
+ ✅ finds tests with similar but custom file extensions
+ ✅ finds tests with totally custom foobar file extensions
+ ✅ finds tests with many kinds of file extensions
+ ✅ finds tests using a regex only
+ ✅ finds tests using a glob only
+SearchSource findRelatedTests
+ ✅ makes sure a file is related to itself
+ ✅ finds tests that depend directly on the path
+ ✅ excludes untested files from coverage
+SearchSource findRelatedTestsFromPattern
+ ✅ returns empty search result for empty input
+ ✅ returns empty search result for invalid input
+ ✅ returns empty search result if no related tests were found
+ ✅ finds tests for a single file
+ ✅ finds tests for multiple files
+ ✅ does not mistake roots folders with prefix names
+SearchSource findRelatedSourcesFromTestsInChangedFiles
+ ✅ return empty set if no SCM
+ ✅ return sources required by tests
+```
+### ✅ packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js
+```
+SnapshotInteractiveMode
+ ✅ is inactive at construction
+ ✅ call to run process the first file
+ ✅ call to abort
+ ✅ call to reset
+ ✅ press Q or ESC triggers an abort
+ ✅ press ENTER trigger a run
+ ✅ skip 1 test, then restart
+ ✅ skip 1 test, then quit
+ ✅ update 1 test, then finish and return
+ ✅ skip 2 tests, then finish and restart
+ ✅ update 2 tests, then finish and return
+ ✅ update 1 test, skip 1 test, then finish and restart
+ ✅ skip 1 test, update 1 test, then finish and restart
+```
+### ✅ packages/jest-core/src/__tests__/TestScheduler.test.js
+```
+✅ config for reporters supports `default`
+✅ .addReporter() .removeReporter()
+✅ schedule tests run in parallel per default
+✅ schedule tests run in serial if the runner flags them
+✅ should bail after `n` failures
+✅ should not bail if less than `n` failures
+✅ should set runInBand to run in serial
+✅ should set runInBand to not run in serial
+```
+### ✅ packages/jest-core/src/__tests__/testSchedulerHelper.test.js
+```
+✅ shouldRunInBand() - should return true for runInBand mode
+✅ shouldRunInBand() - should return true for runInBand mode
+✅ shouldRunInBand() - should return false for runInBand mode
+✅ shouldRunInBand() - should return false for runInBand mode
+✅ shouldRunInBand() - should return false for runInBand mode
+✅ shouldRunInBand() - should return true for runInBand mode
+✅ shouldRunInBand() - should return false for runInBand mode
+✅ shouldRunInBand() - should return true for runInBand mode
+✅ shouldRunInBand() - should return true for runInBand mode
+✅ shouldRunInBand() - should return false for runInBand mode
+✅ shouldRunInBand() - should return false for runInBand mode
+✅ shouldRunInBand() - should return true for runInBand mode
+```
+### ✅ packages/jest-core/src/__tests__/watch.test.js
+```
+Watch mode flows
+ ✅ Correctly passing test path pattern
+ ✅ Correctly passing test name pattern
+ ✅ Runs Jest once by default and shows usage
+ ✅ Runs Jest in a non-interactive environment not showing usage
+ ✅ resolves relative to the package root
+ ✅ shows prompts for WatchPlugins in alphabetical order
+ ✅ shows update snapshot prompt (without interactive)
+ ✅ shows update snapshot prompt (with interactive)
+ ✅ allows WatchPlugins to hook into JestHook
+ ✅ allows WatchPlugins to override eligible internal plugins
+ ✅ allows WatchPlugins to be configured
+ ✅ allows WatchPlugins to hook into file system changes
+ ✅ makes watch plugin initialization errors look nice
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ allows WatchPlugins to modify only white-listed global config keys
+ ✅ triggers enter on a WatchPlugin when its key is pressed
+ ✅ prevents Jest from handling keys when active and returns control when end is called
+ ✅ Pressing "o" runs test in "only changed files" mode
+ ✅ Pressing "a" runs test in "watch all" mode
+ ✅ Pressing "ENTER" reruns the tests
+ ✅ Pressing "t" reruns the tests in "test name pattern" mode
+ ✅ Pressing "p" reruns the tests in "filename pattern" mode
+ ✅ Can combine "p" and "t" filters
+ ✅ Pressing "u" reruns the tests in "update snapshot" mode
+ ✅ passWithNoTest should be set to true in watch mode
+ ✅ shows the correct usage for the f key in "only failed tests" mode
+Watch mode flows when dealing with potential watch plugin key conflicts
+ ✅ forbids WatchPlugins overriding reserved internal plugins
+ ✅ forbids WatchPlugins overriding reserved internal plugins
+ ✅ forbids WatchPlugins overriding reserved internal plugins
+ ✅ allows WatchPlugins to override non-reserved internal plugins
+ ✅ allows WatchPlugins to override non-reserved internal plugins
+ ✅ forbids third-party WatchPlugins overriding each other
+```
+### ✅ packages/jest-core/src/__tests__/watchFileChanges.test.ts
+```
+Watch mode flows with changed files
+ ✅ should correct require new files without legacy cache
+```
+### ✅ packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js
+```
+Watch mode flows
+ ✅ Pressing "P" enters pattern mode
+ ✅ Pressing "c" clears the filters
+```
+### ✅ packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js
+```
+Watch mode flows
+ ✅ Pressing "T" enters pattern mode
+```
+### ✅ packages/jest-core/src/lib/__tests__/isValidPath.test.ts
+```
+✅ is valid when it is a file inside roots
+✅ is not valid when it is a snapshot file
+✅ is not valid when it is a file in the coverage dir
+```
+### ✅ packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts
+```
+✅ prints the jest version
+✅ prints the test framework name
+✅ prints the config object
+```
+### ✅ packages/jest-create-cache-key-function/src/__tests__/index.test.ts
+```
+✅ creation of a cache key
+```
+### ✅ packages/jest-diff/src/__tests__/diff.test.ts
+```
+different types
+ ✅ '1' and 'a'
+ ✅ '[object Object]' and 'a'
+ ✅ '' and '2'
+ ✅ 'null' and 'undefined'
+ ✅ '() => {}' and '3'
+no visual difference
+ ✅ '"a"' and '"a"'
+ ✅ '{}' and '{}'
+ ✅ '[]' and '[]'
+ ✅ '[1,2]' and '[1,2]'
+ ✅ '11' and '11'
+ ✅ 'null' and 'null'
+ ✅ 'null' and 'null'
+ ✅ 'undefined' and 'undefined'
+ ✅ 'null' and 'null'
+ ✅ 'undefined' and 'undefined'
+ ✅ 'false' and 'false'
+ ✅ '{"a":1}' and '{"a":1}'
+ ✅ '{"a":{"b":5}}' and '{"a":{"b":5}}'
+ ✅ Map key order should be irrelevant
+ ✅ Set value order should be irrelevant
+✅ oneline strings
+✅ numbers
+✅ -0 and 0
+✅ booleans
+✅ collapses big diffs to patch format
+falls back to not call toJSON if serialization has no differences
+ ✅ but then objects have differences
+ ✅ and then objects have no differences
+falls back to not call toJSON if it throws
+ ✅ and then objects have differences
+ ✅ and then objects have no differences
+multiline strings
+ ✅ (unexpanded)
+ ✅ (expanded)
+objects
+ ✅ (unexpanded)
+ ✅ (expanded)
+multiline string non-snapshot
+ ✅ (unexpanded)
+ ✅ (expanded)
+multiline string snapshot
+ ✅ (unexpanded)
+ ✅ (expanded)
+React elements
+ ✅ (unexpanded)
+ ✅ (expanded)
+multiline string as value of object property (non-snapshot)
+ ✅ (unexpanded)
+ ✅ (expanded)
+multiline string as value of object property (snapshot)
+ ✅ (unexpanded)
+ ✅ (expanded)
+indentation in JavaScript structures from less to more
+ ✅ (unexpanded)
+ ✅ (expanded)
+indentation in JavaScript structures from more to less
+ ✅ (unexpanded)
+ ✅ (expanded)
+color of text
+ ✅ (expanded)
+ ✅ (unexpanded)
+indentation in React elements (non-snapshot) from less to more
+ ✅ (unexpanded)
+ ✅ (expanded)
+indentation in React elements (non-snapshot) from more to less
+ ✅ (unexpanded)
+ ✅ (expanded)
+indentation in React elements (snapshot) from less to more
+ ✅ (unexpanded)
+ ✅ (expanded)
+indentation in React elements (snapshot) from more to less
+ ✅ (unexpanded)
+ ✅ (expanded)
+outer React element (non-snapshot) from less to more
+ ✅ (unexpanded)
+ ✅ (expanded)
+outer React element (non-snapshot) from more to less
+ ✅ (unexpanded)
+ ✅ (expanded)
+trailing newline in multiline string not enclosed in quotes from less to more
+ ✅ (unexpanded)
+ ✅ (expanded)
+trailing newline in multiline string not enclosed in quotes from more to less
+ ✅ (unexpanded)
+ ✅ (expanded)
+context
+ ✅ number of lines: -1 (5 default)
+ ✅ number of lines: 0
+ ✅ number of lines: 1
+ ✅ number of lines: 2
+ ✅ number of lines: 3.1 (5 default)
+ ✅ number of lines: undefined (5 default)
+diffLinesUnified edge cases
+ ✅ a empty string b empty string
+ ✅ a empty string b one line
+ ✅ a multiple lines b empty string
+ ✅ a one line b multiple lines
+diffLinesUnified2 edge cases
+ ✅ a empty string b empty string
+ ✅ a empty string b one line
+ ✅ a multiple lines b empty string
+ ✅ a one line b multiple lines
+diffLinesUnified2 edge cases lengths not equal
+ ✅ a
+ ✅ b
+diffStringsUnified edge cases
+ ✅ empty both a and b
+ ✅ empty only a
+ ✅ empty only b
+ ✅ equal both non-empty
+ ✅ multiline has no common after clean up chaff
+ ✅ one-line has no common after clean up chaff
+options 7980
+ ✅ diff
+ ✅ diffStringsUnified
+options change indicators
+ ✅ diff
+options change color
+ ✅ diffStringsUnified
+ ✅ no diff
+options common
+ ✅ diff
+ ✅ no diff
+options includeChangeCounts false
+ ✅ diffLinesUnified
+ ✅ diffStringsUnified
+options includeChangeCounts true padding
+ ✅ diffLinesUnified a has 2 digits
+ ✅ diffLinesUnified b has 2 digits
+ ✅ diffStringsUnified
+options omitAnnotationLines true
+ ✅ diff
+ ✅ diffStringsUnified and includeChangeCounts true
+ ✅ diffStringsUnified empty strings
+options trailingSpaceFormatter
+ ✅ diffDefault default no color
+ ✅ diffDefault middle dot
+ ✅ diffDefault yellowish common
+options emptyFirstOrLastLinePlaceholder default empty string
+ ✅ diffDefault
+ ✅ diffStringsUnified
+```
+### ✅ packages/jest-diff/src/__tests__/diffStringsRaw.test.ts
+```
+diffStringsRaw
+ ✅ one-line with cleanup
+ ✅ one-line without cleanup
+```
+### ✅ packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts
+```
+getAlignedDiffs lines
+ ✅ change preceding and following common
+ ✅ common preceding and following change
+ ✅ common at end when both current change lines are empty
+ ✅ common between delete and insert
+ ✅ common between insert and delete
+getAlignedDiffs newline
+ ✅ delete only
+ ✅ insert only
+ ✅ delete with adjacent change
+ ✅ insert with adjacent changes
+ ✅ change from space
+ ✅ change to space
+getAlignedDiffs substrings first
+ ✅ common when both current change lines are empty
+ ✅ common when either current change line is non-empty
+ ✅ delete completes the current line
+ ✅ insert completes the current line
+getAlignedDiffs substrings middle
+ ✅ is empty in delete between common
+ ✅ is empty in insert at start
+ ✅ is non-empty in delete at end
+ ✅ is non-empty in insert between common
+getAlignedDiffs substrings last
+ ✅ is empty in delete at end
+ ✅ is empty in insert at end
+ ✅ is non-empty in common not at end
+getAlignedDiffs strings
+ ✅ change at start and delete or insert at end
+ ✅ delete or insert at start and change at end
+```
+### ✅ packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts
+```
+joinAlignedDiffsExpand
+ ✅ first line is empty common
+joinAlignedDiffsNoExpand
+ ✅ patch 0 with context 1 and change at start and end
+ ✅ patch 0 with context 5 and first line is empty common
+ ✅ patch 1 with context 4 and last line is empty common
+ ✅ patch 2 with context 3
+ ✅ patch 3 with context 2 and omit excess common at start
+```
+### ✅ packages/jest-docblock/src/__tests__/index.test.ts
+```
+docblock
+ ✅ extracts valid docblock with line comment
+ ✅ extracts valid docblock
+ ✅ extracts valid docblock with more comments
+ ✅ extracts from invalid docblock
+ ✅ returns extract and parsedocblock
+ ✅ parses directives out of a docblock
+ ✅ parses multiple of the same directives out of a docblock
+ ✅ parses >=3 of the same directives out of a docblock
+ ✅ parses directives out of a docblock with comments
+ ✅ parses directives out of a docblock with line comments
+ ✅ parses multiline directives
+ ✅ parses multiline directives even if there are linecomments within the docblock
+ ✅ supports slashes in @team directive
+ ✅ extracts comments from docblock
+ ✅ extracts multiline comments from docblock
+ ✅ preserves leading whitespace in multiline comments from docblock
+ ✅ removes leading newlines in multiline comments from docblock
+ ✅ extracts comments from beginning and end of docblock
+ ✅ preserve urls within a pragma's values
+ ✅ strip linecomments from pragmas but preserve for comments
+ ✅ extracts docblock comments as CRLF when docblock contains CRLF
+ ✅ extracts docblock comments as LF when docblock contains LF
+ ✅ strips the docblock out of a file that contains a top docblock
+ ✅ returns a file unchanged if there is no top docblock to strip
+ ✅ prints docblocks with no pragmas as empty string
+ ✅ prints docblocks with one pragma on one line
+ ✅ prints docblocks with multiple pragmas on multiple lines
+ ✅ prints docblocks with multiple of the same pragma
+ ✅ prints docblocks with pragmas
+ ✅ prints docblocks with comments
+ ✅ prints docblocks with comments and no keys
+ ✅ prints docblocks with multiline comments
+ ✅ prints docblocks that are parseable
+ ✅ can augment existing docblocks with comments
+ ✅ prints docblocks using CRLF if comments contains CRLF
+ ✅ prints docblocks using LF if comments contains LF
+```
+### ✅ packages/jest-each/src/__tests__/array.test.ts
+```
+jest-each .test
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .test.concurrent
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .test.concurrent.only
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .test.concurrent.skip
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+jest-each .test.only
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .it
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .fit
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .it.only
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .describe
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .fdescribe
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each .describe.only
+ ✅ throws an error when not called with an array
+ ✅ throws an error when called with an empty array
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using printf format
+ ✅ does not call global test with title containing more param values than sprintf placeholders
+ ✅ calls global test title with %p placeholder injected at the correct positions
+ ✅ does not calls global test title with %p placeholder when no data is supplied at given position
+ ✅ calls global with cb function containing all parameters of each test case when given 1d array
+ ✅ calls global with cb function containing all parameters of each test case 2d array
+ ✅ calls global with given timeout
+jest-each done callback
+ ✅ calls [ 'test' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'test', 'only' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'test', 'concurrent' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'test', 'concurrent', 'only' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'it' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'fit' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'it', 'only' ] with done when cb function has more args than params of given test row
+ ✅ does not call [ 'describe' ] with done when test function has more args than params of given test row
+ ✅ does not call [ 'fdescribe' ] with done when test function has more args than params of given test row
+ ✅ does not call [ 'describe', 'only' ] with done when test function has more args than params of given test row
+jest-each .xtest
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+jest-each .test.skip
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+jest-each .xit
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+jest-each .it.skip
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+jest-each .xdescribe
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+jest-each .describe.skip
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using sprintf format
+ ✅ calls global with title with placeholder values correctly interpolated
+```
+### ✅ packages/jest-each/src/__tests__/index.test.ts
+```
+array .add
+ ✅ returns the result of adding 0 to 0
+ ✅ returns the result of adding 0 to 1
+ ✅ returns the result of adding 1 to 1
+concurrent .add
+ ✅ returns the result of adding 0 to 0
+ ✅ returns the result of adding 0 to 1
+ ✅ returns the result of adding 1 to 1
+template .add
+ ✅ returns 0 when given 0 and 0
+ ✅ returns 1 when given 0 and 1
+ ✅ returns 2 when given 1 and 1
+✅ throws an error when not called with the right number of arguments
+```
+### ✅ packages/jest-each/src/__tests__/template.test.ts
+```
+jest-each .test
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .test.concurrent
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .test.concurrent.only
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .test.concurrent.skip
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .test.only
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .it
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .fit
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .it.only
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .describe
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .fdescribe
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each .describe.only
+ ✅ throws error when there are additional words in first column heading
+ ✅ throws error when there are additional words in second column heading
+ ✅ throws error when there are additional words in last column heading
+ ✅ does not throw error when there is additional words in template after heading row
+ ✅ does not throw error when there is only one column
+ ✅ does not throw error when there is only one column with additional words in template after heading
+ ✅ throws error when there are no arguments for given headings
+ ✅ throws error when there are fewer arguments than headings when given one row
+ ✅ throws error when there are fewer arguments than headings over multiple rows
+ ✅ throws an error when called with an empty string
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+ ✅ calls global with title containing $key in multiple positions
+ ✅ calls global with title containing $key.path
+ ✅ calls global with title containing last seen object when $key.path is invalid
+ ✅ calls global with cb function with object built from table headings and values
+ ✅ calls global with given timeout
+ ✅ formats primitive values using .toString()
+jest-each done callback
+ ✅ calls [ 'test' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'test', 'only' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'test', 'concurrent', 'only' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'it' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'fit' ] with done when cb function has more args than params of given test row
+ ✅ calls [ 'it', 'only' ] with done when cb function has more args than params of given test row
+ ✅ does not call [ 'describe' ] with done when test function has more args than params of given test row
+ ✅ does not call [ 'fdescribe' ] with done when test function has more args than params of given test row
+ ✅ does not call [ 'describe', 'only' ] with done when test function has more args than params of given test row
+jest-each .xtest
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .test.skip
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .xit
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .it.skip
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .xdescribe
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+jest-each .describe.skip
+ ✅ calls global with given title
+ ✅ calls global with given title when multiple tests cases exist
+ ✅ calls global with title containing param values when using $variable format
+```
+### ✅ packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts
+```
+JSDomEnvironment
+ ✅ should configure setTimeout/setInterval to use the browser api
+ ✅ has modern fake timers implementation
+```
+### ✅ packages/jest-environment-node/src/__tests__/node_environment.test.ts
+```
+NodeEnvironment
+ ✅ uses a copy of the process object
+ ✅ exposes process.on
+ ✅ exposes global.global
+ ✅ should configure setTimeout/setInterval to use the node api
+ ✅ has modern fake timers implementation
+ ✅ TextEncoder references the same global Uint8Array constructor
+```
+### ✅ packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts
+```
+FakeTimers construction
+ ✅ installs setTimeout mock
+ ✅ accepts to promisify setTimeout mock
+ ✅ installs clearTimeout mock
+ ✅ installs setInterval mock
+ ✅ installs clearInterval mock
+ ✅ mocks process.nextTick if it exists on global
+ ✅ mocks setImmediate if it exists on global
+ ✅ mocks clearImmediate if setImmediate is on global
+FakeTimers runAllTicks
+ ✅ runs all ticks, in order
+ ✅ does nothing when no ticks have been scheduled
+ ✅ only runs a scheduled callback once
+ ✅ cancels a callback even from native nextTick
+ ✅ cancels a callback even from native setImmediate
+ ✅ doesnt run a tick callback if native nextTick already did
+ ✅ doesnt run immediate if native setImmediate already did
+ ✅ native doesnt run immediate if fake already did
+ ✅ throws before allowing infinite recursion
+FakeTimers runAllTimers
+ ✅ runs all timers in order
+ ✅ warns when trying to advance timers while real timers are used
+ ✅ does nothing when no timers have been scheduled
+ ✅ only runs a setTimeout callback once (ever)
+ ✅ runs callbacks with arguments after the interval
+ ✅ doesnt pass the callback to native setTimeout
+ ✅ throws before allowing infinite recursion
+ ✅ also clears ticks
+FakeTimers advanceTimersByTime
+ ✅ runs timers in order
+ ✅ does nothing when no timers have been scheduled
+ ✅ throws before allowing infinite recursion
+FakeTimers advanceTimersToNextTimer
+ ✅ runs timers in order
+ ✅ run correct amount of steps
+ ✅ setTimeout inside setTimeout
+ ✅ does nothing when no timers have been scheduled
+FakeTimers reset
+ ✅ resets all pending setTimeouts
+ ✅ resets all pending setIntervals
+ ✅ resets all pending ticks callbacks & immediates
+ ✅ resets current advanceTimersByTime time cursor
+FakeTimers runOnlyPendingTimers
+ ✅ runs all timers in order
+ ✅ does not run timers that were cleared in another timer
+FakeTimers runWithRealTimers
+ ✅ executes callback with native timers
+ ✅ resets mock timers after executing callback
+ ✅ resets mock timer functions even if callback throws
+FakeTimers useRealTimers
+ ✅ resets native timer APIs
+ ✅ resets native process.nextTick when present
+ ✅ resets native setImmediate when present
+FakeTimers useFakeTimers
+ ✅ resets mock timer APIs
+ ✅ resets mock process.nextTick when present
+ ✅ resets mock setImmediate when present
+FakeTimers getTimerCount
+ ✅ returns the correct count
+ ✅ includes immediates and ticks
+ ✅ not includes cancelled immediates
+```
+### ✅ packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts
+```
+FakeTimers construction
+ ✅ installs setTimeout mock
+ ✅ installs clearTimeout mock
+ ✅ installs setInterval mock
+ ✅ installs clearInterval mock
+ ✅ mocks process.nextTick if it exists on global
+ ✅ mocks setImmediate if it exists on global
+ ✅ mocks clearImmediate if setImmediate is on global
+FakeTimers runAllTicks
+ ✅ runs all ticks, in order
+ ✅ does nothing when no ticks have been scheduled
+ ✅ only runs a scheduled callback once
+ ✅ throws before allowing infinite recursion
+FakeTimers runAllTimers
+ ✅ runs all timers in order
+ ✅ warns when trying to advance timers while real timers are used
+ ✅ does nothing when no timers have been scheduled
+ ✅ only runs a setTimeout callback once (ever)
+ ✅ runs callbacks with arguments after the interval
+ ✅ doesn't pass the callback to native setTimeout
+ ✅ throws before allowing infinite recursion
+ ✅ also clears ticks
+FakeTimers advanceTimersByTime
+ ✅ runs timers in order
+ ✅ does nothing when no timers have been scheduled
+FakeTimers advanceTimersToNextTimer
+ ✅ runs timers in order
+ ✅ run correct amount of steps
+ ✅ setTimeout inside setTimeout
+ ✅ does nothing when no timers have been scheduled
+FakeTimers reset
+ ✅ resets all pending setTimeouts
+ ✅ resets all pending setIntervals
+ ✅ resets all pending ticks callbacks
+ ✅ resets current advanceTimersByTime time cursor
+FakeTimers runOnlyPendingTimers
+ ✅ runs all timers in order
+ ✅ does not run timers that were cleared in another timer
+FakeTimers useRealTimers
+ ✅ resets native timer APIs
+ ✅ resets native process.nextTick when present
+ ✅ resets native setImmediate when present
+FakeTimers useFakeTimers
+ ✅ resets mock timer APIs
+ ✅ resets mock process.nextTick when present
+ ✅ resets mock setImmediate when present
+FakeTimers getTimerCount
+ ✅ returns the correct count
+ ✅ includes immediates and ticks
+ ✅ not includes cancelled immediates
+```
+### ✅ packages/jest-get-type/src/__tests__/getType.test.ts
+```
+.getType()
+ ✅ null
+ ✅ undefined
+ ✅ object
+ ✅ array
+ ✅ number
+ ✅ string
+ ✅ function
+ ✅ boolean
+ ✅ symbol
+ ✅ regexp
+ ✅ map
+ ✅ set
+ ✅ date
+ ✅ bigint
+```
+### ✅ packages/jest-get-type/src/__tests__/isPrimitive.test.ts
+```
+.isPrimitive()
+ ✅ returns true when given primitive value of: null
+ ✅ returns true when given primitive value of: undefined
+ ✅ returns true when given primitive value of: 100
+ ✅ returns true when given primitive value of: hello world
+ ✅ returns true when given primitive value of: true
+ ✅ returns true when given primitive value of: Symbol(a)
+ ✅ returns true when given primitive value of: 0
+ ✅ returns true when given primitive value of: NaN
+ ✅ returns true when given primitive value of: Infinity
+ ✅ returns true when given primitive value of: 1n
+ ✅ returns false when given non primitive value of: {}
+ ✅ returns false when given non primitive value of: []
+ ✅ returns false when given non primitive value of: undefined
+ ✅ returns false when given non primitive value of: {}
+ ✅ returns false when given non primitive value of: {}
+ ✅ returns false when given non primitive value of: {}
+ ✅ returns false when given non primitive value of: "2021-01-24T19:22:19.272Z"
+ ✅ returns false when given non primitive value of: {}
+```
+### ✅ packages/jest-globals/src/__tests__/index.ts
+```
+✅ throw when directly imported
+```
+### ✅ packages/jest-haste-map/src/__tests__/get_mock_name.test.js
+```
+getMockName
+ ✅ extracts mock name from file path
+```
+### ✅ packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts
+```
+✅ watchman crawler and node crawler both include dotfiles
+```
+### ✅ packages/jest-haste-map/src/__tests__/index.test.js
+```
+HasteMap
+ ✅ exports constants
+ ✅ creates valid cache file paths
+ ✅ creates different cache file paths for different roots
+ ✅ creates different cache file paths for different dependency extractor cache keys
+ ✅ creates different cache file paths for different hasteImplModulePath cache keys
+ ✅ creates different cache file paths for different projects
+ ✅ matches files against a pattern
+ ✅ ignores files given a pattern
+ ✅ ignores vcs directories without ignore pattern
+ ✅ ignores vcs directories with ignore pattern regex
+ ✅ warn on ignore pattern except for regex
+ ✅ builds a haste map on a fresh cache
+ ✅ does not crawl native files even if requested to do so
+ ✅ retains all files if `retainAllFiles` is specified
+ ✅ warns on duplicate mock files
+ ✅ warns on duplicate module ids
+ ✅ warns on duplicate module ids only once
+ ✅ throws on duplicate module ids if "throwOnModuleCollision" is set to true
+ ✅ splits up modules by platform
+ ✅ does not access the file system on a warm cache with no changes
+ ✅ only does minimal file system access when files change
+ ✅ correctly handles file deletions
+ ✅ correctly handles platform-specific file additions
+ ✅ correctly handles platform-specific file deletions
+ ✅ correctly handles platform-specific file renames
+ ✅ discards the cache when configuration changes
+ ✅ ignores files that do not exist
+ ✅ distributes work across workers
+ ✅ tries to crawl using node as a fallback
+ ✅ tries to crawl using node as a fallback when promise fails once
+ ✅ stops crawling when both crawlers fail
+HasteMap builds a haste map on a fresh cache with SHA-1s
+ ✅ uses watchman: false
+ ✅ uses watchman: true
+HasteMap duplicate modules
+ ✅ recovers when a duplicate file is deleted
+ ✅ recovers with the correct type when a duplicate file is deleted
+ ✅ recovers when a duplicate module is renamed
+HasteMap file system changes processing
+ ✅ provides a new set of hasteHS and moduleMap
+ ✅ handles several change events at once
+ ✅ does not emit duplicate change events
+ ✅ emits a change even if a file in node_modules has changed
+ ✅ correctly tracks changes to both platform-specific versions of a single module name
+HasteMap file system changes processing recovery from duplicate module IDs
+ ✅ recovers when the oldest version of the duplicates is fixed
+ ✅ recovers when the most recent duplicate is fixed
+ ✅ ignore directories
+```
+### ✅ packages/jest-haste-map/src/__tests__/worker.test.js
+```
+worker
+ ✅ parses JavaScript files and extracts module information
+ ✅ accepts a custom dependency extractor
+ ✅ delegates to hasteImplModulePath for getting the id
+ ✅ parses package.json files as haste packages
+ ✅ returns an error when a file cannot be accessed
+ ✅ simply computes SHA-1s when requested (works well with binary data)
+ ✅ avoids computing dependencies if not requested and Haste does not need it
+```
+### ✅ packages/jest-haste-map/src/crawlers/__tests__/node.test.js
+```
+node crawler
+ ✅ crawls for files based on patterns
+ ✅ updates only changed files
+ ✅ returns removed files
+ ✅ uses node fs APIs with incompatible find binary
+ ✅ uses node fs APIs without find binary
+ ✅ uses node fs APIs if "forceNodeFilesystemAPI" is set to true, regardless of platform
+ ✅ completes with empty roots
+ ✅ completes with fs.readdir throwing an error
+node crawler readdir withFileTypes support
+ ✅ calls lstat for directories and symlinks if readdir withFileTypes is not supported
+ ✅ avoids calling lstat for directories and symlinks if readdir withFileTypes is supported
+```
+### ✅ packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js
+```
+watchman watch
+ ✅ returns a list of all files when there are no clocks
+ ✅ updates file map and removedFiles when the clock is given
+ ✅ resets the file map and tracks removedFiles when watchman is fresh
+ ✅ properly resets the file map when only one watcher is reset
+ ✅ does not add directory filters to query when watching a ROOT
+ ✅ SHA-1 requested and available
+ ✅ SHA-1 requested and NOT available
+ ✅ source control query
+```
+### ✅ packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js
+```
+dependencyExtractor
+ ✅ should not extract dependencies inside comments
+ ✅ should not extract dependencies inside comments (windows line endings)
+ ✅ should not extract dependencies inside comments (unicode line endings)
+ ✅ should extract dependencies from `import` statements
+ ✅ should extract dependencies from side-effect only `import` statements
+ ✅ should not extract dependencies from `import type/typeof` statements
+ ✅ should extract dependencies from `export` statements
+ ✅ should extract dependencies from `export-from` statements
+ ✅ should not extract dependencies from `export type/typeof` statements
+ ✅ should extract dependencies from dynamic `import` calls
+ ✅ should extract dependencies from `require` calls
+ ✅ should extract dependencies from `jest.requireActual` calls
+ ✅ should extract dependencies from `jest.requireMock` calls
+ ✅ should extract dependencies from `jest.genMockFromModule` calls
+ ✅ should extract dependencies from `jest.createMockFromModule` calls
+```
+### ✅ packages/jest-haste-map/src/lib/__tests__/fast_path.test.js
+```
+fastPath.relative
+ ✅ should get relative paths inside the root
+ ✅ should get relative paths outside the root
+ ✅ should get relative paths outside the root when start with same word
+fastPath.resolve
+ ✅ should get the absolute path for paths inside the root
+ ✅ should get the absolute path for paths outside the root
+```
+### ✅ packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js
+```
+getPlatformExtension
+ ✅ should get platform ext
+```
+### ✅ packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js
+```
+isRegExpSupported
+ ✅ should return true when passing valid regular expression
+ ✅ should return false when passing an invalid regular expression
+```
+### ✅ packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js
+```
+normalizePathSep
+ ✅ does nothing on posix
+ ✅ replace slashes on windows
+```
+### ✅ packages/jest-jasmine2/src/__tests__/concurrent.test.ts
+```
+concurrent
+ ✅ should add 1 to number
+ ✅ should add 1 to number
+ ✅ should add 1 to number
+```
+### ✅ packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts
+```
+expectationResultFactory
+ ✅ returns the result if passed.
+ ✅ returns the result if failed.
+ ✅ returns the result if failed (with `message`).
+ ✅ returns the result if failed (with `error`).
+ ✅ returns the error name if the error message is empty
+ ✅ returns the result if failed (with `error` as a string).
+ ✅ returns the result if failed (with `error.stack` not as a string).
+```
+### ✅ packages/jest-jasmine2/src/__tests__/hooksError.test.ts
+```
+beforeEach hooks error throwing
+ ✅ beforeEach throws an error when "String" is provided as a first argument to it
+ ✅ beforeEach throws an error when 1 is provided as a first argument to it
+ ✅ beforeEach throws an error when [] is provided as a first argument to it
+ ✅ beforeEach throws an error when {} is provided as a first argument to it
+ ✅ beforeEach throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ beforeEach throws an error when true is provided as a first argument to it
+ ✅ beforeEach throws an error when null is provided as a first argument to it
+ ✅ beforeEach throws an error when undefined is provided as a first argument to it
+beforeAll hooks error throwing
+ ✅ beforeAll throws an error when "String" is provided as a first argument to it
+ ✅ beforeAll throws an error when 1 is provided as a first argument to it
+ ✅ beforeAll throws an error when [] is provided as a first argument to it
+ ✅ beforeAll throws an error when {} is provided as a first argument to it
+ ✅ beforeAll throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ beforeAll throws an error when true is provided as a first argument to it
+ ✅ beforeAll throws an error when null is provided as a first argument to it
+ ✅ beforeAll throws an error when undefined is provided as a first argument to it
+afterEach hooks error throwing
+ ✅ afterEach throws an error when "String" is provided as a first argument to it
+ ✅ afterEach throws an error when 1 is provided as a first argument to it
+ ✅ afterEach throws an error when [] is provided as a first argument to it
+ ✅ afterEach throws an error when {} is provided as a first argument to it
+ ✅ afterEach throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ afterEach throws an error when true is provided as a first argument to it
+ ✅ afterEach throws an error when null is provided as a first argument to it
+ ✅ afterEach throws an error when undefined is provided as a first argument to it
+afterAll hooks error throwing
+ ✅ afterAll throws an error when "String" is provided as a first argument to it
+ ✅ afterAll throws an error when 1 is provided as a first argument to it
+ ✅ afterAll throws an error when [] is provided as a first argument to it
+ ✅ afterAll throws an error when {} is provided as a first argument to it
+ ✅ afterAll throws an error when Symbol(hello) is provided as a first argument to it
+ ✅ afterAll throws an error when true is provided as a first argument to it
+ ✅ afterAll throws an error when null is provided as a first argument to it
+ ✅ afterAll throws an error when undefined is provided as a first argument to it
+```
+### ✅ packages/jest-jasmine2/src/__tests__/iterators.test.ts
+```
+iterators
+ ✅ works for arrays
+ ✅ works for custom iterables
+ ✅ works for Sets
+ ✅ works for Maps
+```
+### ✅ packages/jest-jasmine2/src/__tests__/itTestError.test.ts
+```
+test/it error throwing
+ ✅ it throws error with missing callback function
+ ✅ it throws an error when first argument isn't a string
+ ✅ it throws an error when callback function is not a function
+ ✅ test throws error with missing callback function
+ ✅ test throws an error when first argument isn't a string
+ ✅ test throws an error when callback function is not a function
+```
+### ✅ packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts
+```
+✅ global.test
+```
+### ✅ packages/jest-jasmine2/src/__tests__/pTimeout.test.ts
+```
+pTimeout
+ ✅ calls `clearTimeout` and resolves when `promise` resolves.
+ ✅ calls `clearTimeout` and rejects when `promise` rejects.
+ ✅ calls `onTimeout` on timeout.
+```
+### ✅ packages/jest-jasmine2/src/__tests__/queueRunner.test.ts
+```
+queueRunner
+ ✅ runs every function in the queue.
+ ✅ exposes `fail` to `next`.
+ ✅ passes errors to `onException`.
+ ✅ passes an error to `onException` on timeout.
+ ✅ calls `fail` with arguments
+ ✅ calls `fail` when done(error) is invoked
+```
+### ✅ packages/jest-jasmine2/src/__tests__/reporter.test.ts
+```
+Jasmine2Reporter
+ ✅ reports nested suites
+```
+### ✅ packages/jest-jasmine2/src/__tests__/Suite.test.ts
+```
+Suite
+ ✅ doesn't throw on addExpectationResult when there are no children
+```
+### ✅ packages/jest-jasmine2/src/__tests__/todoError.test.ts
+```
+test/it.todo error throwing
+ ✅ it throws error when given no arguments
+ ✅ it throws error when given more than one argument
+ ✅ it throws error when given none string description
+```
+### ✅ packages/jest-leak-detector/src/__tests__/index.test.ts
+```
+✅ complains if the value is a primitive
+✅ does not show the GC if hidden
+✅ does not hide the GC if visible
+✅ correctly checks simple leaks
+✅ tests different objects
+✅ correctly checks more complex leaks
+```
+### ✅ packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts
+```
+✅ returns the same value for primitive or function values
+✅ convert accessor descriptor into value descriptor
+✅ shuold not skips non-enumerables
+✅ copies symbols
+✅ copies arrays as array objects
+✅ handles cyclic dependencies
+✅ Copy Map
+✅ Copy cyclic Map
+✅ return same value for built-in object type except array, map and object
+✅ should copy object symbol key property
+✅ should set writable, configurable to true
+```
+### ✅ packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts
+```
+✅ should copy dom element
+✅ should copy complex element
+```
+### ✅ packages/jest-matcher-utils/src/__tests__/index.test.ts
+```
+stringify()
+ ✅ []
+ ✅ {}
+ ✅ 1
+ ✅ 0
+ ✅ 1.5
+ ✅ null
+ ✅ undefined
+ ✅ "abc"
+ ✅ Symbol(abc)
+ ✅ NaN
+ ✅ Infinity
+ ✅ -Infinity
+ ✅ /ab\.c/gi
+ ✅ 1n
+ ✅ 0n
+ ✅ circular references
+ ✅ toJSON error
+ ✅ toJSON errors when comparing two objects
+ ✅ reduces maxDepth if stringifying very large objects
+ensureNumbers()
+ ✅ dont throw error when variables are numbers
+ ✅ throws error when expected is not a number (backward compatibility)
+ ✅ throws error when received is not a number (backward compatibility)
+ensureNumbers() with options
+ ✅ promise empty isNot false received
+ ✅ promise empty isNot true expected
+ ✅ promise rejects isNot false expected
+ ✅ promise rejects isNot true received
+ ✅ promise resolves isNot false received
+ ✅ promise resolves isNot true expected
+ensureNoExpected()
+ ✅ dont throw error when undefined
+ ✅ throws error when expected is not undefined with matcherName
+ ✅ throws error when expected is not undefined with matcherName and options
+diff
+ ✅ forwards to jest-diff
+ ✅ two booleans
+ ✅ two numbers
+ ✅ two bigints
+pluralize()
+ ✅ one
+ ✅ two
+ ✅ 20
+getLabelPrinter
+ ✅ 0 args
+ ✅ 1 empty string
+ ✅ 1 non-empty string
+ ✅ 2 equal lengths
+ ✅ 2 unequal lengths
+ ✅ returns incorrect padding if inconsistent arg is shorter
+ ✅ throws if inconsistent arg is longer
+matcherHint
+ ✅ expectedColor
+ ✅ receivedColor
+ ✅ secondArgumentColor
+```
+### ✅ packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts
+```
+printDiffOrStringify
+ ✅ expected is empty and received is single line
+ ✅ expected is multi line and received is empty
+ ✅ expected and received are single line with multiple changes
+ ✅ expected and received are multi line with trailing spaces
+ ✅ has no common after clean up chaff multiline
+ ✅ has no common after clean up chaff one-line
+ ✅ object contain readonly symbol key object
+printDiffOrStringify MAX_DIFF_STRING_LENGTH
+ ✅ both are less
+ ✅ expected is more
+ ✅ received is more
+printDiffOrStringify asymmetricMatcher
+ ✅ minimal test
+ ✅ jest asymmetricMatcher
+ ✅ custom asymmetricMatcher
+ ✅ nested object
+ ✅ array
+ ✅ object in array
+ ✅ map
+ ✅ circular object
+ ✅ transitive circular
+ ✅ circular array
+ ✅ circular map
+```
+### ✅ packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts
+```
+Replaceable constructor
+ ✅ init with object
+ ✅ init with array
+ ✅ init with Map
+ ✅ init with other type should throw error
+Replaceable get
+ ✅ get object item
+ ✅ get array item
+ ✅ get Map item
+Replaceable set
+ ✅ set object item
+ ✅ set array item
+ ✅ set Map item
+Replaceable forEach
+ ✅ object forEach
+ ✅ array forEach
+ ✅ map forEach
+ ✅ forEach should ignore nonenumerable property
+Replaceable isReplaceable
+ ✅ should return true if two object types equal and support
+ ✅ should return false if two object types not equal
+ ✅ should return false if object types not support
+```
+### ✅ packages/jest-message-util/src/__tests__/messages.test.ts
+```
+✅ should exclude jasmine from stack trace for Unix paths.
+✅ .formatExecError()
+✅ formatStackTrace should strip node internals
+✅ should not exclude vendor from stack trace
+✅ retains message in babel code frame error
+✅ codeframe
+✅ no codeframe
+✅ no stack
+formatStackTrace
+ ✅ prints code frame and stacktrace
+ ✅ does not print code frame when noCodeFrame = true
+ ✅ does not print codeframe when noStackTrace = true
+```
+### ✅ packages/jest-mock/src/__tests__/index.test.ts
+```
+moduleMocker getMetadata
+ ✅ returns the function `name` property
+ ✅ mocks constant values
+ ✅ does not retrieve metadata for arrays
+ ✅ does not retrieve metadata for undefined
+ ✅ does not retrieve metadata for null
+ ✅ retrieves metadata for ES6 classes
+ ✅ retrieves synchronous function metadata
+ ✅ retrieves asynchronous function metadata
+ ✅ retrieves metadata for object literals and it's members
+ ✅ retrieves Date object metadata
+moduleMocker generateFromMetadata
+ ✅ forwards the function name property
+ ✅ fixes illegal function name properties
+ ✅ special cases the mockConstructor name
+ ✅ wont interfere with previous mocks on a shared prototype
+ ✅ does not mock non-enumerable getters
+ ✅ mocks getters of ES modules
+ ✅ mocks ES2015 non-enumerable methods
+ ✅ mocks ES2015 non-enumerable static properties and methods
+ ✅ mocks methods in all the prototype chain (null prototype)
+ ✅ does not mock methods from Object.prototype
+ ✅ does not mock methods from Object.prototype (in mock context)
+ ✅ does not mock methods from Function.prototype
+ ✅ does not mock methods from Function.prototype (in mock context)
+ ✅ does not mock methods from RegExp.prototype
+ ✅ does not mock methods from RegExp.prototype (in mock context)
+ ✅ mocks methods that are bound multiple times
+ ✅ mocks methods that are bound after mocking
+ ✅ mocks regexp instances
+ ✅ mocks functions with numeric names
+ ✅ mocks the method in the passed object itself
+ ✅ should delete previously inexistent methods when restoring
+ ✅ supports mock value returning undefined
+ ✅ supports mock value once returning undefined
+ ✅ mockReturnValueOnce mocks value just once
+ ✅ supports mocking resolvable async functions
+ ✅ supports mocking resolvable async functions only once
+ ✅ supports mocking rejectable async functions
+ ✅ supports mocking rejectable async functions only once
+ ✅ tracks thrown errors without interfering with other tracking
+ ✅ a call that throws undefined is tracked properly
+ ✅ results of recursive calls are tracked properly
+ ✅ test results of recursive calls from within the recursive call
+ ✅ call mockClear inside recursive mock
+moduleMocker generateFromMetadata mocked functions
+ ✅ tracks calls to mocks
+ ✅ tracks instances made by mocks
+ ✅ supports clearing mock calls
+ ✅ supports clearing mocks
+ ✅ supports clearing all mocks
+ ✅ supports resetting mock return values
+ ✅ supports resetting single use mock return values
+ ✅ supports resetting mock implementations
+ ✅ supports resetting single use mock implementations
+ ✅ supports resetting all mocks
+ ✅ maintains function arity
+moduleMocker generateFromMetadata return values
+ ✅ tracks return values
+ ✅ tracks mocked return values
+ ✅ supports resetting return values
+moduleMocker generateFromMetadata invocationCallOrder
+ ✅ tracks invocationCallOrder made by mocks
+ ✅ supports clearing mock invocationCallOrder
+ ✅ supports clearing all mocks invocationCallOrder
+ ✅ handles a property called `prototype`
+moduleMocker getMockImplementation
+ ✅ should mock calls to a mock function
+moduleMocker mockImplementationOnce
+ ✅ should mock constructor
+ ✅ should mock single call to a mock function
+ ✅ should fallback to default mock function when no specific mock is available
+moduleMocker
+ ✅ mockReturnValue does not override mockImplementationOnce
+ ✅ mockImplementation resets the mock
+ ✅ should recognize a mocked function
+ ✅ default mockName is jest.fn()
+ ✅ mockName sets the mock name
+ ✅ mockName gets reset by mockReset
+ ✅ mockName gets reset by mockRestore
+ ✅ mockName is not reset by mockClear
+moduleMocker spyOn
+ ✅ should work
+ ✅ should throw on invalid input
+ ✅ supports restoring all spies
+ ✅ should work with getters
+moduleMocker spyOnProperty
+ ✅ should work - getter
+ ✅ should work - setter
+ ✅ should throw on invalid input
+ ✅ supports restoring all spies
+ ✅ should work with getters on the prototype chain
+ ✅ should work with setters on the prototype chain
+ ✅ supports restoring all spies on the prototype chain
+```
+### ✅ packages/jest-regex-util/src/__tests__/index.test.ts
+```
+replacePathSepForRegex() posix
+ ✅ should return the path
+replacePathSepForRegex() win32
+ ✅ should replace POSIX path separators
+ ✅ should escape Windows path separators
+ ✅ should not escape an escaped dot
+ ✅ should not escape an escaped regexp symbol
+ ✅ should escape Windows path separators inside groups
+ ✅ should escape Windows path separator at the beginning
+ ✅ should not escape several already escaped path separators
+```
+### ✅ packages/jest-repl/src/__tests__/jest_repl.test.js
+```
+Repl cli
+ ✅ runs without errors
+```
+### ✅ packages/jest-repl/src/__tests__/runtime_cli.test.js
+```
+Runtime CLI
+ ✅ fails with no path
+ ✅ displays script output
+ ✅ always disables automocking
+ ✅ throws script errors
+```
+### ✅ packages/jest-reporters/src/__tests__/CoverageReporter.test.js
+```
+onRunComplete
+ ✅ getLastError() returns an error when threshold is not met for global
+ ✅ getLastError() returns an error when threshold is not met for file
+ ✅ getLastError() returns `undefined` when threshold is met
+ ✅ getLastError() returns an error when threshold is not met for non-covered file
+ ✅ getLastError() returns an error when threshold is not met for directory
+ ✅ getLastError() returns `undefined` when threshold is met for directory
+ ✅ getLastError() returns an error when there is no coverage data for a threshold
+ ✅ getLastError() returns 'undefined' when global threshold group
+ is empty because PATH and GLOB threshold groups have matched all the
+ files in the coverage data.
+ ✅ getLastError() returns 'undefined' when file and directory path
+ threshold groups overlap
+ ✅ that if globs or paths are specified alongside global, coverage
+ data for matching paths will be subtracted from overall coverage
+ and thresholds will be applied independently
+ ✅ that files are matched by all matching threshold groups
+ ✅ that it passes custom options when creating reporters
+```
+### ✅ packages/jest-reporters/src/__tests__/CoverageWorker.test.js
+```
+✅ resolves to the result of generateEmptyCoverage upon success
+✅ throws errors on invalid JavaScript
+```
+### ✅ packages/jest-reporters/src/__tests__/DefaultReporter.test.js
+```
+✅ normal output, everything goes to stdout
+✅ when using stderr as output, no stdout call is made
+```
+### ✅ packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js
+```
+generateEmptyCoverage
+ ✅ generates an empty coverage object for a file without running it
+ ✅ generates a null coverage result when using /* istanbul ignore file */
+ ✅ generates a null coverage result when collectCoverage global config is false
+```
+### ✅ packages/jest-reporters/src/__tests__/getResultHeader.test.js
+```
+✅ should call `terminal-link` correctly
+✅ should render the terminal link
+✅ should display test time for slow test
+✅ should not display test time for fast test
+```
+### ✅ packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js
+```
+✅ Retrieves the snapshot status
+✅ Shows no snapshot updates if all snapshots matched
+✅ Retrieves the snapshot status after a snapshot update
+```
+### ✅ packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js
+```
+✅ creates a snapshot summary
+✅ creates a snapshot summary after an update
+✅ creates a snapshot summary with multiple snapshot being written/updated
+✅ returns nothing if there are no updates
+```
+### ✅ packages/jest-reporters/src/__tests__/getWatermarks.test.ts
+```
+getWatermarks
+ ✅ that watermarks use thresholds as upper target
+ ✅ that watermarks are created always created
+```
+### ✅ packages/jest-reporters/src/__tests__/NotifyReporter.test.ts
+```
+✅ test always
+✅ test success
+✅ test change
+✅ test success-change
+✅ test failure-change
+✅ test always with rootDir
+✅ test success with rootDir
+✅ test change with rootDir
+✅ test success-change with rootDir
+✅ test failure-change with rootDir
+✅ test always with moduleName
+✅ test success with moduleName
+✅ test change with moduleName
+✅ test success-change with moduleName
+✅ test failure-change with moduleName
+node-notifier is an optional dependency
+ ✅ without node-notifier uses mock function that throws an error
+ ✅ throws the error when require throws an unexpected error
+ ✅ uses node-notifier when it is available
+```
+### ✅ packages/jest-reporters/src/__tests__/SummaryReporter.test.js
+```
+✅ snapshots needs update with npm test
+✅ snapshots needs update with yarn test
+✅ snapshots all have results (no update)
+✅ snapshots all have results (after update)
+```
+### ✅ packages/jest-reporters/src/__tests__/utils.test.ts
+```
+wrapAnsiString()
+ ✅ wraps a long string containing ansi chars
+ ✅ returns the string unaltered if given a terminal width of zero
+trimAndFormatPath()
+ ✅ trims dirname
+ ✅ trims dirname (longer line width)
+ ✅ trims dirname and basename
+ ✅ does not trim anything
+ ✅ split at the path.sep index
+printDisplayName
+ ✅ should default displayName color to white when displayName is a string
+ ✅ should default displayName color to white when color is not a valid value
+ ✅ should correctly print the displayName when color and name are valid values
+```
+### ✅ packages/jest-reporters/src/__tests__/VerboseReporter.test.js
+```
+groupTestsBySuites
+ ✅ should handle empty results
+ ✅ should group A1 in A
+ ✅ should group A1 in A; B1 in B
+ ✅ should group A1, A2 in A
+ ✅ should group A1, A2 in A; B1, B2 in B
+ ✅ should group AB1 in AB
+ ✅ should group AB1, AB2 in AB
+ ✅ should group A1 in A; AB1 in AB
+ ✅ should group AB1 in AB; A1 in A
+ ✅ should group AB1 in AB; CD1 in CD
+ ✅ should group ABC1 in ABC; BC1 in BC; D1 in D; A1 in A
+```
+### ✅ packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts
+```
+✅ resolves no dependencies for non-existent path
+✅ resolves dependencies for existing path
+✅ includes the mocks of dependencies as dependencies
+✅ resolves dependencies for scoped packages
+✅ resolves no inverse dependencies for empty paths set
+✅ resolves no inverse dependencies for set of non-existent paths
+✅ resolves inverse dependencies for existing path
+✅ resolves inverse dependencies of mock
+✅ resolves inverse dependencies from available snapshot
+✅ resolves dependencies correctly when dependency resolution fails
+✅ resolves dependencies correctly when mock dependency resolution fails
+```
+### ✅ packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts
+```
+isBuiltinModule
+ ✅ should return true for the `path` module
+ ✅ should return false for the `chalk` module
+ ✅ should return true for the `_http_common` module
+ ✅ should return false for any internal node builtins
+```
+### ✅ packages/jest-resolve/src/__tests__/resolve.test.ts
+```
+isCoreModule
+ ✅ returns false if `hasCoreModules` is false.
+ ✅ returns true if `hasCoreModules` is true and `moduleName` is a core module.
+ ✅ returns false if `hasCoreModules` is true and `moduleName` is not a core module.
+ ✅ returns false if `hasCoreModules` is true and `moduleNameMapper` alias a module same name with core module
+findNodeModule
+ ✅ is possible to override the default resolver
+ ✅ passes packageFilter to the resolve module when using the default resolver
+resolveModule
+ ✅ is possible to resolve node modules
+ ✅ is possible to resolve node modules with custom extensions
+ ✅ is possible to resolve node modules with custom extensions and platforms
+ ✅ is possible to resolve node modules by resolving their realpath
+ ✅ is possible to specify custom resolve paths
+ ✅ does not confuse directories with files
+getMockModule
+ ✅ is possible to use custom resolver to resolve deps inside mock modules with moduleNameMapper
+nodeModulesPaths
+ ✅ provides custom module paths after node_modules
+Resolver.getModulePaths() -> nodeModulesPaths()
+ ✅ can resolve node modules relative to absolute paths in "moduleDirectories" on Windows platforms
+ ✅ can resolve node modules relative to absolute paths in "moduleDirectories" on Posix platforms
+```
+### ✅ packages/jest-runner/src/__tests__/testRunner.test.ts
+```
+✅ injects the serializable module map into each worker in watch mode
+✅ assign process.env.JEST_WORKER_ID = 1 when in runInBand mode
+```
+### ✅ packages/jest-runtime/src/__tests__/instrumentation.test.ts
+```
+✅ instruments files
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js
+```
+Runtime createMockFromModule
+ ✅ does not cause side effects in the rest of the module system when generating a mock
+ ✅ resolves mapped modules correctly
+Runtime
+ ✅ creates mock objects in the right environment
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_environment.test.js
+```
+Runtime requireModule
+ ✅ emulates a node stack trace during module load
+ ✅ emulates a node stack trace during function execution
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_internal_module.test.js
+```
+Runtime internalModule
+ ✅ loads modules and applies transforms
+ ✅ loads internal modules without applying transforms
+ ✅ loads JSON modules and applies transforms
+ ✅ loads internal JSON modules without applying transforms
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_jest_fn.js
+```
+Runtime jest.fn
+ ✅ creates mock functions
+ ✅ creates mock functions with mock implementations
+Runtime jest.isMockFunction
+ ✅ recognizes a mocked function
+Runtime jest.clearAllMocks
+ ✅ clears all mocks
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js
+```
+Runtime jest.spyOn
+ ✅ calls the original function
+Runtime jest.spyOnProperty
+ ✅ calls the original function
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_mock.test.js
+```
+Runtime jest.mock
+ ✅ uses explicitly set mocks instead of automocking
+ ✅ sets virtual mock for non-existing module required from same directory
+ ✅ sets virtual mock for non-existing module required from different directory
+Runtime jest.setMock
+ ✅ uses explicitly set mocks instead of automocking
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_module_directories.test.js
+```
+Runtime
+ ✅ uses configured moduleDirectories
+ ✅ resolves packages
+ ✅ finds closest module from moduleDirectories
+ ✅ only checks the configured directories
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_node_path.test.js
+```
+Runtime
+ ✅ uses NODE_PATH to find modules
+ ✅ uses modulePaths to find modules
+ ✅ finds modules in NODE_PATH containing multiple paths
+ ✅ does not find modules if NODE_PATH is relative
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_actual.test.js
+```
+Runtime requireActual
+ ✅ requires node module when manual mock exists
+ ✅ requireActual with moduleNameMapper
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_cache.test.js
+```
+Runtime require.cache
+ ✅ require.cache returns loaded module list as native Nodejs require does
+ ✅ require.cache is tolerant readonly
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_mock.test.js
+```
+Runtime requireMock
+ ✅ uses manual mocks before attempting to automock
+ ✅ can resolve modules that are only referenced from mocks
+ ✅ stores and re-uses manual mock exports
+ ✅ automocks haste modules without a manual mock
+ ✅ automocks relative-path modules without a file extension
+ ✅ automocks relative-path modules with a file extension
+ ✅ just falls back when loading a native module
+ ✅ stores and re-uses automocked haste exports
+ ✅ stores and re-uses automocked relative-path modules
+ ✅ multiple node core modules returns correct module
+ ✅ throws on non-existent haste modules
+ ✅ uses manual mocks when using a custom resolver
+ ✅ provides `require.main` in mock
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js
+```
+Runtime requireModule with no extension
+ ✅ throws error pointing out file with extension
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js
+```
+transitive dependencies
+ ✅ mocks a manually mocked and mapped module
+ ✅ unmocks transitive dependencies in node_modules by default
+ ✅ unmocks transitive dependencies in node_modules when using unmock
+ ✅ unmocks transitive dependencies in node_modules by default when using both patterns and unmock
+ ✅ mocks deep dependencies when using unmock
+ ✅ does not mock deep dependencies when using deepUnmock
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js
+```
+✅ mocks modules by default when using automocking
+✅ doesn't mock modules when explicitly unmocked when using automocking
+✅ doesn't mock modules when explicitly unmocked via a different name
+✅ doesn't mock modules when disableAutomock() has been called
+✅ uses manual mock when automocking on and mock is available
+✅ does not use manual mock when automocking is off and a real module is available
+✅ resolves mapped module names and unmocks them by default
+✅ automocking is disabled by default
+✅ unmocks modules in config.unmockedModulePathPatterns for tests with automock enabled when automock is false
+✅ unmocks virtual mocks after they have been mocked previously
+resetModules
+ ✅ resets all the modules
+isolateModules
+ ✅ keeps it's registry isolated from global one
+ ✅ resets all modules after the block
+ ✅ resets module after failing
+ ✅ cannot nest isolateModules blocks
+ ✅ can call resetModules within a isolateModules block
+isolateModules can use isolateModules from a beforeEach block
+ ✅ can use the required module from beforeEach and re-require it
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_module.test.js
+```
+Runtime requireModule
+ ✅ finds haste modules
+ ✅ provides `module` to modules
+ ✅ provides `module.parent` to modules
+ ✅ `module.parent` should be undefined for entrypoints
+ ✅ resolve module.parent.require correctly
+ ✅ resolve module.parent.filename correctly
+ ✅ provides `module.loaded` to modules
+ ✅ provides `module.filename` to modules
+ ✅ provides `module.paths` to modules
+ ✅ provides `require.main` to modules
+ ✅ throws on non-existent haste modules
+ ✅ finds relative-path modules without file extension
+ ✅ finds relative-path modules with file extension
+ ✅ throws on non-existent relative-path modules
+ ✅ finds node core built-in modules
+ ✅ finds and loads JSON files without file extension
+ ✅ finds and loads JSON files with file extension
+ ✅ requires a JSON file twice successfully
+ ✅ provides manual mock when real module doesnt exist
+ ✅ doesn't override real modules with manual mocks when explicitly unmocked
+ ✅ resolves haste packages properly
+ ✅ resolves platform extensions based on the default platform
+ ✅ finds modules encoded in UTF-8 *with BOM*
+ ✅ finds and loads JSON files encoded in UTF-8 *with BOM*
+ ✅ should export a constructable Module class
+ ✅ caches Module correctly
+Runtime requireModule on node >=12.12.0
+ ✅ overrides module.createRequire
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts
+```
+Runtime require.resolve
+ ✅ resolves a module path
+ ✅ resolves a module path with moduleNameMapper
+Runtime require.resolve with the jest-resolve-outside-vm-option
+ ✅ forwards to the real Node require in an internal context
+ ✅ ignores the option in an external context
+ ✅ does not understand a self-constructed outsideJestVmPath in an external context
+```
+### ✅ packages/jest-runtime/src/__tests__/runtime_wrap.js
+```
+Runtime wrapCodeInModuleWrapper
+ ✅ generates the correct args for the module wrapper
+ ✅ injects "extra globals"
+```
+### ✅ packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js
+```
+Runtime requireModule
+ ✅ installs source maps if available
+```
+### ✅ packages/jest-runtime/src/__tests__/Runtime-statics.test.js
+```
+Runtime statics
+ ✅ Runtime.createHasteMap passes correct ignore files to HasteMap
+ ✅ Runtime.createHasteMap passes correct ignore files to HasteMap in watch mode
+```
+### ✅ packages/jest-serializer/src/__tests__/index.test.ts
+```
+Using V8 implementation
+ ✅ throws the error with an invalid serialization
+Using V8 implementation Object 0
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 1
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 2
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 3
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 4
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 5
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 6
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+Using V8 implementation Object 7
+ ✅ serializes/deserializes in memory
+ ✅ serializes/deserializes in disk
+```
+### ✅ packages/jest-snapshot/src/__tests__/dedentLines.test.ts
+```
+dedentLines non-null
+ ✅ no lines
+ ✅ one line empty string
+ ✅ one line empty object
+ ✅ one line self-closing element
+ ✅ object value empty string
+ ✅ object value string includes double-quote marks
+ ✅ markup with props and text
+ ✅ markup with components as props
+dedentLines null
+ ✅ object key multi-line
+ ✅ object value multi-line
+ ✅ object key and value multi-line
+ ✅ markup prop multi-line
+ ✅ markup prop component with multi-line text
+ ✅ markup text multi-line
+ ✅ markup text multiple lines
+ ✅ markup unclosed self-closing start tag
+ ✅ markup unclosed because no end tag
+```
+### ✅ packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts
+```
+✅ saveInlineSnapshots() replaces empty function call with a template literal
+✅ saveInlineSnapshots() without prettier leaves formatting outside of snapshots alone
+✅ saveInlineSnapshots() can handle typescript without prettier
+✅ saveInlineSnapshots() can handle tsx without prettier
+✅ saveInlineSnapshots() can handle flow and jsx without prettier
+✅ saveInlineSnapshots() can use prettier to fix formatting for whole file
+✅ saveInlineSnapshots() replaces existing template literal - babel parser
+✅ saveInlineSnapshots() replaces existing template literal - flow parser
+✅ saveInlineSnapshots() replaces existing template literal - typescript parser
+✅ saveInlineSnapshots() replaces existing template literal with property matchers
+✅ saveInlineSnapshots() creates template literal with property matchers
+✅ saveInlineSnapshots() creates template literal with property matchers
+✅ saveInlineSnapshots() throws if frame does not match
+✅ saveInlineSnapshots() throws if multiple calls to to the same location
+✅ saveInlineSnapshots() uses escaped backticks
+✅ saveInlineSnapshots() works with non-literals in expect call
+✅ saveInlineSnapshots() indents multi-line snapshots with spaces
+✅ saveInlineSnapshots() does not re-indent error snapshots
+✅ saveInlineSnapshots() does not re-indent already indented snapshots
+✅ saveInlineSnapshots() indents multi-line snapshots with tabs
+✅ saveInlineSnapshots() indents snapshots after prettier reformats
+✅ saveInlineSnapshots() does not indent empty lines
+```
+### ✅ packages/jest-snapshot/src/__tests__/matcher.test.ts
+```
+✅ matcher returns matcher name, expected and actual values
+```
+### ✅ packages/jest-snapshot/src/__tests__/mockSerializer.test.ts
+```
+✅ mock with 0 calls and default name
+✅ mock with 2 calls, 1 return, 1 throw
+✅ mock with 0 calls and default name in React element
+✅ mock with 0 calls and non-default name
+✅ mock with 1 calls and non-default name via new in object
+✅ mock with 1 calls in React element
+✅ mock with 2 calls
+✅ indent option
+✅ min option
+✅ maxDepth option
+```
+### ✅ packages/jest-snapshot/src/__tests__/printSnapshot.test.ts
+```
+chalk
+ ✅ level 0
+ ✅ level 1
+ ✅ level 2
+ ✅ level 3
+matcher error toMatchInlineSnapshot
+ ✅ Expected properties must be an object (non-null) without snapshot
+ ✅ Expected properties must be an object (null) with snapshot
+ ✅ Inline snapshot must be a string
+ ✅ Snapshot matchers cannot be used with not
+matcher error toMatchSnapshot
+ ✅ Expected properties must be an object (non-null)
+ ✅ Expected properties must be an object (null) with hint
+ ✅ Expected properties must be an object (null) without hint
+ ✅ Snapshot state must be initialized
+matcher error toMatchSnapshot received value must be an object
+ ✅ (non-null)
+ ✅ (null)
+matcher error toThrowErrorMatchingInlineSnapshot
+ ✅ Inline snapshot must be a string
+ ✅ Snapshot state must be initialized
+matcher error toThrowErrorMatchingSnapshot
+ ✅ Received value must be a function
+ ✅ Snapshot matchers cannot be used with not
+other error toThrowErrorMatchingSnapshot
+ ✅ Received function did not throw
+pass false toMatchInlineSnapshot with properties equals false
+ ✅ with snapshot
+ ✅ without snapshot
+pass false toMatchInlineSnapshot with properties
+ ✅ equals true
+pass false toMatchSnapshot
+ ✅ New snapshot was not written (multi line)
+ ✅ New snapshot was not written (single line)
+pass false toMatchSnapshot with properties equals false
+ ✅ isLineDiffable false
+ ✅ isLineDiffable true
+pass false toMatchSnapshot with properties
+ ✅ equals true
+pass false toThrowErrorMatchingInlineSnapshot
+ ✅ with snapshot
+pass true toMatchSnapshot
+ ✅ without properties
+printPropertiesAndReceived
+ ✅ omit missing properties
+printSnapshotAndReceived backtick
+ ✅ single line expected and received
+printSnapshotAndReceived empty string
+ ✅ expected and received single line
+ ✅ received and expected multi line
+printSnapshotAndReceived escape
+ ✅ double quote marks in string
+ ✅ backslash in multi line string
+ ✅ backslash in single line string
+ ✅ regexp
+printSnapshotAndReceived expand
+ ✅ false
+ ✅ true
+printSnapshotAndReceived
+ ✅ fallback to line diff
+ ✅ multi line small change in one line and other is unchanged
+ ✅ multi line small changes
+ ✅ single line large changes
+printSnapshotAndReceived has no common after clean up chaff
+ ✅ array
+ ✅ string single line
+printSnapshotAndReceived MAX_DIFF_STRING_LENGTH unquoted
+ ✅ both are less
+ ✅ expected is more
+ ✅ received is more
+printSnapshotAndReceived MAX_DIFF_STRING_LENGTH quoted
+ ✅ both are less
+ ✅ expected is more
+ ✅ received is more
+printSnapshotAndReceived isLineDiffable false
+ ✅ asymmetric matcher
+ ✅ boolean
+ ✅ date
+ ✅ error
+ ✅ function
+ ✅ number
+printSnapshotAndReceived isLineDiffable true
+ ✅ array
+ ✅ object
+ ✅ single line expected and received
+ ✅ single line expected and multi line received
+printSnapshotAndReceived ignore indentation
+ ✅ markup delete
+ ✅ markup fall back
+ ✅ markup insert
+printSnapshotAndReceived ignore indentation object
+ ✅ delete
+ ✅ insert
+printSnapshotAndReceived without serialize
+ ✅ backtick single line expected and received
+ ✅ backtick single line expected and multi line received
+ ✅ has no common after clean up chaff multi line
+ ✅ has no common after clean up chaff single line
+ ✅ prettier/pull/5590
+```
+### ✅ packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts
+```
+defaults
+ ✅ returns cached object if called multiple times
+ ✅ resolveSnapshotPath()
+ ✅ resolveTestPath()
+custom resolver in project config
+ ✅ returns cached object if called multiple times
+ ✅ resolveSnapshotPath()
+ ✅ resolveTestPath()
+malformed custom resolver in project config
+ ✅ missing resolveSnapshotPath throws
+ ✅ missing resolveTestPath throws
+ ✅ missing testPathForConsistencyCheck throws
+ ✅ inconsistent functions throws
+```
+### ✅ packages/jest-snapshot/src/__tests__/throwMatcher.test.ts
+```
+✅ throw matcher can take func
+throw matcher from promise
+ ✅ can take error
+ ✅ can take custom error
+```
+### ✅ packages/jest-snapshot/src/__tests__/utils.test.ts
+```
+✅ keyToTestName()
+✅ testNameToKey
+✅ saveSnapshotFile() works with
+✅ saveSnapshotFile() works with
+✅ getSnapshotData() throws when no snapshot version
+✅ getSnapshotData() throws for older snapshot version
+✅ getSnapshotData() throws for newer snapshot version
+✅ getSnapshotData() does not throw for when updating
+✅ getSnapshotData() marks invalid snapshot dirty when updating
+✅ getSnapshotData() marks valid snapshot not dirty when updating
+✅ escaping
+✅ serialize handles \r\n
+ExtraLineBreaks
+ ✅ 0 empty string
+ ✅ 1 line has double quote marks at edges
+ ✅ 1 line has spaces at edges
+ ✅ 2 lines both are blank
+ ✅ 2 lines have double quote marks at edges
+ ✅ 2 lines first is blank
+ ✅ 2 lines last is blank
+removeLinesBeforeExternalMatcherTrap
+ ✅ contains external matcher trap
+ ✅ doesn't contain external matcher trap
+DeepMerge with property matchers
+ ✅ Correctly merges a nested object
+ ✅ Correctly merges an object with an array of objects
+ ✅ Correctly merges an object with an array of strings
+ ✅ Correctly merges an array of objects
+ ✅ Correctly merges an array of arrays
+```
+### ✅ packages/jest-source-map/src/__tests__/getCallsite.test.ts
+```
+getCallsite
+ ✅ without source map
+ ✅ ignores errors when fs throws
+ ✅ reads source map file to determine line and column
+```
+### ✅ packages/jest-test-result/src/__tests__/formatTestResults.test.ts
+```
+formatTestResults
+ ✅ includes test full name
+```
+### ✅ packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js
+```
+✅ sorts by file size if there is no timing information
+✅ sorts based on timing information
+✅ sorts based on failures and timing information
+✅ sorts based on failures, timing information and file size
+✅ writes the cache based on results without existing cache
+✅ returns failed tests in sorted order
+✅ writes the cache based on the results
+✅ works with multiple contexts
+```
+### ✅ packages/jest-transform/src/__tests__/ScriptTransformer.test.ts
+```
+ScriptTransformer
+ ✅ transforms a file properly
+ ✅ does not transform Node core modules
+ ✅ throws an error if `process` doesn't return a string or an objectcontaining `code` key with processed string
+ ✅ throws an error if `process` doesn't defined
+ ✅ throws an error if createTransformer returns object without `process` method
+ ✅ shouldn't throw error without process method. But with corrent createTransformer method
+ ✅ uses the supplied preprocessor
+ ✅ uses multiple preprocessors
+ ✅ writes source map if preprocessor supplies it
+ ✅ writes source map if preprocessor inlines it
+ ✅ warns of unparseable inlined source maps from the preprocessor
+ ✅ writes source maps if given by the transformer
+ ✅ does not write source map if not given by the transformer
+ ✅ should write a source map for the instrumented file when transformed
+ ✅ should write a source map for the instrumented file when not transformed
+ ✅ passes expected transform options to getCacheKey
+ ✅ creates transformer with config
+ ✅ reads values from the cache
+ ✅ reads values from the cache when the file contains colons
+ ✅ should reuse the value from in-memory cache which is set by custom transformer
+ ✅ does not reuse the in-memory cache between different projects
+ ✅ preload transformer when using `preloadTransformer`
+```
+### ✅ packages/jest-transform/src/__tests__/shouldInstrument.test.ts
+```
+shouldInstrument should return true
+ ✅ when testRegex is provided and file is not a test file
+ ✅ when more than one testRegex is provided and filename is not a test file
+ ✅ when testMatch is provided and file is not a test file
+ ✅ when testPathIgnorePatterns is provided and file is not a test file
+ ✅ when more than one testPathIgnorePatterns is provided and filename is not a test file
+ ✅ when testRegex and testPathIgnorePatterns are provided and file is not a test file
+ ✅ when testMatch and testPathIgnorePatterns are provided and file is not a test file
+ ✅ should return true when file is in collectCoverageOnlyFrom when provided
+ ✅ should return true when filename matches collectCoverageFrom
+ ✅ should return true if the file is not in coveragePathIgnorePatterns
+ ✅ should return true if file is a testfile but forceCoverageMatch is set
+shouldInstrument should return false
+ ✅ if collectCoverage is falsy
+ ✅ when testRegex is provided and filename is a test file
+ ✅ when more than one testRegex is provided and filename matches one of the patterns
+ ✅ when testMatch is provided and file is a test file
+ ✅ when testRegex and testPathIgnorePatterns are provided and filename is a test file
+ ✅ when testMatch and testPathIgnorePatterns are provided and file is a test file
+ ✅ when file is not in collectCoverageOnlyFrom when provided
+ ✅ when filename does not match collectCoverageFrom
+ ✅ if the file is in coveragePathIgnorePatterns
+ ✅ if file is in mock patterns
+ ✅ if file is a globalSetup file
+ ✅ if file is globalTeardown file
+ ✅ if file is in setupFiles
+ ✅ if file is in setupFilesAfterEnv
+```
+### ✅ packages/jest-util/src/__tests__/createProcessObject.test.ts
+```
+✅ creates a process object that looks like the original one
+✅ fakes require("process") so it is equal to "global.process"
+✅ checks that process.env works as expected on Linux platforms
+✅ checks that process.env works as expected in Windows platforms
+```
+### ✅ packages/jest-util/src/__tests__/deepCyclicCopy.test.ts
+```
+✅ returns the same value for primitive or function values
+✅ does not execute getters/setters, but copies them
+✅ copies symbols
+✅ copies arrays as array objects
+✅ handles cyclic dependencies
+✅ uses the blacklist to avoid copying properties on the first level
+✅ does not keep the prototype by default when top level is object
+✅ does not keep the prototype by default when top level is array
+✅ does not keep the prototype of arrays when keepPrototype = false
+✅ keeps the prototype of arrays when keepPrototype = true
+✅ does not keep the prototype for objects when keepPrototype = false
+✅ keeps the prototype for objects when keepPrototype = true
+```
+### ✅ packages/jest-util/src/__tests__/errorWithStack.test.ts
+```
+ErrorWithStack
+ ✅ calls Error.captureStackTrace with given callsite when capture exists
+```
+### ✅ packages/jest-util/src/__tests__/formatTime.test.ts
+```
+✅ defaults to milliseconds
+✅ formats seconds properly
+✅ formats milliseconds properly
+✅ formats microseconds properly
+✅ formats nanoseconds properly
+✅ interprets lower than lowest powers as nanoseconds
+✅ interprets higher than highest powers as seconds
+✅ interprets non-multiple-of-3 powers as next higher prefix
+✅ formats the quantity properly when pad length is lower
+✅ formats the quantity properly when pad length is equal
+✅ left pads the quantity properly when pad length is higher
+```
+### ✅ packages/jest-util/src/__tests__/globsToMatcher.test.ts
+```
+✅ works like micromatch with only positive globs
+✅ works like micromatch with a mix of overlapping positive and negative globs
+✅ works like micromatch with only negative globs
+✅ works like micromatch with empty globs
+```
+### ✅ packages/jest-util/src/__tests__/installCommonGlobals.test.ts
+```
+✅ returns the passed object
+✅ turns a V8 global object into a Node global object
+```
+### ✅ packages/jest-util/src/__tests__/isInteractive.test.ts
+```
+✅ Returns true when running on interactive environment
+✅ Returns false when running on a non-interactive environment
+```
+### ✅ packages/jest-util/src/__tests__/isPromise.test.ts
+```
+not a Promise:
+ ✅ undefined
+ ✅ null
+ ✅ true
+ ✅ 42
+ ✅ "1337"
+ ✅ Symbol()
+ ✅ []
+ ✅ {}
+✅ a resolved Promise
+✅ a rejected Promise
+```
+### ✅ packages/jest-validate/src/__tests__/validate.test.ts
+```
+✅ recursively validates default Jest config
+✅ recursively validates default jest-validate config
+✅ pretty prints valid config for Boolean
+✅ pretty prints valid config for Array
+✅ pretty prints valid config for String
+✅ pretty prints valid config for Object
+✅ pretty prints valid config for Function
+✅ omits null and undefined config values
+✅ recursively omits null and undefined config values
+✅ treat async and non-async functions as equivalent
+✅ treat async and non-async functions as equivalent
+✅ treat async and non-async functions as equivalent
+✅ treat async and non-async functions as equivalent
+✅ respects recursiveDenylist
+✅ displays warning for unknown config options
+✅ displays warning for deprecated config options
+✅ works with custom warnings
+✅ works with custom errors
+✅ works with custom deprecations
+✅ works with multiple valid types
+✅ reports errors nicely when failing with multiple valid options
+✅ Repeated types within multiple valid examples are coalesced in error report
+✅ Comments in config JSON using "//" key are not warned
+```
+### ✅ packages/jest-validate/src/__tests__/validateCLIOptions.test.js
+```
+✅ validates yargs special options
+✅ validates testURL
+✅ fails for unknown option
+✅ fails for multiple unknown options
+✅ does not show suggestion when unrecognized cli param length <= 1
+✅ shows suggestion when unrecognized cli param length > 1
+```
+### ✅ packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts
+```
+for multiline test name returns
+ ✅ test name with highlighted pattern and replaced line breaks
+for one line test name with pattern in the head returns
+ ✅ test name with highlighted pattern
+ ✅ test name with cutted tail and highlighted pattern
+ ✅ test name with cutted tail and cutted highlighted pattern
+for one line test name pattern in the middle
+ ✅ test name with highlighted pattern returns
+ ✅ test name with cutted tail and highlighted pattern
+ ✅ test name with cutted tail and cutted highlighted pattern
+ ✅ test name with highlighted cutted
+for one line test name pattern in the tail returns
+ ✅ test name with highlighted pattern
+ ✅ test name with cutted tail and cutted highlighted pattern
+ ✅ test name with highlighted cutted
+```
+### ✅ packages/jest-watcher/src/lib/__tests__/prompt.test.ts
+```
+✅ calls handler on change value
+✅ calls handler on success prompt
+✅ calls handler on cancel prompt
+```
+### ✅ packages/jest-watcher/src/lib/__tests__/scroll.test.ts
+```
+✅ When offset is -1
+✅ When offset is in the first set of items
+✅ When offset is in the middle of the list
+✅ When offset is at the end of the list
+✅ When offset is at the end and size is smaller than max
+```
+### ✅ packages/jest-worker/src/__tests__/Farm.test.js
+```
+Farm
+ ✅ sends a request to one worker
+ ✅ sends four requests to four unique workers
+ ✅ handles null computeWorkerKey, sending to first worker
+ ✅ sends the same worker key to the same worker
+ ✅ returns the result if the call worked
+ ✅ throws if the call failed
+ ✅ checks that once a sticked task finishes, next time is sent to that worker
+ ✅ checks that even before a sticked task finishes, next time is sent to that worker
+ ✅ checks that locking works, and jobs are never lost
+ ✅ can receive custom messages from workers
+```
+### ✅ packages/jest-worker/src/__tests__/FifoQueue.test.js
+```
+✅ returns the shared tasks in FIFO ordering
+✅ returns the worker specific tasks in FIFO ordering
+✅ maintains global FIFO ordering between worker specific and shared tasks
+```
+### ✅ packages/jest-worker/src/__tests__/index.test.js
+```
+✅ exposes the right API using default working
+✅ exposes the right API using passed worker
+✅ breaks if any of the forbidden methods is tried to be exposed
+✅ works with minimal options
+✅ does not let make calls after the farm is ended
+✅ does not let end the farm after it is ended
+✅ calls doWork
+✅ calls getStderr and getStdout from worker
+```
+### ✅ packages/jest-worker/src/__tests__/PriorityQueue.test.js
+```
+✅ returns the tasks in order
+✅ returns the task with the lowest priority value if inserted in reversed order
+✅ returns the task with the lowest priority value if inserted in correct order
+✅ uses different queues for each worker
+✅ process task in the global and shared queue in order
+```
+### ✅ packages/jest-worker/src/__tests__/process-integration.test.js
+```
+Jest Worker Integration
+ ✅ calls a single method from the worker
+ ✅ distributes sequential calls across child processes
+ ✅ schedules the task on the first available child processes if the scheduling policy is in-order
+ ✅ distributes concurrent calls across child processes
+ ✅ sticks parallel calls to children
+```
+### ✅ packages/jest-worker/src/__tests__/thread-integration.test.js
+```
+Jest Worker Process Integration
+ ✅ calls a single method from the worker
+ ✅ distributes sequential calls across child processes
+ ✅ schedules the task on the first available child processes if the scheduling policy is in-order
+ ✅ schedules the task on the first available child processes
+ ✅ distributes concurrent calls across child processes
+ ✅ sticks parallel calls to children
+```
+### ✅ packages/jest-worker/src/__tests__/WorkerPool.test.js
+```
+WorkerPool
+ ✅ should create a ChildProcessWorker and send to it
+ ✅ should create a NodeThreadWorker and send to it
+ ✅ should avoid NodeThreadWorker if not passed enableWorkerThreads
+```
+### ✅ packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js
+```
+BaseWorkerPool
+ ✅ throws error when createWorker is not defined
+ ✅ creates and exposes n workers
+ ✅ creates and expoeses n workers
+ ✅ creates workers with the right options
+ ✅ makes a non-existing relative worker throw
+ ✅ create multiple workers with unique worker ids
+ ✅ aggregates all stdouts and stderrs from all workers
+ ✅ works when stdout and stderr are not piped to the parent
+BaseWorkerPool end
+ ✅ ends all workers
+ ✅ resolves with forceExited=false if workers exited gracefully
+ ✅ force exits workers that do not exit gracefully and resolves with forceExited=true
+```
+### ✅ packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js
+```
+✅ passes fork options down to child_process.fork, adding the defaults
+✅ passes workerId to the child process and assign it to 1-indexed env.JEST_WORKER_ID
+✅ initializes the child process with the given workerPath
+✅ stops initializing the worker after the amount of retries is exceeded
+✅ provides stdout and stderr from the child processes
+✅ sends the task to the child process
+✅ resends the task to the child process after a retry
+✅ calls the onProcessStart method synchronously if the queue is empty
+✅ can send multiple messages to parent
+✅ creates error instances for known errors
+✅ throws when the child process returns a strange message
+✅ does not restart the child if it cleanly exited
+✅ resolves waitForExit() after the child process cleanly exited
+✅ restarts the child when the child process dies
+✅ sends SIGTERM when forceExit() is called
+✅ sends SIGKILL some time after SIGTERM
+✅ does not send SIGKILL if SIGTERM exited the process
+```
+### ✅ packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js
+```
+✅ passes fork options down to child_process.fork, adding the defaults
+✅ passes workerId to the thread and assign it to env.JEST_WORKER_ID
+✅ initializes the thread with the given workerPath
+✅ stops initializing the worker after the amount of retries is exceeded
+✅ provides stdout and stderr from the threads
+✅ sends the task to the thread
+✅ resends the task to the thread after a retry
+✅ calls the onProcessStart method synchronously if the queue is empty
+✅ can send multiple messages to parent
+✅ creates error instances for known errors
+✅ throws when the thread returns a strange message
+✅ does not restart the thread if it cleanly exited
+✅ resolves waitForExit() after the thread cleanly exited
+✅ restarts the thread when the thread dies
+✅ terminates the thread when forceExit() is called
+```
+### ✅ packages/jest-worker/src/workers/__tests__/processChild.test.js
+```
+✅ lazily requires the file
+✅ calls initialize with the correct arguments
+✅ returns results immediately when function is synchronous
+✅ returns results when it gets resolved if function is asynchronous
+✅ calls the main module if the method call is "default"
+✅ calls the main export if the method call is "default" and it is a Babel transpiled one
+✅ removes the message listener on END message
+✅ calls the teardown method
+✅ throws if an invalid message is detected
+✅ throws if child is not forked
+```
+### ✅ packages/jest-worker/src/workers/__tests__/threadChild.test.js
+```
+✅ lazily requires the file
+✅ calls initialize with the correct arguments
+✅ returns results immediately when function is synchronous
+✅ returns results when it gets resolved if function is asynchronous
+✅ calls the main module if the method call is "default"
+✅ calls the main export if the method call is "default" and it is a Babel transpiled one
+✅ removes the message listener on END message
+✅ calls the teardown method
+✅ throws if an invalid message is detected
+✅ throws if child is not forked
+```
+### ✅ packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts
+```
+✅ supports any(String)
+✅ supports nested any(String)
+✅ supports any(Function)
+✅ supports nested any(Function)
+✅ supports any(Array)
+✅ supports nested any(Array)
+✅ supports any(Object)
+✅ supports nested any(Object)
+✅ supports any(RegExp)
+✅ supports nested any(RegExp)
+✅ supports any(Symbol)
+✅ supports nested any(Symbol)
+✅ supports any(Function)
+✅ supports nested any(Function)
+✅ supports any()
+✅ supports nested any()
+✅ supports any(namedFuntction)
+✅ supports nested any(namedFuntction)
+✅ anything()
+✅ arrayContaining()
+✅ arrayNotContaining()
+✅ objectContaining()
+✅ objectNotContaining()
+✅ stringContaining(string)
+✅ not.stringContaining(string)
+✅ stringMatching(string)
+✅ stringMatching(regexp)
+✅ stringMatching(regexp) {escapeRegex: false}
+✅ stringMatching(regexp) {escapeRegex: true}
+✅ stringNotMatching(string)
+✅ supports multiple nested asymmetric matchers
+✅ min option
+indent option
+ ✅ default implicit: 2 spaces
+ ✅ default explicit: 2 spaces
+ ✅ non-default: 0 spaces
+ ✅ non-default: 4 spaces
+maxDepth option
+ ✅ matchers as leaf nodes
+ ✅ matchers as internal nodes
+```
+### ✅ packages/pretty-format/src/__tests__/ConvertAnsi.test.ts
+```
+ConvertAnsi plugin
+ ✅ supports style.red
+ ✅ supports style.green
+ ✅ supports style.reset
+ ✅ supports style.bold
+ ✅ supports style.dim
+ ✅ does not support other colors
+```
+### ✅ packages/pretty-format/src/__tests__/DOMCollection.test.ts
+```
+DOMCollection plugin for object properties
+ ✅ supports DOMStringMap
+ ✅ supports NamedNodeMap
+ ✅ supports config.min option
+DOMCollection plugin for list items
+ ✅ supports HTMLCollection for getElementsByTagName
+ ✅ supports HTMLCollection for children
+ ✅ supports config.maxDepth option
+ ✅ supports NodeList for querySelectorAll
+ ✅ supports NodeList for childNodes
+ ✅ supports HTMLOptionsCollection for select options
+ ✅ supports HTMLCollection for form elements
+```
+### ✅ packages/pretty-format/src/__tests__/DOMElement.test.ts
+```
+pretty-format
+ ✅ prints global window as constructor name alone
+DOMElement Plugin
+ ✅ supports a single HTML element
+ ✅ supports an HTML element with a class property
+ ✅ supports an HTML element with a title property
+ ✅ escapes double quote in attribute value
+ ✅ supports an HTML element with a single attribute
+ ✅ supports an HTML element with multiple attributes
+ ✅ supports an HTML element with attribute and text content
+ ✅ supports an element with text content
+ ✅ supports nested elements
+ ✅ supports nested elements with attributes
+ ✅ supports nested elements with attribute and text content
+ ✅ supports nested elements with text content
+ ✅ supports siblings
+ ✅ supports multiline text node in pre
+ ✅ supports multiline text node preceding span in pre
+ ✅ supports multiline text node in textarea
+ ✅ supports empty text node
+ ✅ supports non-empty text node
+ ✅ supports comment node
+ ✅ supports fragment node
+ ✅ supports custom elements
+ ✅ supports SVG elements
+ ✅ supports indentation for array of elements
+ ✅ supports maxDepth option
+ ✅ handles `tagName` not being a string
+DOMElement Plugin matches constructor name of SVG elements
+ ✅ jsdom 9 and 10
+ ✅ jsdom 11
+```
+### ✅ packages/pretty-format/src/__tests__/Immutable.test.ts
+```
+✅ does not incorrectly match identity-obj-proxy as Immutable object
+Immutable.OrderedSet
+ ✅ supports an empty collection {min: true}
+ ✅ supports an empty collection {min: false}
+ ✅ supports a single string element
+ ✅ supports a single integer element
+ ✅ supports multiple string elements {min: true}
+ ✅ supports multiple string elements {min: false}
+ ✅ supports multiple integer elements {min: true}
+ ✅ supports multiple integer elements {min: false}
+ ✅ supports object elements {min: true}
+ ✅ supports object elements {min: false}
+ ✅ supports React elements {min: true}
+ ✅ supports React elements {min: false}
+Immutable.List
+ ✅ supports an empty collection {min: true}
+ ✅ supports an empty collection {min: false}
+ ✅ supports a single string element
+ ✅ supports a single integer element
+ ✅ supports multiple string elements {min: true}
+ ✅ supports multiple string elements {min: false}
+ ✅ supports multiple integer elements {min: true}
+ ✅ supports multiple integer elements {min: false}
+ ✅ supports object elements {min: true}
+ ✅ supports object elements {min: false}
+ ✅ supports React elements {min: true}
+ ✅ supports React elements {min: false}
+Immutable.Stack
+ ✅ supports an empty collection {min: true}
+ ✅ supports an empty collection {min: false}
+ ✅ supports a single string element
+ ✅ supports a single integer element
+ ✅ supports multiple string elements {min: true}
+ ✅ supports multiple string elements {min: false}
+ ✅ supports multiple integer elements {min: true}
+ ✅ supports multiple integer elements {min: false}
+ ✅ supports object elements {min: true}
+ ✅ supports object elements {min: false}
+ ✅ supports React elements {min: true}
+ ✅ supports React elements {min: false}
+Immutable.Set
+ ✅ supports an empty collection {min: true}
+ ✅ supports an empty collection {min: false}
+ ✅ supports a single string element
+ ✅ supports a single integer element
+ ✅ supports multiple string elements {min: true}
+ ✅ supports multiple string elements {min: false}
+ ✅ supports multiple integer elements {min: true}
+ ✅ supports multiple integer elements {min: false}
+ ✅ supports object elements {min: true}
+ ✅ supports object elements {min: false}
+ ✅ supports React elements {min: true}
+ ✅ supports React elements {min: false}
+Immutable.Map
+ ✅ supports an empty collection {min: true}
+ ✅ supports an empty collection {min: false}
+ ✅ supports an object with single key
+ ✅ supports an object with multiple keys {min: true}
+ ✅ supports an object with multiple keys {min: false}
+ ✅ supports object elements {min: true}
+ ✅ supports object elements {min: false}
+ ✅ supports React elements {min: true}
+ ✅ supports React elements {min: false}
+Immutable.OrderedMap
+ ✅ supports an empty collection {min: true}
+ ✅ supports an empty collection {min: false}
+ ✅ supports an object with single key
+ ✅ supports an object with multiple keys {min: true}
+ ✅ supports an object with multiple keys {min: false}
+ ✅ supports object elements {min: true}
+ ✅ supports object elements {min: false}
+ ✅ supports React elements {min: true}
+ ✅ supports React elements {min: false}
+ ✅ supports non-string keys
+Immutable.Record
+ ✅ supports an empty record {min: true}
+ ✅ supports an empty record {min: false}
+ ✅ supports a record with descriptive name
+ ✅ supports a record without descriptive name
+ ✅ supports a record with values {min: true}
+ ✅ supports a record with values {min: false}
+ ✅ supports a record with Map value {min: true}
+ ✅ supports a record with Map value {min: false}
+ ✅ supports imbricated Record {min: true}
+ ✅ supports imbricated Record {min: false}
+indentation of heterogeneous collections
+ ✅ empty Immutable.List as child of Object
+ ✅ empty Immutable.Map as child of Array
+ ✅ non-empty Array as child of Immutable.Map
+ ✅ non-empty Object as child of Immutable.List
+indent option
+ ✅ default implicit: 2 spaces
+ ✅ default explicit: 2 spaces
+ ✅ non-default: 0 spaces
+ ✅ non-default: 4 spaces
+maxDepth option
+ ✅ Immutable.List as child of Object
+ ✅ Immutable.Map as child of Array
+ ✅ Immutable.Seq as child of Immutable.Map
+ ✅ Immutable.Map as descendants in immutable collection
+Immutable.Seq
+ ✅ supports an empty sequence from array {min: true}
+ ✅ supports an empty sequence from array {min: false}
+ ✅ supports a non-empty sequence from array {min: true}
+ ✅ supports a non-empty sequence from array {min: false}
+ ✅ supports a non-empty sequence from arguments
+ ✅ supports an empty sequence from object {min: true}
+ ✅ supports an empty sequence from object {min: false}
+ ✅ supports a non-empty sequence from object {min: true}
+ ✅ supports a non-empty sequence from object {min: false}
+ ✅ supports a sequence of entries from Immutable.Map
+ ✅ supports a sequence of values from ECMAScript Set
+ ✅ supports a sequence of values from Immutable.List
+ ✅ supports a sequence of values from Immutable.Set
+ ✅ supports a sequence of values from Immutable.Stack
+Immutable.Seq lazy entries
+ ✅ from object properties
+ ✅ from Immutable.Map entries
+Immutable.Seq lazy values
+ ✅ from Immutable.Range
+ ✅ from iterator
+ ✅ from array items
+ ✅ from Immutable.List values
+ ✅ from ECMAScript Set values
+```
+### ✅ packages/pretty-format/src/__tests__/prettyFormat.test.ts
+```
+prettyFormat()
+ ✅ prints empty arguments
+ ✅ prints arguments
+ ✅ prints an empty array
+ ✅ prints an array with items
+ ✅ prints a empty typed array
+ ✅ prints a typed array with items
+ ✅ prints an array buffer
+ ✅ prints a nested array
+ ✅ prints true
+ ✅ prints false
+ ✅ prints an error
+ ✅ prints a typed error with a message
+ ✅ prints a function constructor
+ ✅ prints an anonymous callback function
+ ✅ prints an anonymous assigned function
+ ✅ prints a named function
+ ✅ prints a named generator function
+ ✅ can customize function names
+ ✅ prints Infinity
+ ✅ prints -Infinity
+ ✅ prints an empty map
+ ✅ prints a map with values
+ ✅ prints a map with non-string keys
+ ✅ prints NaN
+ ✅ prints null
+ ✅ prints a positive number
+ ✅ prints a negative number
+ ✅ prints zero
+ ✅ prints negative zero
+ ✅ prints a positive bigint
+ ✅ prints a negative bigint
+ ✅ prints zero bigint
+ ✅ prints negative zero bigint
+ ✅ prints a date
+ ✅ prints an invalid date
+ ✅ prints an empty object
+ ✅ prints an object with properties
+ ✅ prints an object with properties and symbols
+ ✅ prints an object without non-enumerable properties which have string key
+ ✅ prints an object without non-enumerable properties which have symbol key
+ ✅ prints an object with sorted properties
+ ✅ prints regular expressions from constructors
+ ✅ prints regular expressions from literals
+ ✅ prints regular expressions {escapeRegex: false}
+ ✅ prints regular expressions {escapeRegex: true}
+ ✅ escapes regular expressions nested inside object
+ ✅ prints an empty set
+ ✅ prints a set with values
+ ✅ prints a string
+ ✅ prints and escape a string
+ ✅ doesn't escape string with {excapeString: false}
+ ✅ prints a string with escapes
+ ✅ prints a multiline string
+ ✅ prints a multiline string as value of object property
+ ✅ prints a symbol
+ ✅ prints undefined
+ ✅ prints a WeakMap
+ ✅ prints a WeakSet
+ ✅ prints deeply nested objects
+ ✅ prints circular references
+ ✅ prints parallel references
+ ✅ can customize the max depth
+ ✅ throws on invalid options
+ ✅ supports plugins
+ ✅ supports plugins that return empty string
+ ✅ throws if plugin does not return a string
+ ✅ throws PrettyFormatPluginError if test throws an error
+ ✅ throws PrettyFormatPluginError if print throws an error
+ ✅ throws PrettyFormatPluginError if serialize throws an error
+ ✅ supports plugins with deeply nested arrays (#24)
+ ✅ should call plugins on nested basic values
+ ✅ prints objects with no constructor
+ ✅ prints identity-obj-proxy with string constructor
+ ✅ calls toJSON and prints its return value
+ ✅ calls toJSON and prints an internal representation.
+ ✅ calls toJSON only on functions
+ ✅ does not call toJSON recursively
+ ✅ calls toJSON on Sets
+ ✅ disables toJSON calls through options
+prettyFormat() indent option
+ ✅ default implicit: 2 spaces
+ ✅ default explicit: 2 spaces
+ ✅ non-default: 0 spaces
+ ✅ non-default: 4 spaces
+prettyFormat() min
+ ✅ prints some basic values in min mode
+ ✅ prints some complex values in min mode
+ ✅ does not allow indent !== 0 in min mode
+```
+### ✅ packages/pretty-format/src/__tests__/react.test.tsx
+```
+✅ supports a single element with no props or children
+✅ supports a single element with non-empty string child
+✅ supports a single element with empty string child
+✅ supports a single element with non-zero number child
+✅ supports a single element with zero number child
+✅ supports a single element with mixed children
+✅ supports props with strings
+✅ supports props with multiline strings
+✅ supports props with numbers
+✅ supports a single element with a function prop
+✅ supports a single element with a object prop
+✅ supports an element with and object prop and children
+✅ supports an element with complex props and mixed children
+✅ escapes children properly
+✅ supports everything all together
+✅ sorts props in nested components
+✅ supports a single element with React elements as props
+✅ supports a single element with React elements with props
+✅ supports a single element with custom React elements with props
+✅ supports a single element with custom React elements with props (using displayName)
+✅ supports a single element with custom React elements with props (using anonymous function)
+✅ supports a single element with custom React elements with a child
+✅ supports undefined element type
+✅ supports a fragment with no children
+✅ supports a fragment with string child
+✅ supports a fragment with element child
+✅ supports suspense
+✅ supports a single element with React elements with a child
+✅ supports a single element with React elements with children
+✅ supports a single element with React elements with array children
+✅ supports array of elements
+✅ min option
+✅ ReactElement plugin highlights syntax
+✅ ReactTestComponent plugin highlights syntax
+✅ throws if theme option is null
+✅ throws if theme option is not of type "object"
+✅ throws if theme option has value that is undefined in ansi-styles
+✅ ReactElement plugin highlights syntax with color from theme option
+✅ ReactTestComponent plugin highlights syntax with color from theme option
+✅ supports forwardRef with a child
+✅ supports context Provider with a child
+✅ supports context Consumer with a child
+✅ ReactElement removes undefined props
+✅ ReactTestComponent removes undefined props
+test object for subset match
+ ✅ undefined props
+ ✅ undefined children
+indent option
+ ✅ default implicit: 2 spaces
+ ✅ default explicit: 2 spaces
+ ✅ non-default: 0 spaces
+ ✅ non-default: 4 spaces
+maxDepth option
+ ✅ elements
+ ✅ array of elements
+React.memo without displayName
+ ✅ renders the component name
+React.memo with displayName
+ ✅ renders the displayName of component before memoizing
+ ✅ renders the displayName of memoized component
+```
+### ✅ packages/pretty-format/src/__tests__/ReactElement.test.ts
+```
+ReactElement Plugin
+ ✅ serializes forwardRef without displayName
+ ✅ serializes forwardRef with displayName
+ ✅ serializes forwardRef component with displayName
```
\ No newline at end of file
diff --git a/__tests__/dart-json.test.ts b/__tests__/dart-json.test.ts
index a2b959c..12b664b 100644
--- a/__tests__/dart-json.test.ts
+++ b/__tests__/dart-json.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {DartJsonParser} from '../src/parsers/dart-json/dart-json-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('dart-json tests', () => {
@@ -66,4 +66,66 @@ describe('dart-json tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dart-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DartJsonParser(opts, 'dart')
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dart-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DartJsonParser(opts, 'dart')
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dart-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DartJsonParser(opts, 'dart')
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/__tests__/dotnet-nunit.test.ts b/__tests__/dotnet-nunit.test.ts
index e0b4778..6903c5a 100644
--- a/__tests__/dotnet-nunit.test.ts
+++ b/__tests__/dotnet-nunit.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {DotnetNunitParser} from '../src/parsers/dotnet-nunit/dotnet-nunit-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('dotnet-nunit tests', () => {
@@ -26,4 +26,66 @@ describe('dotnet-nunit tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-nunit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DotnetNunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-nunit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DotnetNunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-nunit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DotnetNunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/__tests__/dotnet-trx.test.ts b/__tests__/dotnet-trx.test.ts
index 498abcb..e7f83ee 100644
--- a/__tests__/dotnet-trx.test.ts
+++ b/__tests__/dotnet-trx.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {DotnetTrxParser} from '../src/parsers/dotnet-trx/dotnet-trx-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('dotnet-trx tests', () => {
@@ -99,4 +99,66 @@ describe('dotnet-trx tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-trx.trx')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DotnetTrxParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-trx.trx')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DotnetTrxParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-trx.trx')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new DotnetTrxParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/__tests__/java-junit.test.ts b/__tests__/java-junit.test.ts
index b70fd21..83a7dec 100644
--- a/__tests__/java-junit.test.ts
+++ b/__tests__/java-junit.test.ts
@@ -3,20 +3,10 @@ import * as path from 'path'
import {JavaJunitParser} from '../src/parsers/java-junit/java-junit-parser'
import {ParseOptions} from '../src/test-parser'
-import {ReportOptions, getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('java-junit tests', () => {
- const reportOpts: ReportOptions = {
- listSuites: 'all',
- listTests: 'all',
- baseUrl: '',
- onlySummary: false,
- useActionsSummary: true,
- badgeTitle: 'tests',
- reportTitle: ''
- }
-
it('produces empty test run result when there are no test cases', async () => {
const fixturePath = path.join(__dirname, 'fixtures', 'empty', 'java-junit.xml')
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
@@ -136,7 +126,7 @@ describe('java-junit tests', () => {
const parser = new JavaJunitParser(opts)
const result = await parser.parse(filePath, fileContent)
const report = getReport([result], {
- ...reportOpts,
+ ...DEFAULT_OPTIONS,
reportTitle
})
// Report should have the badge as the first line
@@ -155,16 +145,10 @@ describe('java-junit tests', () => {
const parser = new JavaJunitParser(opts)
const result = await parser.parse(filePath, fileContent)
- const reportOpts: ReportOptions = {
- listSuites: 'all',
- listTests: 'all',
- baseUrl: '',
- onlySummary: false,
- useActionsSummary: true,
- badgeTitle: 'tests',
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
reportTitle: 'My Custom Title'
- }
- const report = getReport([result], reportOpts)
+ })
// Report should have the title as the first line
expect(report).toMatch(/^# My Custom Title\n/)
})
diff --git a/__tests__/jest-junit.test.ts b/__tests__/jest-junit.test.ts
index d52c047..f4b8335 100644
--- a/__tests__/jest-junit.test.ts
+++ b/__tests__/jest-junit.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {JestJunitParser} from '../src/parsers/jest-junit/jest-junit-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('jest-junit tests', () => {
@@ -145,4 +145,66 @@ describe('jest-junit tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'jest-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new JestJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'jest-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new JestJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'jest-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new JestJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/__tests__/mocha-json.test.ts b/__tests__/mocha-json.test.ts
index 05393fa..1272962 100644
--- a/__tests__/mocha-json.test.ts
+++ b/__tests__/mocha-json.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {MochaJsonParser} from '../src/parsers/mocha-json/mocha-json-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('mocha-json tests', () => {
@@ -64,4 +64,66 @@ describe('mocha-json tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'mocha-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new MochaJsonParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'mocha-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new MochaJsonParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'mocha-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new MochaJsonParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/__tests__/rspec-json.test.ts b/__tests__/rspec-json.test.ts
index f77475a..787420b 100644
--- a/__tests__/rspec-json.test.ts
+++ b/__tests__/rspec-json.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {RspecJsonParser} from '../src/parsers/rspec-json/rspec-json-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('rspec-json tests', () => {
@@ -42,4 +42,66 @@ describe('rspec-json tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'rspec-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new RspecJsonParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'rspec-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new RspecJsonParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'rspec-json.json')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new RspecJsonParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/__tests__/swift-xunit.test.ts b/__tests__/swift-xunit.test.ts
index 474c868..9f063ee 100644
--- a/__tests__/swift-xunit.test.ts
+++ b/__tests__/swift-xunit.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {SwiftXunitParser} from '../src/parsers/swift-xunit/swift-xunit-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('swift-xunit tests', () => {
@@ -27,4 +27,66 @@ describe('swift-xunit tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report)
})
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'swift-xunit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new SwiftXunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'swift-xunit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new SwiftXunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'swift-xunit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new SwiftXunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
})
diff --git a/dist/index.js b/dist/index.js
index 5a53d66..26cc77d 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1803,6 +1803,7 @@ var __importStar = (this && this.__importStar) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.DEFAULT_OPTIONS = void 0;
exports.getReport = getReport;
const core = __importStar(__nccwpck_require__(7484));
const markdown_utils_1 = __nccwpck_require__(5129);
@@ -1811,7 +1812,7 @@ const parse_utils_1 = __nccwpck_require__(9633);
const slugger_1 = __nccwpck_require__(9537);
const MAX_REPORT_LENGTH = 65535;
const MAX_ACTIONS_SUMMARY_LENGTH = 1048576;
-const defaultOptions = {
+exports.DEFAULT_OPTIONS = {
listSuites: 'all',
listTests: 'all',
baseUrl: '',
@@ -1820,7 +1821,7 @@ const defaultOptions = {
badgeTitle: 'tests',
reportTitle: ''
};
-function getReport(results, options = defaultOptions) {
+function getReport(results, options = exports.DEFAULT_OPTIONS) {
core.info('Generating check run summary');
applySort(results);
const opts = { ...options };
@@ -1841,7 +1842,7 @@ function getReport(results, options = defaultOptions) {
core.warning(`Test report summary exceeded limit of ${getMaxReportLength(options)} bytes and will be trimmed`);
return trimReport(lines, options);
}
-function getMaxReportLength(options = defaultOptions) {
+function getMaxReportLength(options = exports.DEFAULT_OPTIONS) {
return options.useActionsSummary ? MAX_ACTIONS_SUMMARY_LENGTH : MAX_REPORT_LENGTH;
}
function trimReport(lines, options) {
diff --git a/src/report/get-report.ts b/src/report/get-report.ts
index 1ed6656..a3385e9 100644
--- a/src/report/get-report.ts
+++ b/src/report/get-report.ts
@@ -18,7 +18,7 @@ export interface ReportOptions {
reportTitle: string
}
-const defaultOptions: ReportOptions = {
+export const DEFAULT_OPTIONS: ReportOptions = {
listSuites: 'all',
listTests: 'all',
baseUrl: '',
@@ -28,7 +28,7 @@ const defaultOptions: ReportOptions = {
reportTitle: ''
}
-export function getReport(results: TestRunResult[], options: ReportOptions = defaultOptions): string {
+export function getReport(results: TestRunResult[], options: ReportOptions = DEFAULT_OPTIONS): string {
core.info('Generating check run summary')
applySort(results)
@@ -55,7 +55,7 @@ export function getReport(results: TestRunResult[], options: ReportOptions = def
return trimReport(lines, options)
}
-function getMaxReportLength(options: ReportOptions = defaultOptions): number {
+function getMaxReportLength(options: ReportOptions = DEFAULT_OPTIONS): number {
return options.useActionsSummary ? MAX_ACTIONS_SUMMARY_LENGTH : MAX_REPORT_LENGTH
}