Socket
Socket
Sign inDemoInstall

jest

Package Overview
Dependencies
304
Maintainers
7
Versions
352
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    jest

Delightful JavaScript Testing.


Version published
Weekly downloads
19M
decreased by-17.1%
Maintainers
7
Install size
16.7 MB
Created
Weekly downloads
 

Package description

What is jest?

Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It works with projects using: Babel, TypeScript, Node, React, Angular, Vue, and more. It's designed to ensure correctness of any JavaScript codebase. It allows you to write tests with an approachable, familiar, and feature-rich API that gives you results quickly.

What are jest's main functionalities?

Unit Testing

Jest allows you to write unit tests for your JavaScript functions. In this example, a simple test is written to check if the addition of 1 and 2 equals 3.

test('adds 1 + 2 to equal 3', () => {
  expect(1 + 2).toBe(3);
});

Mocking

Jest provides a powerful mocking library that lets you mock objects, functions, and modules. In this example, an HTTP request is mocked to test the behavior of a function that fetches user data.

jest.mock('../api');

test('should fetch users', () => {
  const users = [{name: 'Bob'}];
  const resp = {data: users};
  axios.get.mockResolvedValue(resp);

  return Users.all().then(data => expect(data).toEqual(users));
});

Snapshot Testing

Snapshot testing enables you to test your UI or any serializable value to ensure it does not change unexpectedly. This example demonstrates testing an object against a snapshot, with some fields expected to match specific types rather than values.

test('will check the matchers and pass', () => {
  const user = {
    createdAt: new Date(),
    id: Math.floor(Math.random() * 20),
    name: 'LeBron James'
  };

  expect(user).toMatchSnapshot({
    createdAt: expect.any(Date),
    id: expect.any(Number)
  });
});

Asynchronous Testing

Jest supports testing of asynchronous code. In this example, an asynchronous function `fetchData` is tested to ensure it resolves with the expected value 'peanut butter'.

test('the data is peanut butter', async () => {
  await expect(fetchData()).resolves.toBe('peanut butter');
});

Other packages similar to jest

Changelog

Source

28.0.0

Features

  • [babel-jest] Export createTransformer function (#12399)
  • [expect] Expose AsymmetricMatchers, MatcherFunction and MatcherFunctionWithState interfaces (#12363, #12376)
  • [jest-circus] Support error logging before retry (#12201)
  • [jest-circus, jest-jasmine2] Allowed classes and functions as describe and it/test names (#12484)
  • [jest-cli, jest-config] [BREAKING] Remove testURL config, use testEnvironmentOptions.url instead (#10797)
  • [jest-cli, jest-core] Add --shard parameter for distributed parallel test execution (#12546)
  • [jest-cli] [BREAKING] Remove undocumented --timers option (#12572)
  • [jest-config] [BREAKING] Stop shipping jest-environment-jsdom by default (#12354)
  • [jest-config] [BREAKING] Stop shipping jest-jasmine2 by default (#12355)
  • [jest-config, @jest/types] Add ci to GlobalConfig (#12378)
  • [jest-config] [BREAKING] Rename moduleLoader to runtime (#10817)
  • [jest-config] [BREAKING] Rename extraGlobals to sandboxInjectedGlobals (#10817)
  • [jest-config] [BREAKING] Throw an error instead of showing a warning if multiple configs are used (#12510)
  • [jest-config] [BREAKING] Do not normalize long deprecated configuration options preprocessorIgnorePatterns, scriptPreprocessor, setupTestFrameworkScriptFile and testPathDirs (#12701)
  • [jest-cli, jest-core] Add --ignoreProjects CLI argument to ignore test suites by project name (#12620)
  • [jest-core] Pass project config to globalSetup/globalTeardown function as second argument (#12440)
  • [jest-core] Stabilize test runners with event emitters (#12641)
  • [jest-core, jest-watcher] [BREAKING] Move TestWatcher class to jest-watcher package (#12652)
  • [jest-core] Allow using Summary Reporter as stand-alone reporter (#12687)
  • [jest-environment-jsdom] [BREAKING] Upgrade jsdom to 19.0.0 (#12290)
  • [jest-environment-jsdom] [BREAKING] Add default browser condition to exportConditions for jsdom environment (#11924)
  • [jest-environment-jsdom] [BREAKING] Pass global config to Jest environment constructor for jsdom environment (#12461)
  • [jest-environment-jsdom] [BREAKING] Second argument context to constructor is mandatory (#12469)
  • [jest-environment-node] [BREAKING] Add default node and node-addon conditions to exportConditions for node environment (#11924)
  • [jest-environment-node] [BREAKING] Pass global config to Jest environment constructor for node environment (#12461)
  • [jest-environment-node] [BREAKING] Second argument context to constructor is mandatory (#12469)
  • [jest-environment-node] Add all available globals to test globals, not just explicit ones (#12642, #12696)
  • [@jest/expect] New module which extends expect with jest-snapshot matchers (#12404, #12410, #12418)
  • [@jest/expect-utils] New module exporting utils for expect (#12323)
  • [@jest/fake-timers] [BREAKING] Rename timers configuration option to fakeTimers (#12572)
  • [@jest/fake-timers] [BREAKING] Allow jest.useFakeTimers() and projectConfig.fakeTimers to take an options bag (#12572)
  • [jest-haste-map] [BREAKING] HasteMap.create now returns a promise (#12008)
  • [jest-haste-map] Add support for dependencyExtractor written in ESM (#12008)
  • [jest-mock] [BREAKING] Rename exported utility types ClassLike, FunctionLike, ConstructorLikeKeys, MethodLikeKeys, PropertyLikeKeys; remove exports of utility types ArgumentsOf, ArgsType, ConstructorArgumentsOf - TS builtin utility types ConstructorParameters and Parameters should be used instead (#12435, #12489)
  • [jest-mock] Improve isMockFunction to infer types of passed function (#12442)
  • [jest-mock] [BREAKING] Improve the usage of jest.fn generic type argument (#12489)
  • [jest-mock] Add support for auto-mocking async generator functions (#11080)
  • [jest-mock] Add contexts member to mock functions (#12601)
  • [@jest/reporters] Add GitHub Actions reporter (#11320, #12658)
  • [@jest/reporters] Pass reporterContext to custom reporter constructors as third argument (#12657)
  • [jest-resolve] [BREAKING] Add support for package.json exports (#11961, #12373)
  • [jest-resolve] Support package self-reference (#12682)
  • [jest-resolve, jest-runtime] Add support for data: URI import and mock (#12392)
  • [jest-resolve, jest-runtime] Add support for async resolver (#11540)
  • [jest-resolve] [BREAKING] Remove browser?: boolean from resolver options, conditions: ['browser'] should be used instead (#12707)
  • [jest-resolve] Expose JestResolver, AsyncResolver, SyncResolver, PackageFilter, PathFilter and PackageJSON types (#12707, (#12712)
  • [jest-runner] Allow setupFiles module to export an async function (#12042)
  • [jest-runner] Allow passing testEnvironmentOptions via docblocks (#12470)
  • [jest-runner] Expose CallbackTestRunner, EmittingTestRunner abstract classes and CallbackTestRunnerInterface, EmittingTestRunnerInterface to help typing third party runners (#12646, #12715)
  • [jest-runner] Lock version of source-map-support to 0.5.13 (#12720)
  • [jest-runtime] [BREAKING] Runtime.createHasteMap now returns a promise (#12008)
  • [jest-runtime] Calling jest.resetModules function will clear FS and transform cache (#12531)
  • [jest-runtime] [BREAKING] Remove Context type export, it must be imported from @jest/test-result (#12685)
  • [jest-runtime] Add import.meta.jest (#12698)
  • [@jest/schemas] New module for JSON schemas for Jest's config (#12384)
  • [@jest/source-map] Migrate from source-map to @jridgewell/trace-mapping (#12692)
  • [jest-transform] [BREAKING] Make it required for process() and processAsync() methods to always return structured data (#12638)
  • [jest-test-result] Add duration property to JSON test output (#12518)
  • [jest-watcher] [BREAKING] Make PatternPrompt class to take entityName as third constructor parameter instead of this._entityName (#12591)
  • [jest-worker] [BREAKING] Allow only absolute workerPath (#12343)
  • [jest-worker] [BREAKING] Default to advanced serialization when using child process workers (#10983)
  • [pretty-format] New maxWidth parameter (#12402)

Fixes

  • [*] Use sha256 instead of md5 as hashing algorithm for compatibility with FIPS systems (#12722)
  • [babel-jest] [BREAKING] Pass rootDir as root in Babel's options (#12689)
  • [expect] Move typings of .not, .rejects and .resolves modifiers outside of Matchers interface (#12346)
  • [expect] Throw useful error if expect.extend is called with invalid matchers (#12488)
  • [expect] Fix iterableEquality ignores other properties (#8359)
  • [expect] Fix print for the closeTo matcher (#12626)
  • [jest-changed-files] Improve changedFilesWithAncestor pattern for Mercurial SCM (#12322)
  • [jest-circus, @jest/types] Disallow undefined value in TestContext type (#12507)
  • [jest-config] Correctly detect CI environment and update snapshots accordingly (#12378)
  • [jest-config] Pass moduleTypes to ts-node to enforce CJS when transpiling (#12397)
  • [jest-config] [BREAKING] Add mjs and cjs to default moduleFileExtensions config (#12578)
  • [jest-config, jest-haste-map] Allow searching for tests in node_modules by exposing retainAllFiles (#11084)
  • [jest-core] [BREAKING] Exit with status 1 if no tests are found with --findRelatedTests flag (#12487)
  • [jest-core] Do not report unref-ed subprocesses as open handles (#12705)
  • [jest-each] %# is not replaced with index of the test case (#12517)
  • [jest-each] Fixes error message with incorrect count of missing arguments (#12464)
  • [jest-environment-jsdom] Make jsdom accessible to extending environments again (#12232)
  • [jest-environment-jsdom] Log JSDOM errors more cleanly (#12386)
  • [jest-environment-node] Add MessageChannel, MessageEvent to globals (#12553)
  • [jest-environment-node] Add structuredClone to globals (#12631)
  • [@jest/expect-utils] [BREAKING] Fix false positives when looking for undefined prop (#8923)
  • [jest-haste-map] Don't use partial results if file crawl errors (#12420)
  • [jest-haste-map] Make watchman existence check lazy+async (#12675)
  • [jest-jasmine2, jest-types] [BREAKING] Move all jasmine specific types from @jest/types to its own package (#12125)
  • [jest-jasmine2] Do not set duration to 0 for skipped tests (#12518)
  • [jest-matcher-utils] Pass maxWidth to pretty-format to avoid printing every element in arrays by default (#12402)
  • [jest-mock] Fix function overloads for spyOn to allow more correct type inference in complex object (#12442)
  • [jest-mock] Handle overridden Function.name property (#12674)
  • [@jest/reporters] Notifications generated by the --notify flag are no longer persistent in GNOME Shell. (#11733)
  • [@jest/reporters] Move missing icon file which is needed for NotifyReporter class. (#12593)
  • [@jest/reporters] Update v8-to-istanbul (#12697)
  • [jest-resolver] Call custom resolver with core node.js modules (#12654)
  • [jest-runner] Correctly resolve source-map-support (#12706)
  • [jest-worker] Fix Farm execution results memory leak (#12497)

Chore & Maintenance

  • [*] [BREAKING] Drop support for Node v10 and v15 and target first LTS 16.13.0 (#12220)
  • [*] [BREAKING] Drop support for typescript@3.8, minimum version is now 4.3 (#11142, #12648)
  • [*] Bundle all .d.ts files into a single index.d.ts per module (#12345)
  • [*] Use globalThis instead of global (#12447)
  • [babel-jest] [BREAKING] Only export createTransformer (#12407)
  • [docs] Add note about not mixing done() with Promises (#11077)
  • [docs, examples] Update React examples to match with the new React guidelines for code examples (#12217)
  • [docs] Add clarity for module factory hoisting limitations (#12453)
  • [docs] Add more information about how code transformers work (#12407)
  • [docs] Add upgrading guide (#12633)
  • [expect] [BREAKING] Remove support for importing build/utils (#12323)
  • [expect] [BREAKING] Migrate to ESM (#12344)
  • [expect] [BREAKING] Snapshot matcher types are moved to @jest/expect (#12404)
  • [jest-cli] Update yargs to v17 (#12357)
  • [jest-config] [BREAKING] Remove getTestEnvironment export (#12353)
  • [jest-config] [BREAKING] Rename config option name to id (#11981)
  • [jest-create-cache-key-function] Added README.md file with basic usage instructions (#12492)
  • [@jest/core] Use index.ts instead of jest.ts as main export (#12329)
  • [jest-environment-jsdom] [BREAKING] Migrate to ESM (#12340)
  • [jest-environment-node] [BREAKING] Migrate to ESM (#12340)
  • [jest-haste-map] Remove legacy isRegExpSupported (#12676)
  • [@jest/fake-timers] Update @sinonjs/fake_timers to v9 (#12357)
  • [jest-jasmine2, jest-runtime] [BREAKING] Use Symbol to pass jest.setTimeout value instead of jasmine specific logic (#12124)
  • [jest-phabricator] [BREAKING] Migrate to ESM (#12341)
  • [jest-resolve] [BREAKING] Make requireResolveFunction argument mandatory (#12353)
  • [jest-runner] [BREAKING] Remove some type exports from @jest/test-result (#12353)
  • [jest-runner] [BREAKING] Second argument to constructor (Context) is not optional (#12640)
  • [jest-serializer] [BREAKING] Deprecate package in favour of using v8 APIs directly (#12391)
  • [jest-snapshot] [BREAKING] Migrate to ESM (#12342)
  • [jest-transform] Update write-file-atomic to v4 (#12357)
  • [jest-types] [BREAKING] Remove Config.Glob and Config.Path (#12406)
  • [jest] Use index.ts instead of jest.ts as main export (#12329)

Performance

  • [jest-haste-map] [BREAKING] Default to node crawler over shelling out to find if watchman is not enabled (#12320)

Readme

Source

Jest

🃏 Delightful JavaScript Testing

  • 👩🏻‍💻 Developer Ready: Complete and ready to set-up JavaScript testing solution. Works out of the box for any React project.

  • 🏃🏽 Instant Feedback: Failed tests run first. Fast interactive mode can switch between running all tests or only test files related to changed files.

  • 📸 Snapshot Testing: Jest can capture snapshots of React trees or other serializable values to simplify UI testing.

Read More: https://jestjs.io/

Keywords

FAQs

Last updated on 25 Apr 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc