Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Allow mocking property value in tests #13496

Merged
merged 22 commits into from
Jan 4, 2023
Merged

Conversation

michal-kocarek
Copy link
Contributor

@michal-kocarek michal-kocarek commented Oct 23, 2022

Summary

PR is adding new feature that allows mocking values of object properties, that are not methods. Method is inspired to Sinon.js'es sandbox.replace(object, property, replacement);, but written from scratch.

Ref: https://sinonjs.org/releases/v14/sandbox/#sandboxreplaceobject-property-replacement

Method is now named replaceProperty(), is sitting next to the spyOn() method in jest-mock package. Ideally, it should be exposed in global Jest object as well.

replaceProperty() returns an object that exposes replaceValue() method and restore() methods. The restorer is called also in restoreAllMocks() cleanup method.

I tried to limit the usage as much as possible, so it could be potentially extended without breaking any compatibility. That is why it:

  1. forbids replacement of functions (one should use spyOn() for that)
  2. forbids replacement of getters and setters (just for sake of simplicity)

Fixes #13465.

The motivation for this feature is to allow simpler way of mocking property values, which, right now, have to be split into multiple places, which might introduce problems on multiple places:

Before:

let oldEnv;

beforeEach(() => {
  oldEnv = process.env;
  process.env = {
    FOO: 1,
  };
});

afterEach(() => {
  process.env = oldEnv;
});

After:

beforeEach(() => {
  jest.replaceProperty(process, 'env', {FOO: 1});
});

afterEach(() => {
  jest.restoreAllMocks();
});

After (advanced usage):

let processEnvMock;

beforeEach(() => {
  processEnvMock = jest.replaceProperty(process, 'env', {FOO: 1});
});

test('additional mock', () => {
  processEnvMock.replaceValue({FOO: 1, BAR: 2});
});

afterEach(() => {
  processEnvMock.restore();
});

Test plan

  • Unit tests have been added.
  • Examples have been added.
  • Type tests have been added.
  • E2E tests have been added.

@mrazauskas
Copy link
Contributor

mrazauskas commented Oct 24, 2022

Looks very useful!

I think the shape of the returned value should be somewhat similar to MockInstance type. mockRestore is already there, why not to have: mockPropertyValue, mockPropertyValueOnce? Also mock prop with access data sounds useful. The shape could be similar to MockFunctionState (can be called MockPropertyState), for instance it could count how many times the property was accessed.

I think jest.mockProperty is good name. Could be also jest.spyOnProperty. Or even:

jest.spyOn(process, 'stdout').mockPropertyValue({ isTTY: true });

In a way that would make sense if accesses counted.


forbids replacement of property that has been already replaced

I like to keep it strict, but it might be useful to see what spyOn does in similar situation right now? Feeling says that behaviour should be somewhat similar in both cases.


EDIT: Just read your #13465 (comment). I get your point, spying might not work here.

@mrazauskas
Copy link
Contributor

On second though, jest.replaceProperty might be better name. Jest mocks as well as spies have state or the mock prop. In this case it does not make much sense to keep any state. So I think mock or spy should not appear in the name to clearly show that this is just a replacement mechanism and there is no mock.

Just like jest.useFakeTimers is not jest.mockTime. That is clearly not a mock.


Calling the method on a replaced property could simply change the value. Perhaps? To allow having different value for each test. Somewhat like calling jest.useFakeTimers reinstalls the fake timers using different options.

@michal-kocarek
Copy link
Contributor Author

michal-kocarek commented Oct 24, 2022

So what about an interface like this:

// Used to be jest.mockProperty()
const replacer = jest.replaceProperty(obj, 'prop', value);

// Used to be replacer.mockRestore()
replacer.restore();

I like to keep it strict, but it might be useful to see what spyOn does in similar situation right now? Feeling says that behaviour should be somewhat similar in both cases.

Also, let's add support for calling replaceProperty() mutliple times on same property without throwing. It will be same as calling jest.spyOn() multiple times on same method.

jest.replaceProperty(process, 'env', {});

// Used to throw, will be working now
jest.replaceProperty(process, 'env', {FOO: 1});

Do you think this could make better sense?

@mrazauskas
Copy link
Contributor

I like it this way.

The method could also return Jest Object for chaining, but I prefer having replacer.restore(). (It will be also called by jest.restoreAllMocks(), right?)

Just a detail, it would make sense to have jest.Replaced<Source> type util:

let replacedStdout: jest.Replaced<typeof process.stdout>;

beforeEach(() => {
  replacedStdout = jest.replaceProperty(process, 'stdout', { isTTY: true });
});

afterEach(() => {
  replacedStdout.restore();
});

@SimenB @cpojer what you think about the API?

@michal-kocarek
Copy link
Contributor Author

Hi @mrazauskas yes, adding jest.Replaced makes sense.

Should I progress in finalizing this PR?

@mrazauskas
Copy link
Contributor

It might be better to wait for response from the maintainers before moving forward.

@jeysal jeysal requested a review from SimenB November 1, 2022 21:58
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
@michal-kocarek michal-kocarek marked this pull request as ready for review December 19, 2022 11:12
@michal-kocarek
Copy link
Contributor Author

Comments are fixed, let me know what you think, @eps1lon, @SimenB.
Thank you.

@michal-kocarek michal-kocarek requested review from eps1lon and removed request for SimenB December 19, 2022 11:13
Copy link
Contributor

@mrazauskas mrazauskas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I left few type related comments.

What about documentation and jest.MockedProperty utility type? Reference and inspiration: #13440

packages/jest-mock/__typetests__/mock-functions.test.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/index.ts Outdated Show resolved Hide resolved
packages/jest-environment/src/index.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/__tests__/index.test.ts Outdated Show resolved Hide resolved
packages/jest-mock/src/__tests__/index.test.ts Outdated Show resolved Hide resolved
@eps1lon
Copy link
Contributor

eps1lon commented Dec 20, 2022

@SimenB Can we get a CI run? Is this going in the right direction or are there any potential blockers you can see?

Michal Kočárek added 2 commits December 20, 2022 22:30
- Rename mockProperty to replaceProperty, as it's not exactly mocking.
- Allow passing different types when mocking value.
- Fix typings in TypeScript and cover them with tests.
@michal-kocarek
Copy link
Contributor Author

Thank you for valuable review.

I've tried to fix what I could, changed the method names as per @mrazauskas request and added some documentation. Also, there is now a utility type jest.Replaced with necessary documentation and examples.

I will be looking forward for your another round of thoughts...

@michal-kocarek
Copy link
Contributor Author

Thanks! It looks better and better. Few more ideas from my side.

Thank you for detailed review, @mrazauskas.
PR is updated with your requests and for the unresolved I will be looking for your response.

docs/JestObjectAPI.md Show resolved Hide resolved
packages/jest-mock/src/index.ts Show resolved Hide resolved
docs/MockFunctionAPI.md Outdated Show resolved Hide resolved
});

it('isLocalhost should detect localhost environment', () => {
replacedEnv = jest.replaceProperty(process, 'env', {HOSTNAME: 'localhost'});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: Why do we replace all of process.env instead of replacing only the value we're interested in i.e. why not

Suggested change
replacedEnv = jest.replaceProperty(process, 'env', {HOSTNAME: 'localhost'});
replacedEnv = jest.replaceProperty(process.env, 'HOSTNAME', 'localhost');

instead?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, that seems better, although then replacedEnv seems wrong?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This opens a design question. One cannot right now replace property that does not exist on an object. Assuming 'HOSTNAME' might or might not be in the env... What should we do in this case?

The Sinon.js implementation forbids creation of new properties. It must exist on an object (or in the prototype chain). I applied same restriction here.

What do you think, @SimenB , @mrazauskas and @eps1lon ? Should we allow adding undefined properties to the object (which is actually quite simple to do), or should be more restrictive (and possibly open this behavior in future). I do not have strong thoughts here...

Copy link
Contributor

@eps1lon eps1lon Jan 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One cannot right now replace property that does not exist on an object. Assuming 'HOSTNAME' might or might not be in the env... What should we do in this case?

Hm good point. I would expect that we can mock non-existing properties. But can see how replaceProperty might be misleading. But again, from my intuition, we should be able to mock non-existing properties.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could have a separate options bag ({mustExist: true} by default or something) that allows customization? But I think by default we should not allow it - if nothing else to catch typos (TS might help of course).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that works for our use case. And the process.env use case probably also works with a process.env.HOST_NAME = undefined during setup since I haven't seen any use case where you differentiate between unknown property and undefined in process.env

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But again, from my intuition, we should be able to mock non-existing properties.

@eps1lon: I am a bit afraid of typos or invalid usages. People might be mocking stuff:

  • that is not used due to typo,
  • that exists now, but after upgrade of a library disappears (e.g. mocking private handle of some database client instance),
  • due to error - misinterpreting API documentation and trying to mock property for different class.

And if one thinks about it... How common/rare is the use case when we need to mock something that does not exist? I can think of a case when people might want to mock either a new key of "dictionary" or some new array element. In that case, they should mock the parent anyway I guess... In same manner like the process.env. E.g.:

// Instead of
jest.replaceProperty(httpAgent.defaultHeaders, 'X-API-Key', mockKey);

// Use
jest.replaceProperty(httpAgent, 'defaultHeaders', {...httpAgent.defaultHeaders, 'X-API-Key': mockKey});
  • ❓ If we keep current behavior, should I mention in documentation how to work with undefined propeties - e.g. in process.env? This might be quite common case.

...separate options bag ({mustExist: true} by default... by default we should not allow it - if nothing else to catch typos (TS might help of course).

@SimenB This makes sense. How should I proceed?

  • ❓ Should I implement the optional ability to replace undeclared properties?
  • If yes, what is best name for the option inside property bag? (mustExist: true / allowUndefined: false / allowNonexistent: false / ...? I am fine with mustExist)

Copy link
Member

@SimenB SimenB Jan 4, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can do that in a followup to allow mocking non-existing props. But if you wanna get started right away that'd be awesome 😀

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this makes sense. I will implement it as separate PR, as this is already growing quite a lot. :)

Copy link
Member

@SimenB SimenB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking great! Thank you so much!!

docs/MockFunctionAPI.md Outdated Show resolved Hide resolved
Copy link
Member

@SimenB SimenB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ergh, actually CI is failing 😅

Code looks good (great, even 😀) to me, though 👍

@mrazauskas
Copy link
Contributor

mrazauskas commented Jan 31, 2023

@michal-kocarek Would you be up to implementing allowUndefined (or maybe tolerateUndefined) option?

I wanted to use jest.replaceProperty in Jest repo. Very first attempt threw "BABEL_ENV property does not exist":

https://github.com/facebook/jest/blob/836157f4807893bb23a4758a60998fbd61cb184c/packages/jest-create-cache-key-function/src/__tests__/index.test.ts#L10-L23

cbush pushed a commit to mongodb/docs-realm that referenced this pull request Feb 15, 2023
<h3>Snyk has created this PR to upgrade multiple dependencies.</h3>
👯 The following dependencies are linked and will therefore be updated
together.
</br></br>
:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
</br></br>

 Name         | Versions     | Released on
:-------------|:-------------|:-------------
**babel-jest**</br>from 29.3.1 to 29.4.0 | **1 version** ahead of your
current version | **22 days ago**</br>on 2023-01-24
**jest**</br>from 29.3.1 to 29.4.0 | **1 version** ahead of your current
version | **22 days ago**</br>on 2023-01-24



<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>babel-jest</b></summary>
    <ul>
      <li>
<b>29.4.0</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.4.0">2023-01-24</a></br><h2>Features</h2>
<ul>
<li><code>[expect, @ jest/expect-utils]</code> Support custom equality
testers (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13654"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13654/hovercard">#13654</a>)</li>
<li><code>[jest-config, jest-worker]</code> Use
<code>os.availableParallelism</code> if available to calculate number of
workers to spawn (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13738"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13738/hovercard">#13738</a>)</li>
<li><code>[@ jest/globals, jest-mock]</code> Add
<code>jest.replaceProperty()</code> that replaces property value (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13496"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13496/hovercard">#13496</a>)</li>
<li><code>[jest-haste-map]</code> ignore Sapling vcs directories
(<code>.sl/</code>) (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13674"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13674/hovercard">#13674</a>)</li>
<li><code>[jest-resolve]</code> Support subpath imports (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13705"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13705/hovercard">#13705</a>, <a
href="https://snyk.io/redirect/github/facebook/jest/pull/13723"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13723/hovercard">#13723</a>, <a
href="https://snyk.io/redirect/github/facebook/jest/pull/13777"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13777/hovercard">#13777</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isolateModulesAsync</code> for scoped module initialization
of asynchronous functions (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13680"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13680/hovercard">#13680</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isEnvironmentTornDown</code> function (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13741"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13741/hovercard">#13741</a>)</li>
<li><code>[jest-test-result]</code> Added <code>skipped</code> and
<code>focused</code> status to <code>FormattedTestResult</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13700"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13700/hovercard">#13700</a>)</li>
<li><code>[jest-transform]</code> Support for asynchronous
<code>createTransformer</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13762"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13762/hovercard">#13762</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[jest-environment-node]</code> Fix non-configurable globals
(<a href="https://snyk.io/redirect/github/facebook/jest/pull/13687"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13687/hovercard">#13687</a>)</li>
<li><code>[@ jest/expect-utils]</code> <code>toMatchObject</code> should
handle <code>Symbol</code> properties (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13639"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13639/hovercard">#13639</a>)</li>
<li><code>[jest-mock]</code> Fix <code>mockReset</code> and
<code>resetAllMocks</code> <code>undefined</code> return value(<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13692"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13692/hovercard">#13692</a>)</li>
<li><code>[jest-resolve]</code> Add global paths to
<code>require.resolve.paths</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13633"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13633/hovercard">#13633</a>)</li>
<li><code>[jest-resolve]</code> Correct node core module detection when
using <code>node:</code> specifiers (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13806"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13806/hovercard">#13806</a>)</li>
<li><code>[jest-runtime]</code> Support WASM files that import JS
resources (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13608"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13608/hovercard">#13608</a>)</li>
<li><code>[jest-runtime]</code> Use the <code>scriptTransformer</code>
cache in <code>jest-runner</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13735"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13735/hovercard">#13735</a>)</li>
<li><code>[jest-runtime]</code> Enforce import assertions when importing
JSON in ESM (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/12755"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/12755/hovercard">#12755</a>
&amp; <a href="https://snyk.io/redirect/github/facebook/jest/pull/13805"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13805/hovercard">#13805</a>)</li>
<li><code>[jest-snapshot]</code> Make sure to import <code>babel</code>
outside of the sandbox (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13694"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13694/hovercard">#13694</a>)</li>
<li><code>[jest-transform]</code> Ensure the correct configuration is
passed to preprocessors specified multiple times in the
<code>transform</code> option (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13770"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13770/hovercard">#13770</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[@ jest/fake-timers]</code> Update <code>@
sinonjs/fake-timers</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13612"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13612/hovercard">#13612</a>)</li>
<li><code>[docs]</code> Improve custom puppeteer example to prevent
worker warnings (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13619"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13619/hovercard">#13619</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lvqq/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lvqq">@ lvqq</a> made their first
contribution in <a aria-label="Pull request #13633" class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1458233845" data-permission-text="Title is private"
data-url="jestjs/jest#13633"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13633/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13633">#13633</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/zjfresh/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/zjfresh">@ zjfresh</a> made their
first contribution in <a aria-label="Pull request #13682"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1504316630" data-permission-text="Title is private"
data-url="jestjs/jest#13682"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13682/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13682">#13682</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/rnwst/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/rnwst">@ rnwst</a> made their
first contribution in <a aria-label="Pull request #13635"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1460619742" data-permission-text="Title is private"
data-url="jestjs/jest#13635"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13635/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13635">#13635</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/overlookmotel/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/overlookmotel">@ overlookmotel</a>
made their first contribution in <a aria-label="Pull request #13687"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1507865711" data-permission-text="Title is private"
data-url="jestjs/jest#13687"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13687/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13687">#13687</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/mmanciop/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/mmanciop">@ mmanciop</a> made
their first contribution in <a aria-label="Pull request #13680"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1500954532" data-permission-text="Title is private"
data-url="jestjs/jest#13680"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13680/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13680">#13680</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Jeroendevr/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Jeroendevr">@ Jeroendevr</a> made
their first contribution in <a aria-label="Pull request #13428"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1404420168" data-permission-text="Title is private"
data-url="jestjs/jest#13428"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13428/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13428">#13428</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/falsyvalues/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/falsyvalues">@ falsyvalues</a>
made their first contribution in <a aria-label="Pull request #13619"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1453483771" data-permission-text="Title is private"
data-url="jestjs/jest#13619"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13619/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13619">#13619</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/vegerot/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/vegerot">@ vegerot</a> made their
first contribution in <a aria-label="Pull request #13674"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1495407600" data-permission-text="Title is private"
data-url="jestjs/jest#13674"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13674/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13674">#13674</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/faustAbc/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/faustAbc">@ faustAbc</a> made
their first contribution in <a aria-label="Pull request #13331"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1389128446" data-permission-text="Title is private"
data-url="jestjs/jest#13331"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13331/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13331">#13331</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/valentincostam/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/valentincostam">@
valentincostam</a> made their first contribution in <a aria-label="Pull
request #13634" class="issue-link js-issue-link" data-error-text="Failed
to load title" data-id="1458596413" data-permission-text="Title is
private" data-url="jestjs/jest#13634"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13634/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13634">#13634</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/unional/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/unional">@ unional</a> made their
first contribution in <a aria-label="Pull request #13721"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1517018945" data-permission-text="Title is private"
data-url="jestjs/jest#13721"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13721/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13721">#13721</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/andrewiggins/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/andrewiggins">@ andrewiggins</a>
made their first contribution in <a aria-label="Pull request #13654"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1471979635" data-permission-text="Title is private"
data-url="jestjs/jest#13654"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13654/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13654">#13654</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/michal-kocarek/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/michal-kocarek">@
michal-kocarek</a> made their first contribution in <a aria-label="Pull
request #13496" class="issue-link js-issue-link" data-error-text="Failed
to load title" data-id="1419944203" data-permission-text="Title is
private" data-url="jestjs/jest#13496"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13496/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13496">#13496</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/jdufresne/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/jdufresne">@ jdufresne</a> made
their first contribution in <a aria-label="Pull request #13469"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1413337332" data-permission-text="Title is private"
data-url="jestjs/jest#13469"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13469/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13469">#13469</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/feliperli/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/feliperli">@ feliperli</a> made
their first contribution in <a aria-label="Pull request #13692"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1509760101" data-permission-text="Title is private"
data-url="jestjs/jest#13692"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13692/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13692">#13692</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/bob-zs/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/bob-zs">@ bob-zs</a> made their
first contribution in <a aria-label="Pull request #13740"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1523436837" data-permission-text="Title is private"
data-url="jestjs/jest#13740"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13740/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13740">#13740</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/MasterOdin/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/MasterOdin">@ MasterOdin</a> made
their first contribution in <a aria-label="Pull request #13743"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1524525830" data-permission-text="Title is private"
data-url="jestjs/jest#13743"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13743/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13743">#13743</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/kalyncoose/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/kalyncoose">@ kalyncoose</a> made
their first contribution in <a aria-label="Pull request #13746"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1525575221" data-permission-text="Title is private"
data-url="jestjs/jest#13746"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13746/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13746">#13746</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/arash-hacker/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/arash-hacker">@ arash-hacker</a>
made their first contribution in <a aria-label="Pull request #13747"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1526515649" data-permission-text="Title is private"
data-url="jestjs/jest#13747"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13747/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13747">#13747</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/jomendez/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/jomendez">@ jomendez</a> made
their first contribution in <a aria-label="Pull request #13741"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1523457981" data-permission-text="Title is private"
data-url="jestjs/jest#13741"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13741/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13741">#13741</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/coffeebeats/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/coffeebeats">@ coffeebeats</a>
made their first contribution in <a aria-label="Pull request #13770"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1533108122" data-permission-text="Title is private"
data-url="jestjs/jest#13770"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13770/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13770">#13770</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lachrist/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lachrist">@ lachrist</a> made
their first contribution in <a aria-label="Pull request #13762"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1531083529" data-permission-text="Title is private"
data-url="jestjs/jest#13762"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13762/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13762">#13762</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lukeed/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lukeed">@ lukeed</a> made their
first contribution in <a aria-label="Pull request #13777"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1535564063" data-permission-text="Title is private"
data-url="jestjs/jest#13777"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13777/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13777">#13777</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link"
href="https://snyk.io/redirect/github/facebook/jest/compare/v29.3.1...v29.4.0"><tt>v29.3.1...v29.4.0</tt></a></p>
      </li>
      <li>
<b>29.3.1</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.3.1">2022-11-08</a></br><h2>Fixes</h2>
<ul>
<li><code>[jest-config]</code> Do not warn about <code>preset</code> in
<code>ProjectConfig</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13583"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13583/hovercard">#13583</a>)</li>
</ul>
<h2>Performance</h2>
<ul>
<li><code>[jest-transform]</code> Defer creation of cache directory (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13420"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13420/hovercard">#13420</a>)</li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/facebook/jest/releases">babel-jest
GitHub release notes</a>
  </details>
  <details>
    <summary>Package name: <b>jest</b></summary>
    <ul>
      <li>
<b>29.4.0</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.4.0">2023-01-24</a></br><a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.4.0">
Read more </a>
      </li>
      <li>
<b>29.3.1</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.3.1">2022-11-08</a></br><h2>Fixes</h2>
<ul>
<li><code>[jest-config]</code> Do not warn about <code>preset</code> in
<code>ProjectConfig</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13583"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13583/hovercard">#13583</a>)</li>
</ul>
<h2>Performance</h2>
<ul>
<li><code>[jest-transform]</code> Defer creation of cache directory (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13420"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13420/hovercard">#13420</a>)</li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/facebook/jest/releases">jest
GitHub release notes</a>
  </details>
</details>


<details>
  <summary><b>Commit messages</b></summary>
  </br>
  <details>
    <summary>Package name: <b>babel-jest</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/4bc0e8acaf990e6618a7bed1dca67760c20bb12a">4bc0e8a</a>
v29.4.0</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/00112db41f2fa72b2a71415ec2270b568de72957">00112db</a>
chore: update changelog for release</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/a875150110b0ce35844a61c7797815c6716c1601">a875150</a>
docs: roll new version</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7626da9e5e18a61ebc3b2a3f74e7116962243ee3">7626da9</a>
fix(resolve): remove faulty check for &#x60;node:&#x60; modules
(#13806)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b40429649d5e673eb5c572db8a5cfd1218320a40">b404296</a>
chore: add validation of import assertions (#13805)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/6f8e91804b5515a64d1baf439bc1d84ee0ea61cd">6f8e918</a>
fix: enforce import assertions when importing JSON in ESM (#12755)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/e0b12497c9953c633023a414d57ba92db0bc61ae">e0b1249</a>
chore: update babel-plugin-tester (#13804)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b9282e197294f498f9995d73d242c3e407f7a10e">b9282e1</a>
chore: refresh lockfile (#13798)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/56f14544d5dc9b0e0772357b108de3da3c149ac4">56f1454</a>
docs: restructure the Expect API page (#13791)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/26661e2f9873c7c0bbc0612c423840d84df168e8">26661e2</a>
chore(stale-action): leave PRs with Pinned label alone</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/63bf909da19c04c300bdcbd6555598f6588a73d0">63bf909</a>
docs: clean up &#x60;expect.extend&#x60; documentation (#13788)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/ea5e47e28d619828048f2dce6c015b8b77c4f6fb">ea5e47e</a>
refactor(resolve): use &#x60;resolve.exports&#x60; for
&#x60;imports&#x60; (#13777)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/8ef8c20dc6489da758d1f32100e70b07ff4df13d">8ef8c20</a>
docs: add documentation of the &#x60;jest.deepUnmock()&#x60; method
(#13774)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/c010e3597dbd021d7fe88060ecbe282fe29a8d3d">c010e35</a>
refactor(@ jest/environment): keep alphabetic order in the
&#x60;Jest&#x60; interface (#13773)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/9ebb37378ffe3a03c3dfa2bac9ec9ed27c6b3339">9ebb373</a>
docs: fix one of &#x60;mockFn.mockImplementation()&#x60; TS examples
(#13775)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/86f3c8937503d5bded0f936e671f51ec77022f2e">86f3c89</a>
feat: support async createTransformer (#13762)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/2993a4f4845c0bebafb7cac95ae751615272f16c">2993a4f</a>
docs: fix various grammatical errors (#13768)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/49204ac6e06ecc53d4ebf45feab4c01da7756aec">49204ac</a>
fix(jest-transform): ensure correct config is passed to preprocessors
specified multiple times in &#x60;transform&#x60; (#13770)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/928f6ccec5fdb92ef157d6df832444d989c6b17b">928f6cc</a>
docs: add entry for isEnvironmentTornDown</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/73d7c1de78f9e48c03b770257c3e7fa962bb6a2e">73d7c1d</a>
feat(jest-runtime): expose isEnvironmentTornDown variable (#13741)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7b33879aa6b07f9d8887b2f37e302ac60d6ec7bc">7b33879</a>
docs: add &quot;shorthand for&quot; notes in Mock Function API
documentation (#13771)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/1a97aa6df02aab558319067ed3f3af1178c7419d">1a97aa6</a>
chore: update resolve.exports for bug fixes</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/601ba290cd3c456c433461326df4c98dd4d07161">601ba29</a>
Fix grammatical error in GlobalAPI.md (#13752)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/eca83e7221137785d585215f9ae9251adcdbacc3">eca83e7</a>
Add preposition &#x27;on&#x27; after verb &#x27;spy&#x27; in error msgs
and docs (#13767)</li>
    </ul>

<a
href="https://snyk.io/redirect/github/facebook/jest/compare/05deb8393c4ad71e19be2567b704dfd3a2ab5fc9...4bc0e8acaf990e6618a7bed1dca67760c20bb12a">Compare</a>
  </details>
  <details>
    <summary>Package name: <b>jest</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/4bc0e8acaf990e6618a7bed1dca67760c20bb12a">4bc0e8a</a>
v29.4.0</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/00112db41f2fa72b2a71415ec2270b568de72957">00112db</a>
chore: update changelog for release</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/a875150110b0ce35844a61c7797815c6716c1601">a875150</a>
docs: roll new version</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7626da9e5e18a61ebc3b2a3f74e7116962243ee3">7626da9</a>
fix(resolve): remove faulty check for &#x60;node:&#x60; modules
(#13806)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b40429649d5e673eb5c572db8a5cfd1218320a40">b404296</a>
chore: add validation of import assertions (#13805)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/6f8e91804b5515a64d1baf439bc1d84ee0ea61cd">6f8e918</a>
fix: enforce import assertions when importing JSON in ESM (#12755)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/e0b12497c9953c633023a414d57ba92db0bc61ae">e0b1249</a>
chore: update babel-plugin-tester (#13804)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b9282e197294f498f9995d73d242c3e407f7a10e">b9282e1</a>
chore: refresh lockfile (#13798)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/56f14544d5dc9b0e0772357b108de3da3c149ac4">56f1454</a>
docs: restructure the Expect API page (#13791)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/26661e2f9873c7c0bbc0612c423840d84df168e8">26661e2</a>
chore(stale-action): leave PRs with Pinned label alone</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/63bf909da19c04c300bdcbd6555598f6588a73d0">63bf909</a>
docs: clean up &#x60;expect.extend&#x60; documentation (#13788)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/ea5e47e28d619828048f2dce6c015b8b77c4f6fb">ea5e47e</a>
refactor(resolve): use &#x60;resolve.exports&#x60; for
&#x60;imports&#x60; (#13777)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/8ef8c20dc6489da758d1f32100e70b07ff4df13d">8ef8c20</a>
docs: add documentation of the &#x60;jest.deepUnmock()&#x60; method
(#13774)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/c010e3597dbd021d7fe88060ecbe282fe29a8d3d">c010e35</a>
refactor(@ jest/environment): keep alphabetic order in the
&#x60;Jest&#x60; interface (#13773)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/9ebb37378ffe3a03c3dfa2bac9ec9ed27c6b3339">9ebb373</a>
docs: fix one of &#x60;mockFn.mockImplementation()&#x60; TS examples
(#13775)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/86f3c8937503d5bded0f936e671f51ec77022f2e">86f3c89</a>
feat: support async createTransformer (#13762)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/2993a4f4845c0bebafb7cac95ae751615272f16c">2993a4f</a>
docs: fix various grammatical errors (#13768)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/49204ac6e06ecc53d4ebf45feab4c01da7756aec">49204ac</a>
fix(jest-transform): ensure correct config is passed to preprocessors
specified multiple times in &#x60;transform&#x60; (#13770)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/928f6ccec5fdb92ef157d6df832444d989c6b17b">928f6cc</a>
docs: add entry for isEnvironmentTornDown</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/73d7c1de78f9e48c03b770257c3e7fa962bb6a2e">73d7c1d</a>
feat(jest-runtime): expose isEnvironmentTornDown variable (#13741)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7b33879aa6b07f9d8887b2f37e302ac60d6ec7bc">7b33879</a>
docs: add &quot;shorthand for&quot; notes in Mock Function API
documentation (#13771)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/1a97aa6df02aab558319067ed3f3af1178c7419d">1a97aa6</a>
chore: update resolve.exports for bug fixes</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/601ba290cd3c456c433461326df4c98dd4d07161">601ba29</a>
Fix grammatical error in GlobalAPI.md (#13752)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/eca83e7221137785d585215f9ae9251adcdbacc3">eca83e7</a>
Add preposition &#x27;on&#x27; after verb &#x27;spy&#x27; in error msgs
and docs (#13767)</li>
    </ul>

<a
href="https://snyk.io/redirect/github/facebook/jest/compare/05deb8393c4ad71e19be2567b704dfd3a2ab5fc9...4bc0e8acaf990e6618a7bed1dca67760c20bb12a">Compare</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJkM2ZlYTczOC1kMDZkLTRmMTYtYjc5MS03ODdiZWIxYjI4ZTkiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImQzZmVhNzM4LWQwNmQtNGYxNi1iNzkxLTc4N2JlYjFiMjhlOSJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?pkg&#x3D;babel-jest&amp;pkg&#x3D;jest&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"d3fea738-d06d-4f16-b791-787beb1b28e9","prPublicId":"d3fea738-d06d-4f16-b791-787beb1b28e9","dependencies":[{"name":"babel-jest","from":"29.3.1","to":"29.4.0"},{"name":"jest","from":"29.3.1","to":"29.4.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"852e6e4f-be96-45c8-b370-1060f5ebee55","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":1,"publishedDate":"2023-01-24T10:56:00.839Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

---------

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
cbullinger pushed a commit to cbullinger/docs-realm that referenced this pull request Feb 16, 2023
<h3>Snyk has created this PR to upgrade multiple dependencies.</h3>
👯 The following dependencies are linked and will therefore be updated
together.
</br></br>
:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
</br></br>

 Name         | Versions     | Released on
:-------------|:-------------|:-------------
**babel-jest**</br>from 29.3.1 to 29.4.0 | **1 version** ahead of your
current version | **22 days ago**</br>on 2023-01-24
**jest**</br>from 29.3.1 to 29.4.0 | **1 version** ahead of your current
version | **22 days ago**</br>on 2023-01-24



<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>babel-jest</b></summary>
    <ul>
      <li>
<b>29.4.0</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.4.0">2023-01-24</a></br><h2>Features</h2>
<ul>
<li><code>[expect, @ jest/expect-utils]</code> Support custom equality
testers (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13654"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13654/hovercard">#13654</a>)</li>
<li><code>[jest-config, jest-worker]</code> Use
<code>os.availableParallelism</code> if available to calculate number of
workers to spawn (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13738"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13738/hovercard">#13738</a>)</li>
<li><code>[@ jest/globals, jest-mock]</code> Add
<code>jest.replaceProperty()</code> that replaces property value (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13496"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13496/hovercard">#13496</a>)</li>
<li><code>[jest-haste-map]</code> ignore Sapling vcs directories
(<code>.sl/</code>) (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13674"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13674/hovercard">#13674</a>)</li>
<li><code>[jest-resolve]</code> Support subpath imports (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13705"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13705/hovercard">#13705</a>, <a
href="https://snyk.io/redirect/github/facebook/jest/pull/13723"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13723/hovercard">#13723</a>, <a
href="https://snyk.io/redirect/github/facebook/jest/pull/13777"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13777/hovercard">#13777</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isolateModulesAsync</code> for scoped module initialization
of asynchronous functions (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13680"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13680/hovercard">#13680</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isEnvironmentTornDown</code> function (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13741"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13741/hovercard">#13741</a>)</li>
<li><code>[jest-test-result]</code> Added <code>skipped</code> and
<code>focused</code> status to <code>FormattedTestResult</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13700"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13700/hovercard">#13700</a>)</li>
<li><code>[jest-transform]</code> Support for asynchronous
<code>createTransformer</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13762"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13762/hovercard">#13762</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[jest-environment-node]</code> Fix non-configurable globals
(<a href="https://snyk.io/redirect/github/facebook/jest/pull/13687"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13687/hovercard">#13687</a>)</li>
<li><code>[@ jest/expect-utils]</code> <code>toMatchObject</code> should
handle <code>Symbol</code> properties (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13639"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13639/hovercard">#13639</a>)</li>
<li><code>[jest-mock]</code> Fix <code>mockReset</code> and
<code>resetAllMocks</code> <code>undefined</code> return value(<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13692"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13692/hovercard">#13692</a>)</li>
<li><code>[jest-resolve]</code> Add global paths to
<code>require.resolve.paths</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13633"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13633/hovercard">#13633</a>)</li>
<li><code>[jest-resolve]</code> Correct node core module detection when
using <code>node:</code> specifiers (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13806"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13806/hovercard">#13806</a>)</li>
<li><code>[jest-runtime]</code> Support WASM files that import JS
resources (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13608"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13608/hovercard">#13608</a>)</li>
<li><code>[jest-runtime]</code> Use the <code>scriptTransformer</code>
cache in <code>jest-runner</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13735"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13735/hovercard">#13735</a>)</li>
<li><code>[jest-runtime]</code> Enforce import assertions when importing
JSON in ESM (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/12755"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/12755/hovercard">#12755</a>
&amp; <a href="https://snyk.io/redirect/github/facebook/jest/pull/13805"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13805/hovercard">#13805</a>)</li>
<li><code>[jest-snapshot]</code> Make sure to import <code>babel</code>
outside of the sandbox (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13694"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13694/hovercard">#13694</a>)</li>
<li><code>[jest-transform]</code> Ensure the correct configuration is
passed to preprocessors specified multiple times in the
<code>transform</code> option (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13770"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13770/hovercard">#13770</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[@ jest/fake-timers]</code> Update <code>@
sinonjs/fake-timers</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13612"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13612/hovercard">#13612</a>)</li>
<li><code>[docs]</code> Improve custom puppeteer example to prevent
worker warnings (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13619"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13619/hovercard">#13619</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lvqq/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lvqq">@ lvqq</a> made their first
contribution in <a aria-label="Pull request #13633" class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1458233845" data-permission-text="Title is private"
data-url="jestjs/jest#13633"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13633/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13633">#13633</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/zjfresh/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/zjfresh">@ zjfresh</a> made their
first contribution in <a aria-label="Pull request #13682"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1504316630" data-permission-text="Title is private"
data-url="jestjs/jest#13682"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13682/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13682">#13682</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/rnwst/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/rnwst">@ rnwst</a> made their
first contribution in <a aria-label="Pull request #13635"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1460619742" data-permission-text="Title is private"
data-url="jestjs/jest#13635"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13635/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13635">#13635</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/overlookmotel/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/overlookmotel">@ overlookmotel</a>
made their first contribution in <a aria-label="Pull request #13687"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1507865711" data-permission-text="Title is private"
data-url="jestjs/jest#13687"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13687/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13687">#13687</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/mmanciop/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/mmanciop">@ mmanciop</a> made
their first contribution in <a aria-label="Pull request #13680"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1500954532" data-permission-text="Title is private"
data-url="jestjs/jest#13680"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13680/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13680">#13680</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Jeroendevr/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Jeroendevr">@ Jeroendevr</a> made
their first contribution in <a aria-label="Pull request #13428"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1404420168" data-permission-text="Title is private"
data-url="jestjs/jest#13428"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13428/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13428">#13428</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/falsyvalues/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/falsyvalues">@ falsyvalues</a>
made their first contribution in <a aria-label="Pull request #13619"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1453483771" data-permission-text="Title is private"
data-url="jestjs/jest#13619"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13619/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13619">#13619</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/vegerot/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/vegerot">@ vegerot</a> made their
first contribution in <a aria-label="Pull request #13674"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1495407600" data-permission-text="Title is private"
data-url="jestjs/jest#13674"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13674/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13674">#13674</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/faustAbc/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/faustAbc">@ faustAbc</a> made
their first contribution in <a aria-label="Pull request #13331"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1389128446" data-permission-text="Title is private"
data-url="jestjs/jest#13331"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13331/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13331">#13331</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/valentincostam/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/valentincostam">@
valentincostam</a> made their first contribution in <a aria-label="Pull
request #13634" class="issue-link js-issue-link" data-error-text="Failed
to load title" data-id="1458596413" data-permission-text="Title is
private" data-url="jestjs/jest#13634"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13634/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13634">#13634</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/unional/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/unional">@ unional</a> made their
first contribution in <a aria-label="Pull request #13721"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1517018945" data-permission-text="Title is private"
data-url="jestjs/jest#13721"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13721/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13721">#13721</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/andrewiggins/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/andrewiggins">@ andrewiggins</a>
made their first contribution in <a aria-label="Pull request #13654"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1471979635" data-permission-text="Title is private"
data-url="jestjs/jest#13654"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13654/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13654">#13654</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/michal-kocarek/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/michal-kocarek">@
michal-kocarek</a> made their first contribution in <a aria-label="Pull
request #13496" class="issue-link js-issue-link" data-error-text="Failed
to load title" data-id="1419944203" data-permission-text="Title is
private" data-url="jestjs/jest#13496"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13496/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13496">#13496</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/jdufresne/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/jdufresne">@ jdufresne</a> made
their first contribution in <a aria-label="Pull request #13469"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1413337332" data-permission-text="Title is private"
data-url="jestjs/jest#13469"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13469/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13469">#13469</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/feliperli/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/feliperli">@ feliperli</a> made
their first contribution in <a aria-label="Pull request #13692"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1509760101" data-permission-text="Title is private"
data-url="jestjs/jest#13692"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13692/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13692">#13692</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/bob-zs/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/bob-zs">@ bob-zs</a> made their
first contribution in <a aria-label="Pull request #13740"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1523436837" data-permission-text="Title is private"
data-url="jestjs/jest#13740"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13740/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13740">#13740</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/MasterOdin/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/MasterOdin">@ MasterOdin</a> made
their first contribution in <a aria-label="Pull request #13743"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1524525830" data-permission-text="Title is private"
data-url="jestjs/jest#13743"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13743/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13743">#13743</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/kalyncoose/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/kalyncoose">@ kalyncoose</a> made
their first contribution in <a aria-label="Pull request #13746"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1525575221" data-permission-text="Title is private"
data-url="jestjs/jest#13746"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13746/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13746">#13746</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/arash-hacker/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/arash-hacker">@ arash-hacker</a>
made their first contribution in <a aria-label="Pull request #13747"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1526515649" data-permission-text="Title is private"
data-url="jestjs/jest#13747"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13747/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13747">#13747</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/jomendez/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/jomendez">@ jomendez</a> made
their first contribution in <a aria-label="Pull request #13741"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1523457981" data-permission-text="Title is private"
data-url="jestjs/jest#13741"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13741/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13741">#13741</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/coffeebeats/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/coffeebeats">@ coffeebeats</a>
made their first contribution in <a aria-label="Pull request #13770"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1533108122" data-permission-text="Title is private"
data-url="jestjs/jest#13770"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13770/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13770">#13770</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lachrist/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lachrist">@ lachrist</a> made
their first contribution in <a aria-label="Pull request #13762"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1531083529" data-permission-text="Title is private"
data-url="jestjs/jest#13762"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13762/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13762">#13762</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/lukeed/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/lukeed">@ lukeed</a> made their
first contribution in <a aria-label="Pull request #13777"
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1535564063" data-permission-text="Title is private"
data-url="jestjs/jest#13777"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13777/hovercard"
href="https://snyk.io/redirect/github/facebook/jest/pull/13777">#13777</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link"
href="https://snyk.io/redirect/github/facebook/jest/compare/v29.3.1...v29.4.0"><tt>v29.3.1...v29.4.0</tt></a></p>
      </li>
      <li>
<b>29.3.1</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.3.1">2022-11-08</a></br><h2>Fixes</h2>
<ul>
<li><code>[jest-config]</code> Do not warn about <code>preset</code> in
<code>ProjectConfig</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13583"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13583/hovercard">#13583</a>)</li>
</ul>
<h2>Performance</h2>
<ul>
<li><code>[jest-transform]</code> Defer creation of cache directory (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13420"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13420/hovercard">#13420</a>)</li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/facebook/jest/releases">babel-jest
GitHub release notes</a>
  </details>
  <details>
    <summary>Package name: <b>jest</b></summary>
    <ul>
      <li>
<b>29.4.0</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.4.0">2023-01-24</a></br><a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.4.0">
Read more </a>
      </li>
      <li>
<b>29.3.1</b> - <a
href="https://snyk.io/redirect/github/facebook/jest/releases/tag/v29.3.1">2022-11-08</a></br><h2>Fixes</h2>
<ul>
<li><code>[jest-config]</code> Do not warn about <code>preset</code> in
<code>ProjectConfig</code> (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13583"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13583/hovercard">#13583</a>)</li>
</ul>
<h2>Performance</h2>
<ul>
<li><code>[jest-transform]</code> Defer creation of cache directory (<a
href="https://snyk.io/redirect/github/facebook/jest/pull/13420"
data-hovercard-type="pull_request"
data-hovercard-url="/jestjs/jest/pull/13420/hovercard">#13420</a>)</li>
</ul>
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/facebook/jest/releases">jest
GitHub release notes</a>
  </details>
</details>


<details>
  <summary><b>Commit messages</b></summary>
  </br>
  <details>
    <summary>Package name: <b>babel-jest</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/4bc0e8acaf990e6618a7bed1dca67760c20bb12a">4bc0e8a</a>
v29.4.0</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/00112db41f2fa72b2a71415ec2270b568de72957">00112db</a>
chore: update changelog for release</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/a875150110b0ce35844a61c7797815c6716c1601">a875150</a>
docs: roll new version</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7626da9e5e18a61ebc3b2a3f74e7116962243ee3">7626da9</a>
fix(resolve): remove faulty check for &#x60;node:&#x60; modules
(#13806)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b40429649d5e673eb5c572db8a5cfd1218320a40">b404296</a>
chore: add validation of import assertions (#13805)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/6f8e91804b5515a64d1baf439bc1d84ee0ea61cd">6f8e918</a>
fix: enforce import assertions when importing JSON in ESM (#12755)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/e0b12497c9953c633023a414d57ba92db0bc61ae">e0b1249</a>
chore: update babel-plugin-tester (#13804)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b9282e197294f498f9995d73d242c3e407f7a10e">b9282e1</a>
chore: refresh lockfile (#13798)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/56f14544d5dc9b0e0772357b108de3da3c149ac4">56f1454</a>
docs: restructure the Expect API page (#13791)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/26661e2f9873c7c0bbc0612c423840d84df168e8">26661e2</a>
chore(stale-action): leave PRs with Pinned label alone</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/63bf909da19c04c300bdcbd6555598f6588a73d0">63bf909</a>
docs: clean up &#x60;expect.extend&#x60; documentation (#13788)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/ea5e47e28d619828048f2dce6c015b8b77c4f6fb">ea5e47e</a>
refactor(resolve): use &#x60;resolve.exports&#x60; for
&#x60;imports&#x60; (#13777)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/8ef8c20dc6489da758d1f32100e70b07ff4df13d">8ef8c20</a>
docs: add documentation of the &#x60;jest.deepUnmock()&#x60; method
(#13774)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/c010e3597dbd021d7fe88060ecbe282fe29a8d3d">c010e35</a>
refactor(@ jest/environment): keep alphabetic order in the
&#x60;Jest&#x60; interface (#13773)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/9ebb37378ffe3a03c3dfa2bac9ec9ed27c6b3339">9ebb373</a>
docs: fix one of &#x60;mockFn.mockImplementation()&#x60; TS examples
(#13775)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/86f3c8937503d5bded0f936e671f51ec77022f2e">86f3c89</a>
feat: support async createTransformer (#13762)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/2993a4f4845c0bebafb7cac95ae751615272f16c">2993a4f</a>
docs: fix various grammatical errors (#13768)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/49204ac6e06ecc53d4ebf45feab4c01da7756aec">49204ac</a>
fix(jest-transform): ensure correct config is passed to preprocessors
specified multiple times in &#x60;transform&#x60; (#13770)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/928f6ccec5fdb92ef157d6df832444d989c6b17b">928f6cc</a>
docs: add entry for isEnvironmentTornDown</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/73d7c1de78f9e48c03b770257c3e7fa962bb6a2e">73d7c1d</a>
feat(jest-runtime): expose isEnvironmentTornDown variable (#13741)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7b33879aa6b07f9d8887b2f37e302ac60d6ec7bc">7b33879</a>
docs: add &quot;shorthand for&quot; notes in Mock Function API
documentation (#13771)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/1a97aa6df02aab558319067ed3f3af1178c7419d">1a97aa6</a>
chore: update resolve.exports for bug fixes</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/601ba290cd3c456c433461326df4c98dd4d07161">601ba29</a>
Fix grammatical error in GlobalAPI.md (#13752)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/eca83e7221137785d585215f9ae9251adcdbacc3">eca83e7</a>
Add preposition &#x27;on&#x27; after verb &#x27;spy&#x27; in error msgs
and docs (#13767)</li>
    </ul>

<a
href="https://snyk.io/redirect/github/facebook/jest/compare/05deb8393c4ad71e19be2567b704dfd3a2ab5fc9...4bc0e8acaf990e6618a7bed1dca67760c20bb12a">Compare</a>
  </details>
  <details>
    <summary>Package name: <b>jest</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/4bc0e8acaf990e6618a7bed1dca67760c20bb12a">4bc0e8a</a>
v29.4.0</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/00112db41f2fa72b2a71415ec2270b568de72957">00112db</a>
chore: update changelog for release</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/a875150110b0ce35844a61c7797815c6716c1601">a875150</a>
docs: roll new version</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7626da9e5e18a61ebc3b2a3f74e7116962243ee3">7626da9</a>
fix(resolve): remove faulty check for &#x60;node:&#x60; modules
(#13806)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b40429649d5e673eb5c572db8a5cfd1218320a40">b404296</a>
chore: add validation of import assertions (#13805)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/6f8e91804b5515a64d1baf439bc1d84ee0ea61cd">6f8e918</a>
fix: enforce import assertions when importing JSON in ESM (#12755)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/e0b12497c9953c633023a414d57ba92db0bc61ae">e0b1249</a>
chore: update babel-plugin-tester (#13804)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/b9282e197294f498f9995d73d242c3e407f7a10e">b9282e1</a>
chore: refresh lockfile (#13798)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/56f14544d5dc9b0e0772357b108de3da3c149ac4">56f1454</a>
docs: restructure the Expect API page (#13791)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/26661e2f9873c7c0bbc0612c423840d84df168e8">26661e2</a>
chore(stale-action): leave PRs with Pinned label alone</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/63bf909da19c04c300bdcbd6555598f6588a73d0">63bf909</a>
docs: clean up &#x60;expect.extend&#x60; documentation (#13788)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/ea5e47e28d619828048f2dce6c015b8b77c4f6fb">ea5e47e</a>
refactor(resolve): use &#x60;resolve.exports&#x60; for
&#x60;imports&#x60; (#13777)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/8ef8c20dc6489da758d1f32100e70b07ff4df13d">8ef8c20</a>
docs: add documentation of the &#x60;jest.deepUnmock()&#x60; method
(#13774)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/c010e3597dbd021d7fe88060ecbe282fe29a8d3d">c010e35</a>
refactor(@ jest/environment): keep alphabetic order in the
&#x60;Jest&#x60; interface (#13773)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/9ebb37378ffe3a03c3dfa2bac9ec9ed27c6b3339">9ebb373</a>
docs: fix one of &#x60;mockFn.mockImplementation()&#x60; TS examples
(#13775)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/86f3c8937503d5bded0f936e671f51ec77022f2e">86f3c89</a>
feat: support async createTransformer (#13762)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/2993a4f4845c0bebafb7cac95ae751615272f16c">2993a4f</a>
docs: fix various grammatical errors (#13768)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/49204ac6e06ecc53d4ebf45feab4c01da7756aec">49204ac</a>
fix(jest-transform): ensure correct config is passed to preprocessors
specified multiple times in &#x60;transform&#x60; (#13770)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/928f6ccec5fdb92ef157d6df832444d989c6b17b">928f6cc</a>
docs: add entry for isEnvironmentTornDown</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/73d7c1de78f9e48c03b770257c3e7fa962bb6a2e">73d7c1d</a>
feat(jest-runtime): expose isEnvironmentTornDown variable (#13741)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/7b33879aa6b07f9d8887b2f37e302ac60d6ec7bc">7b33879</a>
docs: add &quot;shorthand for&quot; notes in Mock Function API
documentation (#13771)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/1a97aa6df02aab558319067ed3f3af1178c7419d">1a97aa6</a>
chore: update resolve.exports for bug fixes</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/601ba290cd3c456c433461326df4c98dd4d07161">601ba29</a>
Fix grammatical error in GlobalAPI.md (#13752)</li>
<li><a
href="https://snyk.io/redirect/github/facebook/jest/commit/eca83e7221137785d585215f9ae9251adcdbacc3">eca83e7</a>
Add preposition &#x27;on&#x27; after verb &#x27;spy&#x27; in error msgs
and docs (#13767)</li>
    </ul>

<a
href="https://snyk.io/redirect/github/facebook/jest/compare/05deb8393c4ad71e19be2567b704dfd3a2ab5fc9...4bc0e8acaf990e6618a7bed1dca67760c20bb12a">Compare</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJkM2ZlYTczOC1kMDZkLTRmMTYtYjc5MS03ODdiZWIxYjI4ZTkiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImQzZmVhNzM4LWQwNmQtNGYxNi1iNzkxLTc4N2JlYjFiMjhlOSJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55/settings/integration?pkg&#x3D;babel-jest&amp;pkg&#x3D;jest&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"d3fea738-d06d-4f16-b791-787beb1b28e9","prPublicId":"d3fea738-d06d-4f16-b791-787beb1b28e9","dependencies":[{"name":"babel-jest","from":"29.3.1","to":"29.4.0"},{"name":"jest","from":"29.3.1","to":"29.4.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/sandbox-2ba/project/852e6e4f-be96-45c8-b370-1060f5ebee55?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"852e6e4f-be96-45c8-b370-1060f5ebee55","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":1,"publishedDate":"2023-01-24T10:56:00.839Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

---------

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
@vostafi-impressit
Copy link

vostafi-impressit commented Feb 16, 2023

Looks like replaceProperty is not available on global object jest
Could anyone check it?

@SimenB
Copy link
Member

SimenB commented Feb 23, 2023

Looks like replaceProperty is not available on global object jest Could anyone check it?

Please open up a new issue with a reproduction

@mrazauskas
Copy link
Contributor

Just opened a PR for tolerateUndefined option (#13958). It was discussed here, feel free to leave feedback (;

Vylpes pushed a commit to Vylpes/vylbot-app that referenced this pull request Mar 27, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [jest](https://jestjs.io/) ([source](https://github.com/facebook/jest)) | dependencies | major | [`^27.4.5` -> `^29.0.0`](https://renovatebot.com/diffs/npm/jest/27.4.5/29.5.0) |
| [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jest) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped)) | dependencies | major | [`^27.0.3` -> `^29.0.0`](https://renovatebot.com/diffs/npm/@types%2fjest/27.0.3/29.5.0) |

---

### Release Notes

<details>
<summary>facebook/jest</summary>

### [`v29.5.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2950)

[Compare Source](https://github.com/facebook/jest/compare/v29.4.3...v29.5.0)

##### Features

-   `[jest-changed-files]` Support Sapling ([#&#8203;13941](https://github.com/facebook/jest/pull/13941))
-   `[jest-circus, @&#8203;jest/cli, jest-config]` Add feature to randomize order of tests via CLI flag or through the config file([#&#8203;12922](https://github.com/facebook/jest/pull/12922))
-   `[jest-cli, jest-config, @&#8203;jest/core, jest-haste-map, @&#8203;jest/reporters, jest-runner, jest-runtime, @&#8203;jest/types]` Add `workerThreads` configuration option to allow using [worker threads](https://nodejs.org/dist/latest/docs/api/worker_threads.html) for parallelization ([#&#8203;13939](https://github.com/facebook/jest/pull/13939))
-   `[jest-cli]` Export `yargsOptions` ([#&#8203;13970](https://github.com/facebook/jest/pull/13970))
-   `[jest-config]` Add `openHandlesTimeout` option to configure possible open handles warning. ([#&#8203;13875](https://github.com/facebook/jest/pull/13875))
-   `[@jest/create-cache-key-function]` Allow passing `length` argument to `createCacheKey()` function and set its default value to `16` on Windows ([#&#8203;13827](https://github.com/facebook/jest/pull/13827))
-   `[jest-message-util]` Add support for [AggregateError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError) ([#&#8203;13946](https://github.com/facebook/jest/pull/13946) & [#&#8203;13947](https://github.com/facebook/jest/pull/13947))
-   `[jest-message-util]` Add support for [Error causes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause) in `test` and `it` ([#&#8203;13935](https://github.com/facebook/jest/pull/13935) & [#&#8203;13966](https://github.com/facebook/jest/pull/13966))
-   `[jest-reporters]` Add `summaryThreshold` option to summary reporter to allow overriding the internal threshold that is used to print the summary of all failed tests when the number of test suites surpasses it ([#&#8203;13895](https://github.com/facebook/jest/pull/13895))
-   `[jest-runtime]` Expose `@sinonjs/fake-timers` async APIs functions `advanceTimersByTimeAsync(msToRun)` (`tickAsync(msToRun)`), `advanceTimersToNextTimerAsync(steps)` (`nextAsync`), `runAllTimersAsync` (`runAllAsync`), and `runOnlyPendingTimersAsync` (`runToLastAsync`) ([#&#8203;13981](https://github.com/facebook/jest/pull/13981))
-   `[jest-runtime, @&#8203;jest/transform]` Allow V8 coverage provider to collect coverage from files which were not loaded explicitly ([#&#8203;13974](https://github.com/facebook/jest/pull/13974))
-   `[jest-snapshot]` Add support to `cts` and `mts` TypeScript files to inline snapshots ([#&#8203;13975](https://github.com/facebook/jest/pull/13975))
-   `[jest-worker]` Add `start` method to worker farms ([#&#8203;13937](https://github.com/facebook/jest/pull/13937))
-   `[jest-worker]` Support passing a URL as path to worker ([#&#8203;13982](https://github.com/facebook/jest/pull/13982))

##### Fixes

-   `[babel-plugin-jest-hoist]` Fix unwanted hoisting of nested `jest` usages ([#&#8203;13952](https://github.com/facebook/jest/pull/13952))
-   `[jest-circus]` Send test case results for `todo` tests ([#&#8203;13915](https://github.com/facebook/jest/pull/13915))
-   `[jest-circus]` Update message printed on test timeout ([#&#8203;13830](https://github.com/facebook/jest/pull/13830))
-   `[jest-circus]` Avoid creating the word "testfalse" when `takesDoneCallback` is `false` in the message printed on test timeout AND updated timeouts test ([#&#8203;13954](https://github.com/facebook/jest/pull/13954))
-   `[jest-environment-jsdom]` Stop setting `document` to `null` on teardown ([#&#8203;13972](https://github.com/facebook/jest/pull/13972))
-   `[@jest/expect-utils]` Update `toStrictEqual()` to be able to check `jest.fn().mock.calls` ([#&#8203;13960](https://github.com/facebook/jest/pull/13960))
-   `[@jest/test-result]` Allow `TestResultsProcessor` type to return a Promise ([#&#8203;13950](https://github.com/facebook/jest/pull/13950))

##### Chore & Maintenance

-   `[jest-snapshot]` Remove dependency on `jest-haste-map` ([#&#8203;13977](https://github.com/facebook/jest/pull/13977))

### [`v29.4.3`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2943)

[Compare Source](https://github.com/facebook/jest/compare/v29.4.2...v29.4.3)

##### Features

-   `[expect]` Update `toThrow()` to be able to use error `cause`s ([#&#8203;13606](https://github.com/facebook/jest/pull/13606))
-   `[jest-core]` allow to use `workerIdleMemoryLimit` with only 1 worker or `runInBand` option ([#&#8203;13846](https://github.com/facebook/jest/pull/13846))
-   `[jest-message-util]` Add support for [error `cause`s](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause) ([#&#8203;13868](https://github.com/facebook/jest/pull/13868) & [#&#8203;13912](https://github.com/facebook/jest/pull/13912))
-   `[jest-runtime]` Revert `import assertions` for JSON modules as it's been relegated to Stage 2 ([#&#8203;13911](https://github.com/facebook/jest/pull/13911))

##### Fixes

-   `[@jest/expect-utils]` `subsetEquality` should consider also an object's inherited string keys ([#&#8203;13824](https://github.com/facebook/jest/pull/13824))
-   `[jest-mock]` Clear mock state when `jest.restoreAllMocks()` is called ([#&#8203;13867](https://github.com/facebook/jest/pull/13867))
-   `[jest-mock]` Prevent `mockImplementationOnce` and `mockReturnValueOnce` bleeding into `withImplementation` ([#&#8203;13888](https://github.com/facebook/jest/pull/13888))
-   `[jest-mock]` Do not restore mocks when `jest.resetAllMocks()` is called ([#&#8203;13866](https://github.com/facebook/jest/pull/13866))

### [`v29.4.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2942)

[Compare Source](https://github.com/facebook/jest/compare/v29.4.1...v29.4.2)

##### Features

-   `[@jest/core]` Instrument significant lifecycle events with [`performance.mark()`](https://nodejs.org/docs/latest-v16.x/api/perf_hooks.html#performancemarkname-options) ([#&#8203;13859](https://github.com/facebook/jest/pull/13859))

##### Fixes

-   `[expect, @&#8203;jest/expect]` Provide type of `actual` as a generic argument to `Matchers` to allow better-typed extensions ([#&#8203;13848](https://github.com/facebook/jest/pull/13848))
-   `[jest-circus]` Added explicit mention of test failing because `done()` is not being called in error message ([#&#8203;13847](https://github.com/facebook/jest/pull/13847))
-   `[jest-runtime]` Handle CJS re-exports of node core modules from ESM ([#&#8203;13856](https://github.com/facebook/jest/pull/13856))
-   `[jest-transform]` Downgrade `write-file-atomic` to v4 ([#&#8203;13853](https://github.com/facebook/jest/pull/13853))
-   `[jest-worker]` Ignore IPC messages not intended for Jest ([#&#8203;13543](https://github.com/facebook/jest/pull/13543))

##### Chore & Maintenance

-   `[*]` make sure to exclude `.eslintcache` from published module ([#&#8203;13832](https://github.com/facebook/jest/pull/13832))
-   `[docs]` Cleanup incorrect links in CHANGELOG.md ([#&#8203;13857](https://github.com/facebook/jest/pull/13857))

### [`v29.4.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2941)

[Compare Source](https://github.com/facebook/jest/compare/v29.4.0...v29.4.1)

##### Features

-   `[expect, jest-circus, @&#8203;jest/types]` Implement `numPassingAsserts` of testResults to track the number of passing asserts in a test ([#&#8203;13795](https://github.com/facebook/jest/pull/13795))
-   `[jest-core]` Add newlines to JSON output ([#&#8203;13817](https://github.com/facebook/jest/pull/13817))
-   `[@jest/reporters]` Automatic log folding in GitHub Actions Reporter ([#&#8203;13626](https://github.com/facebook/jest/pull/13626))

##### Fixes

-   `[@jest/expect-utils]` `toMatchObject` diffs should include `Symbol` properties ([#&#8203;13810](https://github.com/facebook/jest/pull/13810))
-   `[jest-runtime]` Handle missing `replaceProperty` ([#&#8203;13823](https://github.com/facebook/jest/pull/13823))
-   `[@jest/types]` Add partial support for `done` callbacks in typings of `each` ([#&#8203;13756](https://github.com/facebook/jest/pull/13756))

### [`v29.4.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2940)

[Compare Source](https://github.com/facebook/jest/compare/v29.3.1...v29.4.0)

##### Features

-   `[expect, @&#8203;jest/expect-utils]` Support custom equality testers ([#&#8203;13654](https://github.com/facebook/jest/pull/13654))
-   `[jest-config, jest-worker]` Use `os.availableParallelism` if available to calculate number of workers to spawn ([#&#8203;13738](https://github.com/facebook/jest/pull/13738))
-   `[@jest/globals, jest-mock]` Add `jest.replaceProperty()` that replaces property value ([#&#8203;13496](https://github.com/facebook/jest/pull/13496))
-   `[jest-haste-map]` ignore Sapling vcs directories (`.sl/`) ([#&#8203;13674](https://github.com/facebook/jest/pull/13674))
-   `[jest-resolve]` Support subpath imports ([#&#8203;13705](https://github.com/facebook/jest/pull/13705), [#&#8203;13723](https://github.com/facebook/jest/pull/13723), [#&#8203;13777](https://github.com/facebook/jest/pull/13777))
-   `[jest-runtime]` Add `jest.isolateModulesAsync` for scoped module initialization of asynchronous functions ([#&#8203;13680](https://github.com/facebook/jest/pull/13680))
-   `[jest-runtime]` Add `jest.isEnvironmentTornDown` function ([#&#8203;13741](https://github.com/facebook/jest/pull/13741))
-   `[jest-test-result]` Added `skipped` and `focused` status to `FormattedTestResult` ([#&#8203;13700](https://github.com/facebook/jest/pull/13700))
-   `[jest-transform]` Support for asynchronous `createTransformer` ([#&#8203;13762](https://github.com/facebook/jest/pull/13762))

##### Fixes

-   `[jest-environment-node]` Fix non-configurable globals ([#&#8203;13687](https://github.com/facebook/jest/pull/13687))
-   `[@jest/expect-utils]` `toMatchObject` should handle `Symbol` properties ([#&#8203;13639](https://github.com/facebook/jest/pull/13639))
-   `[jest-mock]` Fix `mockReset` and `resetAllMocks` `undefined` return value([#&#8203;13692](https://github.com/facebook/jest/pull/13692))
-   `[jest-resolve]` Add global paths to `require.resolve.paths` ([#&#8203;13633](https://github.com/facebook/jest/pull/13633))
-   `[jest-resolve]` Correct node core module detection when using `node:` specifiers ([#&#8203;13806](https://github.com/facebook/jest/pull/13806))
-   `[jest-runtime]` Support WASM files that import JS resources ([#&#8203;13608](https://github.com/facebook/jest/pull/13608))
-   `[jest-runtime]` Use the `scriptTransformer` cache in `jest-runner` ([#&#8203;13735](https://github.com/facebook/jest/pull/13735))
-   `[jest-runtime]` Enforce import assertions when importing JSON in ESM ([#&#8203;12755](https://github.com/facebook/jest/pull/12755) & [#&#8203;13805](https://github.com/facebook/jest/pull/13805))
-   `[jest-snapshot]` Make sure to import `babel` outside of the sandbox ([#&#8203;13694](https://github.com/facebook/jest/pull/13694))
-   `[jest-transform]` Ensure the correct configuration is passed to preprocessors specified multiple times in the `transform` option ([#&#8203;13770](https://github.com/facebook/jest/pull/13770))

##### Chore & Maintenance

-   `[@jest/fake-timers]` Update `@sinonjs/fake-timers` ([#&#8203;13612](https://github.com/facebook/jest/pull/13612))
-   `[docs]` Improve custom puppeteer example to prevent worker warnings ([#&#8203;13619](https://github.com/facebook/jest/pull/13619))

### [`v29.3.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2931)

[Compare Source](https://github.com/facebook/jest/compare/v29.3.0...v29.3.1)

##### Fixes

-   `[jest-config]` Do not warn about `preset` in `ProjectConfig` ([#&#8203;13583](https://github.com/facebook/jest/pull/13583))

##### Performance

-   `[jest-transform]` Defer creation of cache directory ([#&#8203;13420](https://github.com/facebook/jest/pull/13420))

### [`v29.3.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2930)

[Compare Source](https://github.com/facebook/jest/compare/v29.2.2...v29.3.0)

##### Features

-   `[jest-runtime]` Support WebAssembly (Wasm) imports in ESM modules ([#&#8203;13505](https://github.com/facebook/jest/pull/13505))

##### Fixes

-   `[jest-config]` Add config validation for `projects` option ([#&#8203;13565](https://github.com/facebook/jest/pull/13565))
-   `[jest-mock]` Treat cjs modules as objects so they can be mocked ([#&#8203;13513](https://github.com/facebook/jest/pull/13513))
-   `[jest-worker]` Throw an error instead of hanging when jest workers terminate unexpectedly ([#&#8203;13566](https://github.com/facebook/jest/pull/13566))

##### Chore & Maintenance

-   `[@jest/transform]` Update `convert-source-map` ([#&#8203;13509](https://github.com/facebook/jest/pull/13509))
-   `[docs]` Mention `toStrictEqual` in UsingMatchers docs. ([#&#8203;13560](https://github.com/facebook/jest/pull/13560))

### [`v29.2.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2922)

[Compare Source](https://github.com/facebook/jest/compare/v29.2.1...v29.2.2)

##### Fixes

-   `[@jest/test-sequencer]` Make sure sharding does not produce empty groups ([#&#8203;13476](https://github.com/facebook/jest/pull/13476))
-   `[jest-circus]` Test marked as `todo` are shown as todo when inside a focussed describe ([#&#8203;13504](https://github.com/facebook/jest/pull/13504))
-   `[jest-mock]` Ensure mock resolved and rejected values are promises from correct realm ([#&#8203;13503](https://github.com/facebook/jest/pull/13503))
-   `[jest-snapshot]` Don't highlight passing asymmetric property matchers in snapshot diff ([#&#8203;13480](https://github.com/facebook/jest/issues/13480))

##### Chore & Maintenance

-   `[docs]` Update link to Jest 28 upgrade guide in error message ([#&#8203;13483](https://github.com/facebook/jest/pull/13483))
-   `[jest-runner, jest-watcher]` Update `emittery` ([#&#8203;13490](https://github.com/facebook/jest/pull/13490))

### [`v29.2.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2921)

[Compare Source](https://github.com/facebook/jest/compare/v29.2.0...v29.2.1)

##### Features

-   `[@jest/globals, jest-mock]` Add `jest.Spied*` utility types ([#&#8203;13440](https://github.com/facebook/jest/pull/13440))

##### Fixes

-   `[jest-environment-node]` make `globalThis.performance` writable for Node 19 and fake timers ([#&#8203;13467](https://github.com/facebook/jest/pull/13467))
-   `[jest-mock]` Revert [#&#8203;13398](https://github.com/facebook/jest/pull/13398) to restore mocking of setters ([#&#8203;13472](https://github.com/facebook/jest/pull/13472))

##### Performance

-   `[*]` Use sha1 instead of sha256 for hashing ([#&#8203;13421](https://github.com/facebook/jest/pull/13421))

### [`v29.2.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2920)

[Compare Source](https://github.com/facebook/jest/compare/v29.1.2...v29.2.0)

##### Features

-   `[@jest/cli, jest-config]` A seed for the test run will be randomly generated, or set by a CLI option ([#&#8203;13400](https://github.com/facebook/jest/pull/13400))
-   `[@jest/cli, jest-config]` `--show-seed` will display the seed value in the report, and can be set via a CLI flag or through the config file ([#&#8203;13400](https://github.com/facebook/jest/pull/13400))
-   `[jest-config]` Add `readInitialConfig` utility function ([#&#8203;13356](https://github.com/facebook/jest/pull/13356))
-   `[jest-core]` Allow `testResultsProcessor` to be async ([#&#8203;13343](https://github.com/facebook/jest/pull/13343))
-   `[@jest/environment, jest-environment-node, jest-environment-jsdom, jest-runtime]` Add `getSeed()` to the `jest` object ([#&#8203;13400](https://github.com/facebook/jest/pull/13400))
-   `[expect, @&#8203;jest/expect-utils]` Allow `isA` utility to take a type argument ([#&#8203;13355](https://github.com/facebook/jest/pull/13355))
-   `[expect]` Expose `AsyncExpectationResult` and `SyncExpectationResult` types ([#&#8203;13411](https://github.com/facebook/jest/pull/13411))

##### Fixes

-   `[babel-plugin-jest-hoist]` Ignore `TSTypeQuery` when checking for hoisted references ([#&#8203;13367](https://github.com/facebook/jest/pull/13367))
-   `[jest-core]` Fix `detectOpenHandles` false positives for some special objects such as `TLSWRAP` ([#&#8203;13414](https://github.com/facebook/jest/pull/13414))
-   `[jest-mock]` Fix mocking of getters and setters on classes ([#&#8203;13398](https://github.com/facebook/jest/pull/13398))
-   `[jest-reporters]` Revert: Transform file paths into hyperlinks ([#&#8203;13399](https://github.com/facebook/jest/pull/13399))
-   `[@jest/types]` Infer type of `each` table correctly when the table is a tuple or array ([#&#8203;13381](https://github.com/facebook/jest/pull/13381))
-   `[@jest/types]` Rework typings to allow the `*ReturnedWith` matchers to be called with no argument ([#&#8203;13385](https://github.com/facebook/jest/pull/13385))

##### Chore & Maintenance

-   `[*]` Update `@babel/*` deps, resulting in slightly different stack traces for `each` ([#&#8203;13422](https://github.com/facebook/jest/pull/13422))

##### Performance

-   `[jest-runner]` Do not instrument v8 coverage data if coverage should not be collected ([#&#8203;13282](https://github.com/facebook/jest/pull/13282))

### [`v29.1.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2912)

[Compare Source](https://github.com/facebook/jest/compare/v29.1.1...v29.1.2)

##### Fixes

-   `[expect, @&#8203;jest/expect]` Revert buggy inference of argument types for `*CalledWith` and `*ReturnedWith` matchers introduced in 29.1.0 ([#&#8203;13339](https://github.com/facebook/jest/pull/13339))
-   `[jest-worker]` Add missing dependency on `jest-util` ([#&#8203;13341](https://github.com/facebook/jest/pull/13341))

### [`v29.1.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2911)

[Compare Source](https://github.com/facebook/jest/compare/v29.1.0...v29.1.1)

##### Fixes

-   `[jest-mock]` Revert [#&#8203;13145](https://github.com/facebook/jest/pull/13145) which broke mocking of transpiled ES modules

### [`v29.1.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2910)

[Compare Source](https://github.com/facebook/jest/compare/v29.0.3...v29.1.0)

##### Features

-   `[expect, @&#8203;jest/expect]` Support type inference for function parameters in `CalledWith` assertions ([#&#8203;13268](https://github.com/facebook/jest/pull/13268))
-   `[expect, @&#8203;jest/expect]` Infer type of `*ReturnedWith` matchers argument ([#&#8203;13278](https://github.com/facebook/jest/pull/13278))
-   `[@jest/environment, jest-runtime]` Allow `jest.requireActual` and `jest.requireMock` to take a type argument ([#&#8203;13253](https://github.com/facebook/jest/pull/13253))
-   `[@jest/environment]` Allow `jest.mock` and `jest.doMock` to take a type argument ([#&#8203;13254](https://github.com/facebook/jest/pull/13254))
-   `[@jest/fake-timers]` Add `jest.now()` to return the current fake clock time ([#&#8203;13244](https://github.com/facebook/jest/pull/13244), [#&#8203;13246](https://github.com/facebook/jest/pull/13246))
-   `[@jest/mock]` Add `withImplementation` method for temporarily overriding a mock ([#&#8203;13281](https://github.com/facebook/jest/pull/13281))
-   `[expect]` Export `toThrow*` matchers ([#&#8203;13328](https://github.com/facebook/jest/pull/13328))

##### Fixes

-   `[jest-circus, jest-jasmine2]` Fix error messages for Node's `assert.throes` ([#&#8203;13322](https://github.com/facebook/jest/pull/13322))
-   `[jest-haste-map]` Remove `__proto__` usage ([#&#8203;13256](https://github.com/facebook/jest/pull/13256))
-   `[jest-mock]` Improve `spyOn` typings to handle optional properties ([#&#8203;13247](https://github.com/facebook/jest/pull/13247))
-   `[jest-mock]` Fix mocking of getters and setters on classes ([#&#8203;13145](https://github.com/facebook/jest/pull/13145))
-   `[jest-snapshot]` Throw useful error when an array is passed as property matchers ([#&#8203;13263](https://github.com/facebook/jest/pull/13263))
-   `[jest-snapshot]` Prioritize parser used in the project ([#&#8203;13323](https://github.com/facebook/jest/pull/13323))
-   `[jest-transform]` Attempt to work around issues with atomic writes on Windows ([#&#8203;11423](https://github.com/facebook/jest/pull/11423))

### [`v29.0.3`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2903)

[Compare Source](https://github.com/facebook/jest/compare/v29.0.2...v29.0.3)

##### Features

-   `[@jest/environment, jest-runtime]` Allow passing a generic type argument to `jest.createMockFromModule<T>()` method ([#&#8203;13202](https://github.com/facebook/jest/pull/13202))
-   `[expect]` Expose `ExpectationResult` type ([#&#8203;13240](https://github.com/facebook/jest/pull/13240))
-   `[jest-snapshot]` Expose `Context` type ([#&#8203;13240](https://github.com/facebook/jest/pull/13240))
-   `[@jest/globals]` Add `jest.Mock` type helper ([#&#8203;13235](https://github.com/facebook/jest/pull/13235))

##### Fixes

-   `[jest-core]` Capture `execError` during `TestScheduler.scheduleTests` and dispatch to reporters ([#&#8203;13203](https://github.com/facebook/jest/pull/13203))
-   `[jest-resolve]` Make sure to resolve module paths after looking at `exports` ([#&#8203;13242](https://github.com/facebook/jest/pull/13242))
-   `[jest-resolve]` Improve error on module not found deep in the `require` stack ([#&#8203;8704](https://github.com/facebook/jest/pull/8704))
-   `[jest-snapshot]` Fix typings of snapshot matchers ([#&#8203;13240](https://github.com/facebook/jest/pull/13240))

##### Chore & Maintenance

-   `[*]` Fix inconsistent workspace prefixes ([#&#8203;13217](https://github.com/facebook/jest/pull/13217))
-   `[jest-haste-map]` Expose a minimal public API to TypeScript ([#&#8203;13023](https://github.com/facebook/jest/pull/13023))

### [`v29.0.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2902)

[Compare Source](https://github.com/facebook/jest/compare/v29.0.1...v29.0.2)

##### Features

-   `[jest-transform]` Expose `TransformFactory` type ([#&#8203;13184](https://github.com/facebook/jest/pull/13184))

##### Fixes

-   `[babel-plugin-jest-hoist]` Support imported `jest` in mock factory ([#&#8203;13188](https://github.com/facebook/jest/pull/13188))
-   `[jest-mock]` Align the behavior and return type of `generateFromMetadata` method ([#&#8203;13207](https://github.com/facebook/jest/pull/13207))
-   `[jest-runtime]` Support `jest.resetModules()` with ESM ([#&#8203;13211](https://github.com/facebook/jest/pull/13211))

### [`v29.0.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2901)

[Compare Source](https://github.com/facebook/jest/compare/v29.0.0...v29.0.1)

##### Fixes

-   `[jest-snapshot]` Pass `snapshotFormat` through when diffing snapshots ([#&#8203;13181](https://github.com/facebook/jest/pull/13181))

### [`v29.0.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2900)

[Compare Source](https://github.com/facebook/jest/compare/v28.1.3...v29.0.0)

##### Features

-   `[expect]` \[**BREAKING**] Differentiate between `MatcherContext` `MatcherUtils` and `MatcherState` types ([#&#8203;13141](https://github.com/facebook/jest/pull/13141))
-   `[jest-circus]` Add support for `test.failing.each` ([#&#8203;13142](https://github.com/facebook/jest/pull/13142))
-   `[jest-config]` \[**BREAKING**] Make `snapshotFormat` default to `escapeString: false` and `printBasicPrototype: false` ([#&#8203;13036](https://github.com/facebook/jest/pull/13036))
-   `[jest-config]` \[**BREAKING**] Remove undocumented `collectCoverageOnlyFrom` option ([#&#8203;13156](https://github.com/facebook/jest/pull/13156))
-   `[jest-environment-jsdom]` \[**BREAKING**] Upgrade to `jsdom@20` ([#&#8203;13037](https://github.com/facebook/jest/pull/13037), [#&#8203;13058](https://github.com/facebook/jest/pull/13058))
-   `[@jest/globals]` Add `jest.Mocked`, `jest.MockedClass`, `jest.MockedFunction` and `jest.MockedObject` utility types ([#&#8203;12727](https://github.com/facebook/jest/pull/12727))
-   `[jest-mock]` \[**BREAKING**] Refactor `Mocked*` utility types. `MaybeMockedDeep` and `MaybeMocked` became `Mocked` and `MockedShallow` respectively; only deep mocked variants of `MockedClass`, `MockedFunction` and `MockedObject` are exported ([#&#8203;13123](https://github.com/facebook/jest/pull/13123), [#&#8203;13124](https://github.com/facebook/jest/pull/13124))
-   `[jest-mock]` \[**BREAKING**] Change the default `jest.mocked` helper’s behavior to deep mocked ([#&#8203;13125](https://github.com/facebook/jest/pull/13125))
-   `[jest-snapshot]` \[**BREAKING**] Let `babel` find config when updating inline snapshots ([#&#8203;13150](https://github.com/facebook/jest/pull/13150))
-   `[@jest/test-result, @&#8203;jest/types]` \[**BREAKING**] Replace `Bytes` and `Milliseconds` types with `number` ([#&#8203;13155](https://github.com/facebook/jest/pull/13155))
-   `[jest-worker]` Adds `workerIdleMemoryLimit` option which is used as a check for worker memory leaks >= Node 16.11.0 and recycles child workers as required ([#&#8203;13056](https://github.com/facebook/jest/pull/13056), [#&#8203;13105](https://github.com/facebook/jest/pull/13105), [#&#8203;13106](https://github.com/facebook/jest/pull/13106), [#&#8203;13107](https://github.com/facebook/jest/pull/13107))
-   `[pretty-format]` \[**BREAKING**] Remove `ConvertAnsi` plugin in favour of `jest-serializer-ansi-escapes` ([#&#8203;13040](https://github.com/facebook/jest/pull/13040))
-   `[pretty-format]` Allow to opt out from sorting object keys with `compareKeys: null` ([#&#8203;12443](https://github.com/facebook/jest/pull/12443))

##### Fixes

-   `[jest-config]` Fix testing multiple projects with TypeScript config files ([#&#8203;13099](https://github.com/facebook/jest/pull/13099))
-   `[@jest/expect-utils]` Fix deep equality of ImmutableJS Record ([#&#8203;13055](https://github.com/facebook/jest/pull/13055))
-   `[jest-haste-map]` Increase the maximum possible file size that jest-haste-map can handle ([#&#8203;13094](https://github.com/facebook/jest/pull/13094))
-   `[jest-runtime]` Properly support CJS re-exports from dual packages ([#&#8203;13170](https://github.com/facebook/jest/pull/13170))
-   `[jest-snapshot]` Make `prettierPath` optional in `SnapshotState` ([#&#8203;13149](https://github.com/facebook/jest/pull/13149))
-   `[jest-snapshot]` Fix parsing error from inline snapshot files with `JSX` ([#&#8203;12760](https://github.com/facebook/jest/pull/12760))
-   `[jest-worker]` When a process runs out of memory worker exits correctly and doesn't spin indefinitely ([#&#8203;13054](https://github.com/facebook/jest/pull/13054))

##### Chore & Maintenance

-   `[*]` \[**BREAKING**] Drop support for Node v12 and v17 ([#&#8203;13033](https://github.com/facebook/jest/pull/13033))
-   `[docs]` Fix webpack name ([#&#8203;13049](https://github.com/facebook/jest/pull/13049))
-   `[docs]` Explicit how to set `n` for `--bail` ([#&#8203;13128](https://github.com/facebook/jest/pull/13128))
-   `[docs]` Update Enzyme URL ([#&#8203;13166](https://github.com/facebook/jest/pull/13166))
-   `[jest-leak-detector]` Remove support for `weak-napi` ([#&#8203;13035](https://github.com/facebook/jest/pull/13035))
-   `[jest-snapshot]` \[**BREAKING**] Require `rootDir` as argument to `SnapshotState` ([#&#8203;13150](https://github.com/facebook/jest/pull/13150))

### [`v28.1.3`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2813)

[Compare Source](https://github.com/facebook/jest/compare/v28.1.2...v28.1.3)

##### Features

-   `[jest-leak-detector]` Use native `FinalizationRegistry` when it exists to get rid of external C dependency ([#&#8203;12973](https://github.com/facebook/jest/pull/12973))

##### Fixes

-   `[jest-changed-files]` Fix a lock-up after repeated invocations ([#&#8203;12757](https://github.com/facebook/jest/issues/12757))
-   `[@jest/expect-utils]` Fix deep equality of ImmutableJS OrderedSets ([#&#8203;12977](https://github.com/facebook/jest/pull/12977))
-   `[jest-mock]` Add index signature support for `spyOn` types ([#&#8203;13013](https://github.com/facebook/jest/pull/13013), [#&#8203;13020](https://github.com/facebook/jest/pull/13020))
-   `[jest-snapshot]` Fix indentation of awaited inline snapshots ([#&#8203;12986](https://github.com/facebook/jest/pull/12986))

##### Chore & Maintenance

-   `[*]` Replace internal usage of `pretty-format/ConvertAnsi` with `jest-serializer-ansi-escapes` ([#&#8203;12935](https://github.com/facebook/jest/pull/12935), [#&#8203;13004](https://github.com/facebook/jest/pull/13004))
-   `[docs]` Update spyOn docs ([#&#8203;13000](https://github.com/facebook/jest/pull/13000))

### [`v28.1.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2812)

[Compare Source](https://github.com/facebook/jest/compare/v28.1.1...v28.1.2)

##### Fixes

-   `[jest-runtime]` Avoid star type import from `@jest/globals` ([#&#8203;12949](https://github.com/facebook/jest/pull/12949))

##### Chore & Maintenance

-   `[docs]` Mention that jest-codemods now supports Sinon ([#&#8203;12898](https://github.com/facebook/jest/pull/12898))

### [`v28.1.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2811)

[Compare Source](https://github.com/facebook/jest/compare/v28.1.0...v28.1.1)

##### Features

-   `[jest]` Expose `Config` type ([#&#8203;12848](https://github.com/facebook/jest/pull/12848))
-   `[@jest/reporters]` Improve `GitHubActionsReporter`s annotation format ([#&#8203;12826](https://github.com/facebook/jest/pull/12826))
-   `[@jest/types]` Infer argument types passed to `test` and `describe` callback functions from `each` tables ([#&#8203;12885](https://github.com/facebook/jest/pull/12885), [#&#8203;12905](https://github.com/facebook/jest/pull/12905))

##### Fixes

-   `[@jest/expect-utils]` Fix deep equality of ImmutableJS OrderedMaps ([#&#8203;12899](https://github.com/facebook/jest/pull/12899))
-   `[jest-docblock]` Handle multiline comments in parseWithComments ([#&#8203;12845](https://github.com/facebook/jest/pull/12845))
-   `[jest-mock]` Improve `spyOn` error messages ([#&#8203;12901](https://github.com/facebook/jest/pull/12901))
-   `[jest-runtime]` Correctly report V8 coverage with `resetModules: true` ([#&#8203;12912](https://github.com/facebook/jest/pull/12912))
-   `[jest-worker]` Make `JestWorkerFarm` helper type to include methods of worker module that take more than one argument ([#&#8203;12839](https://github.com/facebook/jest/pull/12839))

##### Chore & Maintenance

-   `[docs]` Updated docs to indicate that `jest-environment-jsdom` is a separate package [#&#8203;12828](https://github.com/facebook/jest/issues/12828)
-   `[docs]` Document the comments used by coverage providers [#&#8203;12835](https://github.com/facebook/jest/issues/12835)
-   `[docs]` Use `docusaurus-remark-plugin-tab-blocks` to format tabs with code examples ([#&#8203;12859](https://github.com/facebook/jest/pull/12859))
-   `[jest-haste-map]` Bump `walker` version ([#&#8203;12324](https://github.com/facebook/jest/pull/12324))

### [`v28.1.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2810)

[Compare Source](https://github.com/facebook/jest/compare/v28.0.3...v28.1.0)

##### Features

-   `[jest-circus]` Add `failing` test modifier that inverts the behavior of tests ([#&#8203;12610](https://github.com/facebook/jest/pull/12610))
-   `[jest-environment-node, jest-environment-jsdom]` Allow specifying `customExportConditions` ([#&#8203;12774](https://github.com/facebook/jest/pull/12774))

##### Fixes

-   `[expect]` Adjust typings of `lastCalledWith`, `nthCalledWith`, `toBeCalledWith` matchers to allow a case there a mock was called with no arguments ([#&#8203;12807](https://github.com/facebook/jest/pull/12807))
-   `[@jest/expect-utils]` Fix deep equality of ImmutableJS Lists ([#&#8203;12763](https://github.com/facebook/jest/pull/12763))
-   `[jest-core]` Do not collect `SIGNREQUEST` as open handles ([#&#8203;12789](https://github.com/facebook/jest/pull/12789))

##### Chore & Maintenance

-   `[docs]` Specified documentation about `--filter` CLI docs ([#&#8203;12799](https://github.com/facebook/jest/pull/12799))
-   `[@jest-reporters]` Move helper functions from `utils.ts` into separate files ([#&#8203;12782](https://github.com/facebook/jest/pull/12782))
-   `[jest-resolve]` Replace `process.versions.pnp` type declaration with `@types/pnpapi` devDependency ([#&#8203;12783](https://github.com/facebook/jest/pull/12783))

### [`v28.0.3`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2803)

[Compare Source](https://github.com/facebook/jest/compare/v28.0.2...v28.0.3)

##### Fixes

-   `[jest-config]` Normalize `reporters` option defined in presets ([#&#8203;12769](https://github.com/facebook/jest/pull/12769))
-   `[@jest/reporters]` Fix trailing slash in matching `coverageThreshold` key ([#&#8203;12714](https://github.com/facebook/jest/pull/12714))
-   `[jest-resolve]` Fix (experimental) ESM module mocking for re-exports ([#&#8203;12766](https://github.com/facebook/jest/pull/12766))
-   `[@jest/transform]` Throw better error if an invalid return value if encountered ([#&#8203;12764](https://github.com/facebook/jest/pull/12764))

##### Chore & Maintenance

-   `[docs]` Fix typo in `--shard` CLI docs ([#&#8203;12761](https://github.com/facebook/jest/pull/12761))

### [`v28.0.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2802)

[Compare Source](https://github.com/facebook/jest/compare/v28.0.1...v28.0.2)

##### Features

-   `[jest-worker]` Add `JestWorkerFarm` helper type ([#&#8203;12753](https://github.com/facebook/jest/pull/12753))

##### Fixes

-   `[*]` Lower Node 16 requirement to 16.10 from 16.13 due to a [Node bug](https://github.com/nodejs/node/issues/40014) that causes memory and performance issues ([#&#8203;12754](https://github.com/facebook/jest/pull/12754))

### [`v28.0.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2801)

[Compare Source](https://github.com/facebook/jest/compare/v28.0.0...v28.0.1)

##### Features

-   `[jest-resolve]` Expose `ResolverOptions` type ([#&#8203;12736](https://github.com/facebook/jest/pull/12736))

##### Fixes

-   `[expect]` Add missing dependency `jest-util` ([#&#8203;12744](https://github.com/facebook/jest/pull/12744))
-   `[jest-circus]` Improve `test.concurrent` ([#&#8203;12748](https://github.com/facebook/jest/pull/12748))
-   `[jest-resolve]` Correctly throw an error if `jsdom` test environment is used, but not installed ([#&#8203;12749](https://github.com/facebook/jest/pull/12749))

##### Chore & Maintenance

-   `[jest-serializer]` Remove deprecated module from source tree ([#&#8203;12735](https://github.com/facebook/jest/pull/12735))

### [`v28.0.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2800)

[Compare Source](https://github.com/facebook/jest/compare/v27.5.1...v28.0.0)

##### Features

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

##### Fixes

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

##### Chore & Maintenance

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

##### Performance

-   `[jest-haste-map]` \[**BREAKING**] Default to `node` crawler over shelling out to `find` if `watchman` is not enabled ([#&#8203;12320](https://github.com/facebook/jest/pull/12320))

### [`v27.5.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2751)

[Compare Source](https://github.com/facebook/jest/compare/v27.5.0...v27.5.1)

##### Features

-   `[jest-config]` Support comments in JSON config file ([#&#8203;12316](https://github.com/facebook/jest/pull/12316))
-   `[pretty-format]` Expose `ConvertAnsi` plugin ([#&#8203;12308](https://github.com/facebook/jest/pull/12308))

##### Fixes

-   `[expect]` Add type definitions for asymmetric `closeTo` matcher ([#&#8203;12304](https://github.com/facebook/jest/pull/12304))
-   `[jest-cli]` Load binary via exported API ([#&#8203;12315](https://github.com/facebook/jest/pull/12315))
-   `[jest-config]` Replace `jsonlint` with `parse-json` ([#&#8203;12316](https://github.com/facebook/jest/pull/12316))
-   `[jest-repl]` Make module importable ([#&#8203;12311](https://github.com/facebook/jest/pull/12311) & [#&#8203;12315](https://github.com/facebook/jest/pull/12315))

##### Chore & Maintenance

-   `[*]` Avoid anonymous default exports ([#&#8203;12313](https://github.com/facebook/jest/pull/12313))

### [`v27.5.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2750)

[Compare Source](https://github.com/facebook/jest/compare/v27.4.7...v27.5.0)

##### Features

-   `[expect]` Add asymmetric matcher `expect.closeTo` ([#&#8203;12243](https://github.com/facebook/jest/pull/12243))
-   `[jest-mock]` Added `mockFn.mock.lastCall` to retrieve last argument ([#&#8203;12285](https://github.com/facebook/jest/pull/12285))

##### Fixes

-   `[expect]` Add a fix for `.toHaveProperty('')` ([#&#8203;12251](https://github.com/facebook/jest/pull/12251))
-   `[jest-each, @&#8203;jest/globals]` Allow passing `ReadonlyArray` type of a table to `describe.each` and `test.each` ([#&#8203;12297](https://github.com/facebook/jest/pull/12297))
-   `[@jest/globals]` Add missing `options` argument to `jest.doMock` typing ([#&#8203;12292](https://github.com/facebook/jest/pull/12292))
-   `[jest-environment-node]` Add `atob` and `btoa` ([#&#8203;12269](https://github.com/facebook/jest/pull/12269))
-   `[jest-matcher-utils]` Correct diff for expected asymmetric matchers ([#&#8203;12264](https://github.com/facebook/jest/pull/12264))
-   `[jest-message-util]` Fix `.getTopFrame()` (and `toMatchInlineSnapshot()`) with `mjs` files ([#&#8203;12277](https://github.com/facebook/jest/pull/12277))

##### Chore & Maintenance

-   `[*]` Update `graceful-fs` to `^4.2.9` ([#&#8203;11749](https://github.com/facebook/jest/pull/11749))

##### Performance

-   `[jest-resolve]` perf: skip error creation on not found `stat` calls ([#&#8203;11749](https://github.com/facebook/jest/pull/11749))

### [`v27.4.7`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2747)

[Compare Source](https://github.com/facebook/jest/compare/v27.4.6...v27.4.7)

##### Fixes

-   `jest-config` Add missing `@babel/core` dependency ([#&#8203;12216](https://github.com/facebook/jest/pull/12216))

### [`v27.4.6`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#&#8203;2746)

[Compare Source](https://github.com/facebook/jest/compare/v27.4.5...v27.4.6)

##### Fixes

-   `[jest-environment-node]` Add `AbortSignal` ([#&#8203;12157](https://github.com/facebook/jest/pull/12157))
-   `[jest-environment-node]` Add Missing node global `performance` ([#&#8203;12002](https://github.com/facebook/jest/pull/12002))
-   `[jest-runtime]` Handle missing `mocked` property ([#&#8203;12213](https://github.com/facebook/jest/pull/12213))
-   `[@jest/transform]` Update dependency package `pirates` to 4.0.4 ([#&#8203;12002](https://github.com/facebook/jest/pull/12002))

##### Performance

-   `jest-config` perf: only register ts-node once when loading TS config files ([#&#8203;12160](https://github.com/facebook/jest/pull/12160))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC43NC4yIiwidXBkYXRlZEluVmVyIjoiMzQuNzQuMiJ9-->

Co-authored-by: Renovate Bot <renovate@vylpes.com>
Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/vylbot-app/pulls/241
Co-authored-by: RenovateBot <renovate@vylpes.com>
Co-committed-by: RenovateBot <renovate@vylpes.com>
@github-actions
Copy link

This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Please note this issue tracker is not a help forum. We recommend using StackOverflow or our discord channel for questions.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 29, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature]: Replace property value in tests
6 participants