- Fix infinite loop when using
--watchwith--coverage. - Fixed
watchmanconfig option. - Fixed a bug in the jest-editor-support static analysis.
- Fixed eslint plugin warning.
- Fixed missing space in front of "Did you mean β¦?".
- Fixed path printing in the reporter on Windows.
- Breaking Change: Added a version for snapshots.
- Breaking Change: Removed the
mocksPatternconfiguration option, it never worked correctly. - Breaking Change: Renamed
testPathDirstorootsto avoid confusion when configuring Jest. - Breaking Change: Updated printing of React elements to cause fewer changes when props change.
- Breaking Change: Updated snapshot format to properly escape data.
- Fixed --color to be recognized correctly again.
- Fixed
babel-plugin-jest-hoistto work properly with type annotations in tests. - Fixed behavior for console.log calls and fixed a memory leak (#2539).
- Fixed cache directory path for Jest to avoid ENAMETOOLONG errors.
- Fixed change events to be emitted in jest-haste-map's watch mode. This fixes issues with Jest's new watch mode and react-native-packager.
- Fixed cli arguments to be used when loading the config from file, they were previously ignored.
- Fixed Jest to load json files that include a BOM.
- Fixed Jest to throw errors instead of ignoring invalid cli options.
- Fixed mocking behavior for virtual modules.
- Fixed mocking behavior with transitive dependencies.
- Fixed support for asymmetric matchers in
toMatchObject. - Fixed test interruption and
--bailbehavior. - Fixed watch mode to clean up worker processes when a test run gets interrupted.
- Fixed whitespace to be highlighted in snapshots and assertion errors.
- Improved
babel-jestplugin: babel is loaded lazily, istanbul comments are only added when coverage is used. - Improved error for invalid transform config.
- Improved moduleNameMapper to not overwrite mocks when many patterns map to the same file.
- Improved printing of skipped tests in verbose mode.
- Improved resolution code in jest-resolve.
- Improved to only show patch marks in assertion errors when the comparison results in large objects.
- New
--collectCoverageFromcli argument. - New
--coverageDirectorycli argument. - New
expect.addSnapshotSerializerto add custom snapshot serializers for tests. - New
jest.spyOn. - New
testMatchconfiguration option that accepts glob patterns. - New eslint-plugin-jest with no-disabled-tests, no-focuses-tests and no-identical-title rules and default configuration and globals.
- New expect.stringContaining asymmetric matcher.
- New feature to make manual mocks with nested folders work. For example
__mocks__/react-native/Library/Text.jswill now work as expected. - New feature to re-run tests through the notification when using
--notify. - New jest-phabricator package to integrate Jest code coverage in phabriactor.
- New jest-validate package to improve configuration errors, help with suggestions of correct configuration and to be adopted in other libraries.
- New pretty-printing for asymmetric matchers.
- New RSS feed for Jest's blog.
- New typeahead to filter cached test names added to watch mode.
- New typeahead to filter file names added to watch mode (#2324).
- New way to provide a reducer to extract haste module ids.
- New website, new documentation, new color scheme and new homepage.
- Rewritten watch mode for instant feedback, better code quality and to build new features on top of it (#2362).
- Fixed console.log and fake timer behavior in node 7.3.
- Updated istanbul-api.
- Updated jest-diff equality error message.
- Disabled arrow keys when entering a pattern in watch mode to prevent broken behavior. Will be improved in a future release.
- Moved asymmetric matchers and equality functionality from Jasmine into jest-matchers.
- Removed jasmine and jest-snapshot dependency from jest-matchers.
- Removed unused global
contextvariable. - Show a better error message if the config is invalid JSON.
- Highlight trailing whitespace in assertion diffs and snapshots.
- Jest now uses micromatch instead of minimatch.
- Added
-has alias for--help.
See https://facebook.github.io/jest/blog/2016/12/15/2016-in-jest.html
- The testResultsProcessor function is now required to return the modified results.
- Removed
pitandmockImpl. UseitormockImplementationinstead. - Fixed re-running tests when
--bailis used together with--watch. pretty-formatis now merged into Jest.require('v8')now works properly in a test context.- Jest now clears the entire scrollback in watch mode.
- Added
expect.any,expect.anything,expect.objectContaining,expect.arrayContaining,expect.stringMatching. - Properly resolve
snapshotSerializers,setupFiles,transform,testRunnerandtestResultsProcessorinstead of usingpath.resolve. --testResultsProcessoris now exposed through the cli.- Renamed
--jsonOutputFileto--outputFile. - Added
jest-editor-supportfor vscode and Nuclide integration. - Fixed
test.concurrentunhandled promise rejections. - The Jest website is now auto-deployed when merging into master.
- Updated
testRegexto includetest.jsandspec.jsfiles. - Fixes for
babel-plugin-jest-hoistwhen usingjest.mockwith three arguments. - The
JSONglobal injest-environment-nodenow comes from the vm context instead of the parent context. - Jest does not print stack traces from babel any longer.
- Fake timers are reset when
FakeTimers.useTimers()is called. - Usage of Jest in watch mode can be hidden through
JEST_HIDE_USAGE. - Added
expect.assertions(number)which will ensure that a specified amount of assertions is made in one test. - Added
.toMatchSnapshot(?string)feature to give snapshots a name. - Escape regex in snapshots.
jest-react-nativewas deprecated and now forwardsreact-native.- Added
.toMatchObjectmatcher. - Further improve printing of large objects.
- Fixed
NaN% Failedin the OS notification when using--notify. - The first test run without cached timings will now use separate processes instead of running in band.
- Added
.toHavePropertymatcher. - Fixed
Map/Setcomparisons. test.concurrentnow works with--testNamePattern.
- Improved file-watching feature in jest-haste-map.
- Added
.toHaveLengthmatcher. - Improved
.toContainmatcher.
- Fixed performance regression in module resolution.
- Fixed pretty printing of big objects.
- Fixed resolution of
.native.jsfiles in react-native projects.
- Added
expect.extend. - Properly resolve modules with platform extensions on react-native.
- Added support for custom snapshots serializers.
- Updated to Jasmine 2.5.2.
- Big diffs are now collapsed by default in snapshots and assertions. Added
--expand(or-e) to show the full diff. - Replaced
scriptPreprocessorwith the newtransformoption. - Added
jest.resetAllMockswhich replacesjest.clearAllMocks. - Fixes for react-native preset.
- Fixes for global built in objects in
jest-environment-node. - Create mock objects in the vm context instead of the parent context.
.babelrcis now part of the transform cache key inbabel-jest.- Fixes for docblock parsing with haste modules.
- Exit with the proper code when the coverage threshold is not reached.
- Implemented file watching in
jest-haste-map. --jsonnow includes information about individual tests inside a file.
- Symbols are now properly mocked when using
jest-mock. toHaveBeenCalledWith()works without arguments again.- Newlines in snapshots are now normalized across different operating systems.
- Fix infinite loop.
- Previously failed tests are now always run first.
- A new concurrent reporter shows currently running tests, a test summary, a progress bar and estimated remaining time if possible.
- Improved CLI colors.
jest <pattern>is now case-insensitive.- Added
it.only,it.skip,test.only,test.skipandxtest. - Added
--testNamePattern=patternor-t <pattern>to run individual tests in test files. - Jest now warns for duplicate mock files.
- Pressing
a,o,p,qorenterwhile tests are running in the watch mode, the test run will be interrupted. --bailnow works together with--watch.- Added
test.concurrentfor concurrent async tests. - Jest now automatically considers files and tests with the
.jsxextension. - Added
jest.clearAllMocksto clear all mocks manually. - Rewrote Jest's snapshot implementation.
jest-snapshotcan now be more easily integrated into other test runners and used in other projects. - This requires most snapshots to be updated when upgrading Jest.
- Objects and Arrays in snapshots are now printed with a trailing comma.
- Function names are not printed in snapshots any longer to reduce issues with code coverage instrumentation and different Node versions.
- Snapshots are now sorted using natural sort order.
- Snapshots are not marked as obsolete any longer when using
fitor when an error is thrown in a test. - Finished migration of Jasmine matchers to the new Jest matchers.
- Pretty print
toHaveBeenLastCalledWith,toHaveBeenCalledWith,lastCalledWithandtoBeCalledWithfailure messages. - Added
toBeInstanceOfmatcher. - Added
toContainEqualmatcher. - Added
toThrowErrorMatchingSnapshotmatcher. - Improved
moduleNameMapperresolution. - Module registry fixes.
- Fixed invocation of the
setupTestFrameworkScriptFilescript to make it easier to use chai together with Jest. - Removed react-native special case in Jest's configuration.
- Added
--findRelatedTests <fileA> <fileB>cli option to run tests related to the specified files. - Added
jest.deepUnmocktobabel-plugin-jest-hoist. - Added
jest.runTimersToTimewhich is useful together with fake timers. - Improved automated mocks for ES modules compiled with babel.
- Fixed issues with test paths that include hyphens on Windows.
- Fixed
testEnvironmentresolution. - Updated watch file name pattern input.
- Pretty printer updates for React and global window objects.
jest-runtimeoverwrites automocking from configuration files.- Improvements for watch mode on Windows.
- afterAll/afterEach/beforeAll/beforeEach can now return a Promise and be used together with async/await.
- Improved stack trace printing on Node 4.
- Fixed Jest with npm2 when using coverage.
- Updated toThrow and toThrowMatchers and aliased them to the same matcher.
- Improvements for watch mode.
- Fixed Symbol reassignment in tests would break Jest's matchers.
- Fixed
--bailoption.
- See https://facebook.github.io/jest/blog/2016/09/01/jest-15.html
- Jest by default now also recognizes files ending in
.spec.jsand.test.jsas test files. - Completely replaced most Jasmine matchers with new Jest matchers.
- Rewrote Jest's CLI output for test failures and summaries.
- Added
--envoption to override the default test environment. - Disabled automocking, fake timers and resetting the module registry by default.
- Added
--watchAll, made--watchinteractive and added the ability to update snapshots and select test patterns in watch mode. - Jest uses verbose mode when running a single test file.
- Console messages are now buffered and printed along with the test results.
- Fix
testEnvironmentresolution to preferjest-environment-{name}instead of{name}only. This prevents a module colision when usingjsdomas test environment. moduleNameMappernow uses a resolution algorithm.- Improved performance for small test runs.
- Improved API documentation.
- Jest now works properly with directories that have special characters in them.
- Improvements to Jest's own test infra by merging integration and unit tests. Code coverage is now collected for Jest.
- Added
global.globalto the node environment. - Fixed babel-jest-plugin-hoist issues with functions called
mock. - Improved jest-react-native preset with mocks for ListView, TextInput, ActivityIndicator and ScrollView.
- Added
collectCoverageFromto collect code coverage from untested files. - Rewritten code coverage support.
- Changed Jest's default cache directory.
- Fixed
jest-react-nativefor react 15.3.0. - Updated react and react-native example to use
react-test-renderer. - Started to refactor code coverage.
babel-jestbugfix.
babel-jestcan now be used to compose a transformer.- Updated snapshot instructions to run
jest -uornpm test -- -u. - Fixed
configcli option to enable JSON objects as configuration. - Updated printing of preset path in the CLI.
- Official release of snapshot tests.
- Started to replace Jasmine matchers with Jest matchers:
toBe,toBeFalsy,toBeTruthy,toBeNaN,toBe{Greater,Less}Than{,OrEqual},toBeNull,toBeDefined,toBeUndefined,toContain,toMatch,toBeCloseTowere rewritten. - Rewrite of Jest's reporters.
- Experimental react-native support.
- Removed Jasmine 1 support from Jest.
- Transform caching improvements.
- Snapshot bugfixes.
- Timer bugfixes.
- Added
testglobal function as an alias forit. - Added
coveragePathIgnorePatternsto the config. - Fixed printing of "JSX objects" in snapshots.
- Fixes for
--verboseoption and top levelitcalls. - Extended the node environment with more globals.
- testcheck now needs to be required explicitly through
require('jest-check'). - Added
jest.deepUnmock. - Fail test suite if it does not contain any tests.
- Added duration of individual tests in verbose mode.
- Added a
browserconfig option to properly resolve npm packages with a browser field inpackage.jsonif you are writing tests for client side apps - Added
jest-repl. - Split up
jest-cliintojest-runtimeandjest-config. - Added a notification plugin that shows a test run notification
using
--notify. - Refactored
TestRunnerintoSearchSourceand improved the "no tests found" message. - Added
jest.isMockFunction(jest.fn())to test for mock functions. - Improved test reporter printing and added a test failure summary when
running many tests.
- Add support for property testing via testcheck-js.
- Added a webpack tutorial.
- Added support for virtual mocks through
jest.mock('Module', implementation, {virtual: true}). - Added snapshot functionality through
toMatchSnapshot(). - Redesigned website.
- Windows stability fixes.
- Mock module resolution fixes.
- Remove test files from code coverage.
- Jest is now also published in the
jestpackage on npm. - Added
testRegexto match for tests outside of specific folders. Deprecated bothtestDirectoryNameandtestFileExtensions. itcan now return a Promise for async testing.pitwas deprecated.- Added
jest-resolveas a standalone package based on the Facebook module resolution algorithm. - Added
jest-changed-filesas a standalone package to detect changed files in a git or hg repo. - Added
--setupTestFrameworkFileto cli. - Added support for coverage thresholds. See http://facebook.github.io/jest/docs/api.html#coveragethreshold-object.
- Updated to jsdom 9.0.
- Updated and improved stack trace reporting.
- Added
module.filenameand removed the invalidmodule.__filenamefield. - Further improved the
lastCalledWithandtoBeCalledWithcustom matchers. They now print the most recent calls. - Fixed jest-haste-map on continuous integration systems.
- Fixes for hg/git integration.
- Added a re-try for the watchman crawler.
- Bug fixes when running a single test file and for scoped package names.
- Added custom equality matchers for Map/Set and iterables.
- Bug fixes
- Reimplemented
node-hasteasjest-haste-map: jestjs#896 - Fixes for the upcoming release of nodejs 6.
- Removed global mock caching which caused negative side-effects on test runs.
- Updated Jasmine from 2.3.4 to 2.4.1.
- Fixed our Jasmine fork to work better with
Object.create(null). - Added a
--silentflag to silence console messages during a test run. - Run a test file directly if a path is passed as an argument to Jest.
- Added support for the undocumented nodejs feature
module.paths.
- Fixed
jest -oerror when Mercurial isn't installed on the system - Fixed Jasmine failure message when expected values were mutated after tests.
- Added support for Mercurial repositories when using
jest -o - Added
mockImplementationOnceAPI tojest.fn().
- New implementation of node-haste and rewrite of internal module loading and resolution. Fixed both startup and runtime performance. #599
- Jasmine 2 is now the default test runner. To keep using Jasmine 1, put
testRunner: "jasmine1"into your configuration. - Added
jest-util,jest-mock,jest-jasmine1,jest-jasmine2,jest-environment-node,jest-environment-jsdompackages. - Added
babel-jest-presetandbabel-jestas packages.babel-jestis now being auto-detected. - Added
babel-plugin-jest-hoistwhich hoistsjest.unmock,jest.mockand the newjest.enableAutomockandjest.disableAutomockAPI. - Improved
babel-jestintegration andreact-nativetesting. - Improved code coverage reporting when using
babel-jest. - Added the
jest.mock('moduleName', moduleFactory)feature.jest.mocknow gets hoisted by default.jest.doMockwas added to explicitly mock a module without the hoisting feature ofbabel-jest. - Updated jsdom to 8.3.x.
- Improved responsiveness of the system while using
--watch. - Clear the terminal window when using
--watch. - By default,
--watchwill now only runs tests related to changed files.--watch=allcan be used to run all tests on file system changes. - Debounce
--watchre-runs to not trigger test runs during a branch switch in version control. - Added
jest.fn()andjest.fn(implementation)as convenient shorcuts forjest.genMockFunction()andjest.genMockFunction().mockImplementation(). - Added an
automockoption to turn off automocking globally. - Added a "no tests found" message if no tests can be found.
- Jest sets
process.NODE_ENVtotestunless otherwise specified. - Fixed
moduleNameMapperconfig option when used with paths. - Fixed an error with Jasmine 2 and tests that
throw 'string errors'. - Fixed issues with unmocking symlinked module names.
- Fixed mocking of boolean values.
- Fixed mocking of fields that start with an underscore ("private fields").
- Fixed unmocking behavior with npm3.
- Fixed and improved
--onlyChangedoption. - Fixed support for running Jest as a git submodule.
- Improved verbose logger output
- Fixed test runtime error reporting and stack traces.
- Improved
toBeCalledJasmine 2 custom matcher messages. - Improved error reporting when a syntax error occurs.
- Renamed HasteModuleLoader to Runtime.
- Jest now properly reports pending tests disabled with
xitandxdescribe. - Removed
preprocessCachingDisabledconfig option. - Added a
testEnvironmentoption to customize the sandbox environment. - Added support for
@scoped/namenpm packages. - Added an integration test runner for Jest that runs all tests for examples and packages.
- Performance improvements.
- jest now uses
chalkinstead of its own colors implementation.
--bailnow reports with the proper error code.- Fixed loading of the setup file when using jasmine2.
- Updated jsdom to 7.2.0.
- Added optional support for jasmine2 through the
testRunnerconfig option. - Fixed mocking support for Map, WeakMap and Set.
nodewas added to the defaults inmoduleFileExtensions.- Updated the list of node core modules that are properly being recognized by the module loader.
- Correctly map
process.oninto jsdom environments, fixes a bug introduced in jest 0.7.0.
- Fixed a memory leak with test contexts. Jest now properly cleans up
test environments after each test. Added
--logHeapUsageto log memory usage after each test. Note: this is option is meant for debugging memory leaks and might significantly slow down your test run. - Removed
mock-modules,node-hasteandmocksvirtual modules. This is a breaking change of undocumented public API. Usage of this API can safely be automatically updated through an automated codemod: - Example: http://astexplorer.net/#/zrybZ6UvRA
- Codemod: https://github.com/cpojer/js-codemod/blob/master/transforms/jest-update.js
- jscodeshift: https://github.com/facebook/jscodeshift
- Removed
navigator.onLineandmockSetReadOnlyPropertyfrom the global jsdom environment. Usewindow.navigator.onLine = true;in your test setup andObject.definePropertyinstead.
- Updated jsdom to 7.0.2.
- Use the current working directory as root when passing a jest config from the command line.
- Updated the React examples and getting started guide
- Modules now receive a
module.parentfield so unmocked modules don't assume they are run directly any longer.
- jest now reports the number of tests that were run instead of the number of test files.
- Added a
--jsonoption to print test results as JSON. - Changed the preprocessor API. A preprocessor now receives the script, file and config. The cache key function receives the script, file and stringified config to be able to create consistent hashes.
- Removed node-worker-pool in favor of node-worker-farm (#540).
toEqualnow also checks the internal class name of an object. This fixes invalid tests likeexpect([]).toEqual({})which were previously passing.- Added the option to provide map modules to stub modules by providing the
moduleNameMapperconfig option. - Allow to specify a custom
testRunnerin the configuration (#531). - Added a
--no-cacheoption to make it easier to debug preprocessor scripts. - Fix code coverage on windows (#499).
- Cache test run performance and run slowest tests first to maximize worker utilization
- Update to jsdom 6.5.0
- Improve failure stack traces.
- Fix syntax error reporting.
- Add
--watchoption (#472).
- Fixed a bug with syntax errors in test files (#487).
- Fixed chmod error for preprocess-cache (#491).
- Support for the upcoming node 4.0 release (#490, #489).
- Upgraded node-worker-pool to 3.0.0, use the native
Promiseimplementation. testURLcan be used to set the location of the jsdom environment.- Updated all of jest's dependencies, now using jsdom 6.3.
- jest now uses the native
Promiseimplementation. - Fixed a bug when passed an empty
testPathIgnorePatterns. - Moved preprocessor cache into the haste cache directory.
- Added
--noStackTraceoption to disable stack traces. - Jest now only works with iojs v2 and up. If you are still using node we recommend upgrading to iojs or keep using jest 0.4.0.
- Upgraded to jsdom 6.1.0 and removed all the custom jsdom overwrites.
- See commit history for changes in previous versions of jest.