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

Upgrade jest to version 24.0.0 #587

Open
wants to merge 22 commits into
base: master
from

Conversation

Projects
None yet
2 participants
@depfu
Copy link
Contributor

depfu bot commented Jan 26, 2019

Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request.

What changed?

✳️ jest (^23.0.0 → ^24.0.0) · Repo · Changelog

Release Notes

24.0.0 (from changelog)

Features

  • [jest-each] [BREAKING] Add primitive pretty printing for interpolated titles (#7694)
  • [jest-runtime] Add jest.isolateModules for scoped module initialization (#6701)
  • [jest-diff] [BREAKING] Support diffing numbers and booleans instead of returning null for different ones (#7605)
  • [jest-diff] [BREAKING] Replace diff with diff-sequences package (#6961)
  • [jest-cli] [BREAKING] Only set error process error codes when they are non-zero (#7363)
  • [jest-config] [BREAKING] Deprecate setupTestFrameworkScriptFile in favor of new setupFilesAfterEnv (#7119)
  • [jest-worker] [BREAKING] Add functionality to call a setup method in the worker before the first call and a teardown method when ending the farm (#7014)
  • [jest-config] [BREAKING] Set default notifyMode to failure-change (#7024)
  • [jest-haste-map] [BREAKING] Remove support for @providesModule (#6104)
  • [jest-haste-map] [BREAKING] Replace internal data structures to improve performance (#6960)
  • [jest-haste-map] [BREAKING] Use relative paths to allow remote caching (#7020)
  • [jest-haste-map] [BREAKING] Remove name from hash in HasteMap.getCacheFilePath (#7218)
  • [babel-preset-jest] [BREAKING] Export a function instead of an object for Babel 7 compatibility (#7203)
  • [jest-haste-map] [BREAKING] Expose relative paths when getting the file iterator (#7321)
  • [jest-cli] [BREAKING] Run code transforms over global{Setup,Teardown} (#7562)
  • [jest-haste-map] Add hasteFS.getSize(path) (#7580)
  • [jest-cli] Print version ending in -dev when running a local Jest clone (#7582)
  • [jest-cli] Add Support for globalSetup and globalTeardown in projects (#6865)
  • [jest-runtime] Add extraGlobals to config to load extra global variables into the execution vm (#7454)
  • [jest-util] Export specialChars containing Unicode characters and ANSI escapes for console output (#7532)
  • [jest-config] Handle typescript (ts and tsx) by default (#7533)
  • [jest-validate] Add support for comments in package.json using a "//" key (#7295)
  • [jest-config] Add shorthand for watch plugins and runners (#7213)
  • [jest-jasmine2/jest-circus/jest-cli] Add test.todo (#6996)
  • [pretty-format] Option to not escape strings in diff messages (#5661)
  • [jest-haste-map] Add getFileIterator to HasteFS for faster file iteration (#7010)
  • [jest-config] Add readConfigs function, previously in jest-cli (#7096)
  • [jest-snapshot] Enable configurable snapshot paths (#6143)
  • [pretty-format] Support HTMLCollection and NodeList in DOMCollection plugin (#7125)
  • [jest-runtime] Pass the normalized configuration to script transformers (#7148)
  • [expect] Improve report when assertion fails, part 3 (#7152)
  • [jest-runtime] If require fails without a file extension, print all files that match with one (#7160)
  • [jest-haste-map] Make ignorePattern optional (#7166)
  • [jest-haste-map] Add getCacheFilePath to get the path to the cache file for a HasteMap instance (#7217)
  • [jest-runtime] Remove cacheDirectory from ignorePattern for HasteMap if not necessary (#7166)
  • [jest-validate] Add syntax to validate multiple permitted types (#7207)
  • [jest-config] Accept an array as as well as a string for testRegex([#7209]#7209))
  • [expect/jest-matcher-utils] Improve report when assertion fails, part 4 (#7241)
  • [expect/jest-matcher-utils] Improve report when assertion fails, part 5 (#7557)
  • [expect] Check constructor equality in .toStrictEqual() (#7005)
  • [jest-util] Add jest.getTimerCount() to get the count of scheduled fake timers (#7285)
  • [jest-config] Add dependencyExtractor option to use a custom module to extract dependencies from files (#7313, #7349, #7350, #7362)
  • [jest-haste-map] Accept a getCacheKey method in hasteImplModulePath modules to reset the cache when the logic changes (#7350)
  • [jest-config] Add haste.computeSha1 option to compute the sha-1 of the files in the haste map (#7345)
  • [expect] expect(Infinity).toBeCloseTo(Infinity) Treats Infinity as equal in toBeCloseTo matcher (#7405)
  • [jest-worker] Add node worker-thread support to jest-worker (#7408)
  • [jest-config] Allow bail setting to be configured with a number allowing tests to abort after n of failures (#7335)
  • [jest-config] Allow % based configuration of --max-workers (#7494)
  • [jest-runner] Instantiate the test environment class with the current testPath (#7442)
  • [jest-config] Always resolve jest-environment-jsdom from jest-config (#7476)
  • [expect] Improve report when assertion fails, part 6 (#7621)
  • [jest-worker] Add enableWorkerThreads option to explicitly opt-in to worker_threads if available (#7681)

Fixes

  • [expect] Accept inherited properties in toHaveProperty matcher (#7686)
  • [jest-diff] Do not claim that -0 and 0 have no visual difference (#7605)
  • [jest-mock] Fix automock for numeric function names (#7653)
  • [jest-config] Ensure existsSync is only called with a string parameter (#7607)
  • [expect] toStrictEqual considers sparseness of arrays. (#7591)
  • [jest-cli] Fix empty coverage data for untested files (#7388)
  • [jest-cli] [BREAKING] Do not use text-summary coverage reporter by default if other reporters are configured (#7058)
  • [jest-mock] [BREAKING] Fix bugs with mock/spy result tracking of recursive functions (#6381)
  • [jest-haste-map] [BREAKING] Recover files correctly after haste name collisions are fixed (#7329)
  • [pretty-format] [BREAKING] Omit non-enumerable symbol properties (#7448)
  • [*] [BREAKING] Upgrade to Babel 7, dropping support for Babel 6 (#7016)
  • [jest-cli] Avoid watch mode causing bad terminal behavior in some cases (#7523)
  • [jest-runner/jest-worker] Fix missing console output in verbose mode (#6871)
  • [expect] Standardize file naming in expect (#7306)
  • [jest-each] Add empty array validation check (#7249)
  • [jest-cli] Interrupt tests if interactive watch plugin key is pressed (#7222)
  • [jest-each] Add each array validation check (#7033)
  • [jest-haste-map] Do not visit again files with the same sha-1 (#6990)
  • [jest-jasmine2] Fix memory leak in Error objects hold by the framework (#6965)
  • [jest-haste-map] Fixed Haste whitelist generation for scoped modules on Windows (#6980)
  • [jest-mock] Fix inheritance of static properties and methods in mocks (#7003)
  • [jest-mock] Fix mocking objects without Object.prototype in their prototype chain (#7003)
  • [jest-mock] Check _isMockFunction is true rather than truthy on potential mocks (#7017)
  • [jest-cli] Update jest-cli to show git ref in message when using changedSince (#7028)
  • [jest-jasmine2] Fix crash when test return Promise rejected with null (#7049)
  • [jest-runtime] Check _isMockFunction is true rather than truthy on potential global mocks (#7017)
  • [jest-jasmine] Show proper error message from async assert errors (#6821)
  • [jest-jasmine2] Better error message when a describe block is empty (#6372)
  • [jest-jasmine2] Pending calls inside async tests are reported as pending not failed (#6782)
  • [jest-circus] Better error message when a describe block is empty (#6372)
  • [jest-jasmine2] Add missing testLocationResults for xit and fit(#6482)
  • [expect] Return false from asymmetric matchers if received value isn’t string (#7107)
  • [jest-cli] Fix unhandled error when a bad revision is provided to changedSince (#7115)
  • [jest-config] Moved dynamically assigned cwd from jest-cli to default configuration in jest-config (#7146)
  • [jest-config] Fix getMaxWorkers on termux (#7154)
  • [jest-runtime] Throw an explicit error if js is missing from moduleFileExtensions (#7160)
  • [jest-runtime] Fix missing coverage when using negative glob pattern in testMatch (#7170)
  • [*] Ensure maxWorkers is at least 1 (was 0 in some cases where there was only 1 CPU) (#7182)
  • [jest-runtime] Fix transform cache invalidation when requiring a test file from multiple projects (#7186)
  • [jest-changed-files] Return correctly the changed files when using lastCommit=true on Mercurial repositories (#7228)
  • [babel-jest] Cache includes babel environment variables (#7239)
  • [jest-config] Use strings instead of RegExp instances in normalized configuration (#7251)
  • [jest-circus] Make sure to display real duration even if time is mocked (#7264)
  • [expect] Improves the failing message for toStrictEqual matcher. (#7224)
  • [expect] Improves the failing message for toEqual matcher. (#7325)
  • [jest-resolve] Fix not being able to resolve path to mapped file with custom platform (#7312)
  • [jest-message-util] Improve parsing of error messages for unusually formatted stack traces (#7319)
  • [jest-runtime] Ensure error message text is not lost on errors with code frames (#7319)
  • [jest-haste-map] Fix to resolve path that is start with words same as rootDir (#7324)
  • [expect] Fix toMatchObject matcher when used with Object.create(null) (#7334)
  • [jest-haste-map] Remove legacy condition for duplicate module detection (#7333)
  • [jest-haste-map] Fix require detection with trailing commas and ignore import typeof modules (#7385)
  • [jest-cli] Fix to set prettierPath via config file (#7412)
  • [expect] Test more precisely for class instance getters (#7477)
  • [jest-cli] Support dashed args (#7497)
  • [jest-cli] Fix to run in band tests if watch mode enable when runInBand arg used (#7518)
  • [jest-runtime] Fix mistake as test files when run coverage issue. (#7506)
  • [jest-cli] print info about passWithNoTests flag (#7309)
  • [pretty-format] Omit unnecessary symbol filter for object keys (#7457)
  • [jest-runtime] Fix requireActual on node_modules with mock present (#7404)
  • [jest-resolve] Fix isBuiltinModule to support versions of node without module.builtinModules (#7565)
  • [babel-jest] Set cwd to be resilient to it changing during the runtime of the tests (#7574)
  • [jest-snapshot] Write and read snapshots from disk even if fs is mocked (#7080)
  • [jest-config] Normalize config.cwd and config.rootDir using `realpath (#7598)
  • [jest-environment-node] Fix buffer property is not ArrayBuffer issue. (#7626)
  • [babel-plugin-jest-hoist] Ignore TS type annotations when looking for out-of-scope references (#7641)
  • [jest-config] Add name to project if one does not exist to pick correct resolver (#5862)
  • [jest-runtime] Pass watchPathIgnorePatterns to Haste instance (#7585)
  • [jest-runtime] Resolve mock files via Haste when using require.resolve (#7687)

Chore & Maintenance

  • [*] [BREAKING] Require Node.js 6+ for all packages (#7258)
  • [jest-util] [BREAKING] Remove long-deprecated globals for fake timers (#7285)
  • [*] [BREAKING] Upgrade to Micromatch 3 (#6650)
  • [*] [BREAKING] Remove regenerator-runtime injection (#7595)
  • [jest-worker] Disable worker_threads to avoid issues with libraries to ready for it (#7681)
  • [docs] Fix message property in custom matcher example to return a function instead of a constant. (#7426)
  • [jest-circus] Standardize file naming in jest-circus (#7301)
  • [docs] Add synchronous test.each setup (#7150)
  • [docs] Add this.extend to the Custom Matchers API reference (#7130)
  • [docs] Fix default value for coverageReporters value in configuration docs (#7126)
  • [docs] Add link for jest-extended in expect docs (#7078)
  • [jest-util] Add ErrorWithStack class (#7067)
  • [docs] Document --runTestsByPath CLI parameter (#7046)
  • [docs] Fix babel-core installation instructions (#6745)
  • [docs] Explain how to rewrite assertions to avoid large irrelevant diff (#6971)
  • [examples] add example using Babel 7 (#6983)
  • [docs] Replace shallow equality with referential identity in ExpectAPI.md (#6991)
  • [jest-changed-files] Refactor to use execa over child_process (#6987)
  • [*] Bump dated dependencies (#6978)
  • [scripts] Don’t make empty sub-folders for ignored files in build folder (#7001)
  • [docs] Add missing export statement in puppeteer_environment.js under docs/Puppeteer.md (#7127)
  • [docs] Removed useless expect.assertions in TestingAsyncCode.md (#7131)
  • [docs] Remove references to @providesModule which isn't supported anymore (#7147)
  • [docs] Update setupFiles documentation for clarity (#7187)
  • [docs] Change require.require* to jest.require* (#7210)
  • [jest-circus] Add readme.md (#7198)
  • [jest-editor-support] Remove from the repository (#7232)
  • [jest-test-typescript-parser] Remove from the repository (#7232)
  • [tests] Free tests from the dependency on value of FORCE_COLOR (#6585)
  • [*] Add babel plugin to make sure Jest is unaffected by fake Promise implementations (#7225)
  • [docs] Add correct default value for testUrl config option (#7277)
  • [docs] Remove duplicate code in MockFunctions (#7297)
  • [*] Add check for Facebook copyright headers on CI (#7370)
  • [*] Update Facebook copyright headers (#7589)
  • [jest-haste-map] Refactor dependencyExtractor and tests (#7385)
  • [docs] Clearify conditional setting of NODE_ENV (#7369)
  • [docs] Clarify conditional setting of NODE_ENV (#7369)
  • [*] Standardize file names (#7316, #7266, #7238, #7314, #7467, #7464), #7471)
  • [docs] Add testPathIgnorePatterns in CLI documentation (#7440)
  • [docs] Removed misleading text about describe() grouping together tests into a test suite (#7434)
  • [diff-sequences] Add performance benchmark to package (#7603)
  • [*] Replace as many Object.assign with object spread as possible (#7627)
  • [ci] Initial support for Azure Pipelines (#7556)

Performance

  • [jest-mock] Improve getType function performance. (#7159)

Does any of this look wrong? Please let us know.

Commits

See the full diff on Github. The new version differs by more commits than we can show here.


Depfu Status

Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.

All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)

@depfu depfu bot added the depfu label Jan 26, 2019

@papandreou

This comment has been minimized.

Copy link
Member

papandreou commented Jan 26, 2019

Looks like a problem with jest's babel integration, does anyone have an idea?

@sunesimonsen

This comment has been minimized.

Copy link
Member

sunesimonsen commented Jan 27, 2019

I can try to take a look.

@sunesimonsen

This comment has been minimized.

Copy link
Member

sunesimonsen commented Jan 27, 2019

@papandreou it could look like we are behind on Babel somewhere:

Plugin/Preset files are not allowed to export objects, only functions. In /home/travis/build/unexpectedjs/unexpected/node_modules/babel-preset-es2015-without-strict/index.js

My guess is that we will be forced to upgrade to Babel 7 soon.

@sunesimonsen

This comment has been minimized.

Copy link
Member

sunesimonsen commented Jan 27, 2019

There is a breaking change around presets and Babel 7

[babel-preset-jest] [BREAKING] Export a function instead of an object for Babel 7 compatibility (#7203)

See https://github.com/facebook/jest/blob/master/CHANGELOG.md#2400

@papandreou

This comment has been minimized.

Copy link
Member

papandreou commented Jan 27, 2019

Ah, I thought we were fully up to date with that whole toolchain. I think that explains all the trouble I had with getting selective node_modules transpilation working on #446

@papandreou papandreou force-pushed the depfu/update/npm/jest-24.0.0 branch from 20f02cc to b1df7ba Jan 28, 2019

Revert "setupTestFrameworkScriptFile => setupFilesAfterEnv to fix jes…
…t deprecation warning"

This reverts commit 8304148.
@papandreou

This comment has been minimized.

Copy link
Member

papandreou commented Jan 28, 2019

I've made some progress by upgrading to babel 7 and switching to @babel/env. There are still some things that don't work, I think we have to wait for facebook/jest@9243e69 to make it to a release.

Try to set modules:false in the @babel/env config
This is an attempt to fix this error:

  Variable undefined in strict mode
  at build/test/promisePolyfill.js:5:3

  ReferenceError: Variable undefined in strict mode
     at Global code (build/test/promisePolyfill.js:5:3)

Inspired by: https://stackoverflow.com/questions/46271369/remove-global-use-strict-from-babel-preset-env

@papandreou papandreou force-pushed the depfu/update/npm/jest-24.0.0 branch from 1bb21c3 to a6d36ee Jan 28, 2019

@papandreou

This comment has been minimized.

Copy link
Member

papandreou commented Jan 29, 2019

Hmm, I have all the tests passing locally now, also make test-chrome-headless and with node 6. I don't understand why it still fails on CI 🤔

@papandreou

This comment has been minimized.

Copy link
Member

papandreou commented Jan 30, 2019

Seems like babel/babel#8947 is all that's needed now.

papandreou added some commits Jan 31, 2019

@@ -30,6 +30,7 @@ build: build/lib build/test build/externaltests
${TARGETS}: build
./node_modules/.bin/rollup --config rollup.config.js --sourcemap --format umd --name weknowhow.expect -o unexpected.js build/lib/index.js
sed -e "s/Symbol.iterator in Object/typeof Symbol === 'function' \&\& Symbol.iterator in Object/;" -i unexpected.js
sed -e "s/Array\.from/Array.prototype.slice.call/g;" -i unexpected.js

This comment has been minimized.

@sunesimonsen

sunesimonsen Feb 4, 2019

Member

🥇 LOL

This comment has been minimized.

@papandreou

This comment has been minimized.

@papandreou

papandreou Feb 4, 2019

Member

For the record, I'm not suggesting that we make this change -- it breaks our source maps. I don't want to merge it until this has been sorted out upstream.

"@babel/preset-env",
{
}
]

This comment has been minimized.

@sunesimonsen

sunesimonsen Feb 4, 2019

Member

You can just write "@babel/preset-env", no need for the options syntax.

This comment has been minimized.

@papandreou

papandreou Feb 4, 2019

Member

Yeah, there has been a lot of changes back and forth. I'll clean it up when it's ready to merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment