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

Add --detectOpenHandles flag #6130

Merged
merged 21 commits into from
May 6, 2018
Merged

Add --detectOpenHandles flag #6130

merged 21 commits into from
May 6, 2018

Conversation

SimenB
Copy link
Member

@SimenB SimenB commented May 4, 2018

Summary

Tracking down why Jest fails to exit at the end of a test run is a pain. Using tools like why-is-node-running is possible, but it requires some setup, and returns a ton of false positives. Baking it directly into Jest allows us to perform filtering on the output, to make sure only the relevant pieces are shown to the user.

This filtering is in this PR implemented as "does this._execModule( exist in the trace". This basically means a module executed by jest-runtime, but not Jest internals.

The following file will keep Jest running forever, because the server is never closed down:

require('express')().listen(3000);

With this PR, Jest will have the following output:

image

I added the data to testResults so other tooling should be able to report it as they wish as well.

EDIT: With some colors and relative paths:
image

Test plan

I haven't added any tests yet, as I'd like to get some feedback that this is acceptable before spending more time on it.

@@ -39,6 +40,9 @@
"which": "^1.2.12",
"yargs": "^11.0.0"
},
"optionalDependencies": {
"why-is-node-running": "^2.0.2"
Copy link
Member Author

Choose a reason for hiding this comment

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

this needs Node 8 (uses async hooks), hoping sticking it in optionalDependencies is enough

Copy link
Member Author

Choose a reason for hiding this comment

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

if not, we could do the same thing detectLeaks does - require the user to install it themselves

Copy link
Collaborator

Choose a reason for hiding this comment

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

What was the reason we didn't put weak in optional dependencies? Package managers tried to install it anyway?

Copy link
Member Author

Choose a reason for hiding this comment

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

The output was horrendous when it failed, and windows installs still crashed. See #5169

const message =
chalk.red(
'\nJest has detected the following ' +
`${openHandles.length} open handles potentially keeping Jest from ` +
Copy link
Collaborator

Choose a reason for hiding this comment

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

Maybe we can use pluralize? and rephrase to:

Jest has detected 1 open handle potentially preventing it from exiting:

Copy link
Member Author

Choose a reason for hiding this comment

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

We have our own pluralize in jest-matcher-utils. I can move it to jest-util, perhaps?

Copy link
Collaborator

Choose a reason for hiding this comment

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

There's one in jest-cli too. Feel free to clean it up :D

Copy link
Member Author

Choose a reason for hiding this comment

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

ah didn't know about that one. I'll be lazy and just use it then

@@ -67,26 +68,75 @@ const getTestPaths = async (
});
};

function formatWhyRunning(whyRunning) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

maybe we can extract why-running-related logic to separate file?

Copy link
Member Author

Choose a reason for hiding this comment

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

yeah, good call. done

return entry.split('\n').some(l => l.includes('this._execModule('));
})
.map(entry => {
const [title, ...lines] = entry.split('\n');
Copy link
Collaborator

Choose a reason for hiding this comment

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

Dropping Node4 for good <3

Copy link
Member Author

Choose a reason for hiding this comment

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

I think we transpile this, but yeah 🎉

if (whyRunning) {
runResults.openHandles = formatWhyRunning(whyRunning);
} else {
runResults.openHandles = [];
Copy link
Collaborator

Choose a reason for hiding this comment

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

we can get rid of this check by assigning default value to whyRunning

Copy link
Member Author

Choose a reason for hiding this comment

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

done

Copy link
Member Author

Choose a reason for hiding this comment

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

meh, it gave me lots of flow issues

Copy link
Collaborator

@thymikee thymikee left a comment

Choose a reason for hiding this comment

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

LGTM, this is great 👍

.map(({file, line}) => {
const relativeTestPath = slash(
path.relative(globalConfig.rootDir, file),
);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Do we want to slash this path? I'm not sure if it's possible to cmd/ctrl+click on Windows terminals, but this will probably not help. Just a guess though

Copy link
Member Author

Choose a reason for hiding this comment

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

we do the same with the normal stack traces. I can drop it here, if you think that's better?

@codecov-io
Copy link

codecov-io commented May 4, 2018

Codecov Report

Merging #6130 into master will decrease coverage by 0.16%.
The diff coverage is 31.7%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #6130      +/-   ##
==========================================
- Coverage   64.36%   64.19%   -0.17%     
==========================================
  Files         218      219       +1     
  Lines        8393     8423      +30     
  Branches        3        4       +1     
==========================================
+ Hits         5402     5407       +5     
- Misses       2990     3015      +25     
  Partials        1        1
Impacted Files Coverage Δ
.../src/legacy_code_todo_rewrite/jest_adapter_init.js 0% <ø> (ø) ⬆️
packages/jest-config/src/index.js 31.37% <ø> (ø) ⬆️
packages/jest-config/src/defaults.js 92.85% <ø> (ø) ⬆️
packages/jest-cli/src/test_result_helpers.js 12.5% <ø> (ø) ⬆️
packages/jest-cli/src/test_scheduler.js 37.89% <0%> (ø) ⬆️
packages/jest-cli/src/get_node_handles.js 0% <0%> (ø)
packages/jest-config/src/normalize.js 93.77% <100%> (ø) ⬆️
packages/jest-cli/src/run_jest.js 69.41% <63.63%> (-0.59%) ⬇️
packages/jest-message-util/src/index.js 80.76% <83.33%> (-0.34%) ⬇️
... and 3 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 80c6c15...1c8c356. Read the comment docs.

@@ -4,8 +4,10 @@
"version": "22.4.2",
"main": "build/jest.js",
"dependencies": {
"@babel/highlight": "^7.0.0-beta.46",
Copy link
Member Author

Choose a reason for hiding this comment

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

this is already in our tree as @babel/codeframe uses it

"ansi-escapes": "^3.0.0",
"chalk": "^2.0.1",
"easy-table": "^1.1.1",
Copy link
Member Author

Choose a reason for hiding this comment

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

seems small enough, happy to take suggestions about others

Copy link
Member Author

Choose a reason for hiding this comment

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

or other ideas on how to print the info

Copy link
Collaborator

Choose a reason for hiding this comment

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

Stack trace with code frame maybe, but this is OK for now

Copy link
Member Author

Choose a reason for hiding this comment

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

Ooooh, faking a stack trace with this info, I like the idea! I'll give it a whack later today

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

@thymikee using code frame:
image

It loses each line, but I think that's fine?

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

I was having issues with the sourcemaps, so I ended up just inlining the whole module. That simplifies the code, as I don't have to care about the formatting from them. And we suddenly get function names etc.

Looks like this:
image

Note that this is only correct with sourcemaps, so we need to re-apply #5945, otherwise it'll point to the wrong stuff

@cpojer
Copy link
Member

cpojer commented May 4, 2018

Ok, this is incredibly awesome. I really love this feature, thanks for working on it. Before we merge it, here are a two things to consider:

  • Can we turn this on by default? Right now, Jest wouldn't quit so this shouldn't make it worse and do nothing in the normal case. --forceExit can be used to skip the behavior.
  • Can we make this look as pretty as a normal assertion failure in Jest? That way people will actually pay attention and it will look as polished as everything else.

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

Can we turn this on by default? Right now, Jest wouldn't quit so this shouldn't make it worse and do nothing in the normal case. --forceExit can be used to skip the behavior.

Unfortunately, the overhead of async_hooks is quite high - up to 30% perf hit for promise-heavy applications (see https://github.com/bmeurer/async-hooks-performance-impact). So I think it should be behind a flag at least until that is better.

Can we make this look as pretty as a normal assertion failure in Jest? That way people will actually pay attention and it will look as polished as everything else.

It's now a code frame, so kinda looks like assertion errors. Any way in particular you think it could look more like an assertion error?

@cpojer
Copy link
Member

cpojer commented May 4, 2018

Oh, that's quite a shame. Any way we can upsell this feature if Jest keeps hanging, like re-run with --detectOpenHandlers? Otherwise people won't be able to find out about this awesome feature.

The red text followed by the TCPSERVERWRAP and the two newlines afterwards looks odd. Could we make it look like

* (bullet) Message

Additional context

codeframe
stack trace

with the same newlines and indentation as assertion errors?

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

Any way we can upsell this feature if Jest keeps hanging, like re-run with --detectOpenHandlers? Otherwise people won't be able to find out about this awesome feature.

Pushed a 1000 ms timeout if tests still hasn't quit, looks like so:
image

If --forceExit is used, it looks like so:
image

The red text followed by the TCPSERVERWRAP and the two newlines afterwards looks odd.

It gets kinda wonky when you have multiple handles:
image

How do you think that should look like? I wonder if multiple bulletpoints etc might be confusing. Maybe not, though

@cpojer
Copy link
Member

cpojer commented May 4, 2018

Love the iterations!

  • The 1s timeout, does that keep Jest alive for one more second or will it still exit fast if there are no handlers?
  • I think we can treat it like multiple test failures, so having multiple bullets per open handle seems fine with me.

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

The 1s timeout, does that keep Jest alive for one more second or will it still exit fast if there are no handlers?

The .unref calls makes it not keep the process open. https://nodejs.org/api/timers.html#timers_timeout_unref

I think we can treat it like multiple test failures, so having multiple bullets per open handle seems fine with me.

Aight, I'll whip something together 🙂

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

Like this?
image

@cpojer
Copy link
Member

cpojer commented May 4, 2018

Hell yeah.

@SimenB
Copy link
Member Author

SimenB commented May 4, 2018

Awesome. I'll try to add some tests - I suppose sending sigint in the integration test should work

@rickhanlonii
Copy link
Member

Beauty!

@SimenB SimenB force-pushed the why-running branch 4 times, most recently from 1f4309b to e93e633 Compare May 5, 2018 07:33
wopian referenced this pull request in wopian/eslint-config-wopian May 25, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `~22.4.0` to `~23.0.0`



<details>
<summary>Release Notes</summary>

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...614f739)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality`
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules
  ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially
  track down handles keeping it open after tests are complete.
  ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each`
  ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory
  ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore
  ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries`
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot
  name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process
  method if createTransformer method was defined.
  ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent
  ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions
  ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers
   ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage`
  ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner
  ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s
  ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls.
  ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch
  mode, `--onlyChanged`, `--findRelatedTests` and more
  ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to
  `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and
  descriptive errors to `it`/ `test` for invalid arguments
  ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function
  ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report
  ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from
  promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc.,
  [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers
  ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain
  ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property
  ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property
  ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher
  ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that
  they can not run in parallel
  ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases
  ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements
  ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner
  ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors
  ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames
  ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual
  ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers
  ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries
  ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages
  ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings
  ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers
  ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names
  ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock
  ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins.
  ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality
  ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed
  tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them
  ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable
  ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces
  ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions`
  causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules
  after the test environment is torn down
  ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder`
  ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch
  runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook`
  ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch
  mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome
  ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode
  ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use
  `globalSetup`/`globalTeardown` file that doesn't export a function.
  ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for
  RegExps created inside of a different VM
  ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle
  symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option
  ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same
  config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation
  ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll
  ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files
  ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection
  ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better
  ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context`
  components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string
  ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows
  ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay
  ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".".
  ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the
  configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs
  ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys
  regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements
  ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json
  defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to
  `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own
  ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean
  resources for the top suite the same way as for all of the children suites
  ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer
  ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output
  ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins
  ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)`
  ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset
  ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website
  ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4
  ([##&#8203;5733](https://github.com/facebook/jest/pull/#&#8203;5733))
* `[docs]` Improve Snapshot Testing Guide
  ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and
  `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack
  traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
wopian referenced this pull request in wopian/kitsu May 25, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `~22.4.0` to `~23.0.0`



<details>
<summary>Release Notes</summary>

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...v23.0.0)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality`
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules
  ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially
  track down handles keeping it open after tests are complete.
  ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each`
  ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory
  ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore
  ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries`
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot
  name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process
  method if createTransformer method was defined.
  ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent
  ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions
  ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers
   ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage`
  ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner
  ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s
  ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls.
  ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch
  mode, `--onlyChanged`, `--findRelatedTests` and more
  ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to
  `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and
  descriptive errors to `it`/ `test` for invalid arguments
  ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function
  ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report
  ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from
  promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc.,
  [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers
  ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain
  ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property
  ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property
  ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher
  ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that
  they can not run in parallel
  ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases
  ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements
  ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner
  ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors
  ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames
  ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual
  ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers
  ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries
  ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages
  ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings
  ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers
  ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names
  ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock
  ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins.
  ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality
  ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed
  tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them
  ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable
  ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces
  ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions`
  causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules
  after the test environment is torn down
  ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder`
  ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch
  runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook`
  ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch
  mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome
  ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode
  ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use
  `globalSetup`/`globalTeardown` file that doesn't export a function.
  ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for
  RegExps created inside of a different VM
  ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle
  symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option
  ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same
  config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation
  ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll
  ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files
  ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection
  ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better
  ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context`
  components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string
  ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows
  ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay
  ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".".
  ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the
  configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs
  ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys
  regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements
  ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json
  defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to
  `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own
  ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean
  resources for the top suite the same way as for all of the children suites
  ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer
  ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output
  ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins
  ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)`
  ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset
  ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website
  ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4
  ([##&#8203;5733](https://github.com/facebook/jest/pull/#&#8203;5733))
* `[docs]` Improve Snapshot Testing Guide
  ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and
  `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack
  traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
calebeby referenced this pull request in Pigmice2733/scouting-frontend May 30, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `v22.4.3` to `v23.0.1`



<details>
<summary>Release Notes</summary>

### [`v23.0.1`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2301)
[Compare Source](jestjs/jest@v23.0.0...3a3b4e3)
##### Chore & Maintenance

* `[jest-jasemine2]` Add dependency on jest-each ([#&#8203;6308](`https://github.com/facebook/jest/pull/6308`))
* `[jest-each]` Move jest-each into core Jest ([#&#8203;6278](`https://github.com/facebook/jest/pull/6278`))
* `[examples]` Update typescript example to using ts-jest ([#&#8203;6260](`https://github.com/facebook/jest/pull/6260`))
##### Fixes

* `[pretty-format]` Serialize inverse asymmetric matchers correctly ([#&#8203;6272](`https://github.com/facebook/jest/pull/6272`))

---

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...v23.0.0)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality` ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially track down handles keeping it open after tests are complete. ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each` ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries` ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process method if createTransformer method was defined. ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers  ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage` ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls. ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch mode, `--onlyChanged`, `--findRelatedTests` and more ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and descriptive errors to `it`/ `test` for invalid arguments ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc., [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that they can not run in parallel ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins. ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions` causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules after the test environment is torn down ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder` ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook` ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use `globalSetup`/`globalTeardown` file that doesn't export a function. ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for RegExps created inside of a different VM ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context` components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".". ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean resources for the top suite the same way as for all of the children suites ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)` ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4 ([#&#8203;5733](`https://github.com/facebook/jest/pull/5733`))
* `[docs]` Improve Snapshot Testing Guide ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

### [`v22.4.4`](jestjs/jest@6851d8b...v22.4.4)
[Compare Source](jestjs/jest@6851d8b...v22.4.4)


---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.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 May 12, 2021
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.

6 participants