Skip to content

feat: keep the original error when a promise settles the wrong way - #16484

Open
eduardorittner wants to merge 1 commit into
jestjs:mainfrom
eduardorittner:fix/promise-matcher-cause
Open

eduardorittner wants to merge 1 commit into
jestjs:mainfrom
eduardorittner:fix/promise-matcher-cause

Conversation

@eduardorittner

Copy link
Copy Markdown

Summary

Closes #14750 by setting cause when .resolves or .rejects gets the wrong outcome.

Test plan

Added tests to AsyncFailures.test.ts which capture the cause block in snapshots and matchers.test.js which check that cause is correctly populated.

Before / after

test('resolves', () =>
  expect(Promise.reject(new Error('boom'))).resolves.toBe('ok'));

Before (jest 30.5.2):

● resolves

  expect(received).resolves.toBe()

  Received promise rejected instead of resolved
  Rejected to value: [Error: boom]

    1 | test('resolves', () =>
  > 2 |   expect(Promise.reject(new Error('boom'))).resolves.toBe('ok'));
      |   ^
    3 |

    at Object.expect (example.test.js:2:3)

After:

● resolves

  expect(received).resolves.toBe()

  Received promise rejected instead of resolved
  Rejected to value: [Error: boom]

    1 | test('resolves', () =>
  > 2 |   expect(Promise.reject(new Error('boom'))).resolves.toBe('ok'));
      |   ^
    3 |

    at Object.expect (example.test.js:2:3)

  Cause:
      boom

        1 | test('resolves', () =>
      > 2 |   expect(Promise.reject(new Error('boom'))).resolves.toBe('ok'));
          |                         ^
        3 |

        at Object.<anonymous> (example.test.js:2:25)

@linux-foundation-easycla

linux-foundation-easycla Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

CLA Signed
The committers listed above are authorized under a signed CLA.

  • ✅ login: eduardorittner / name: Eduardo Rittner (45ff2dc)

@netlify

netlify Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for jestjs ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 70fc4c1
🔍 Latest deploy log https://app.netlify.com/projects/jestjs/deploys/6ac4e6029b8b80000897c59d
😎 Deploy Preview https://deploy-preview-16484--jestjs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added the require-changelog If a PR does requires a changelog entry label Oct 6, 2026
@eduardorittner
eduardorittner force-pushed the fix/promise-matcher-cause branch from a505236 to 45ff2dc Compare October 6, 2026 11:54
@pkg-pr-new

pkg-pr-new Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

babel-jest

npm i https://pkg.pr.new/babel-jest@16484

babel-plugin-jest-hoist

npm i https://pkg.pr.new/babel-plugin-jest-hoist@16484

babel-preset-jest

npm i https://pkg.pr.new/babel-preset-jest@16484

create-jest

npm i https://pkg.pr.new/create-jest@16484

@jest/diff-sequences

npm i https://pkg.pr.new/@jest/diff-sequences@16484

expect

npm i https://pkg.pr.new/expect@16484

@jest/expect-utils

npm i https://pkg.pr.new/@jest/expect-utils@16484

jest

npm i https://pkg.pr.new/jest@16484

jest-changed-files

npm i https://pkg.pr.new/jest-changed-files@16484

jest-circus

npm i https://pkg.pr.new/jest-circus@16484

jest-cli

npm i https://pkg.pr.new/jest-cli@16484

jest-config

npm i https://pkg.pr.new/jest-config@16484

@jest/console

npm i https://pkg.pr.new/@jest/console@16484

@jest/core

npm i https://pkg.pr.new/@jest/core@16484

@jest/create-cache-key-function

npm i https://pkg.pr.new/@jest/create-cache-key-function@16484

jest-diff

npm i https://pkg.pr.new/jest-diff@16484

jest-docblock

npm i https://pkg.pr.new/jest-docblock@16484

jest-each

npm i https://pkg.pr.new/jest-each@16484

@jest/environment

npm i https://pkg.pr.new/@jest/environment@16484

jest-environment-jsdom

npm i https://pkg.pr.new/jest-environment-jsdom@16484

@jest/environment-jsdom-abstract

npm i https://pkg.pr.new/@jest/environment-jsdom-abstract@16484

jest-environment-node

npm i https://pkg.pr.new/jest-environment-node@16484

@jest/expect

npm i https://pkg.pr.new/@jest/expect@16484

@jest/fake-timers

npm i https://pkg.pr.new/@jest/fake-timers@16484

@jest/get-type

npm i https://pkg.pr.new/@jest/get-type@16484

@jest/globals

npm i https://pkg.pr.new/@jest/globals@16484

jest-haste-map

npm i https://pkg.pr.new/jest-haste-map@16484

jest-jasmine2

npm i https://pkg.pr.new/jest-jasmine2@16484

jest-leak-detector

npm i https://pkg.pr.new/jest-leak-detector@16484

jest-matcher-utils

npm i https://pkg.pr.new/jest-matcher-utils@16484

jest-message-util

npm i https://pkg.pr.new/jest-message-util@16484

jest-mock

npm i https://pkg.pr.new/jest-mock@16484

@jest/pattern

npm i https://pkg.pr.new/@jest/pattern@16484

jest-phabricator

npm i https://pkg.pr.new/jest-phabricator@16484

jest-regex-util

npm i https://pkg.pr.new/jest-regex-util@16484

@jest/reporters

npm i https://pkg.pr.new/@jest/reporters@16484

jest-resolve

npm i https://pkg.pr.new/jest-resolve@16484

jest-resolve-dependencies

npm i https://pkg.pr.new/jest-resolve-dependencies@16484

jest-runner

npm i https://pkg.pr.new/jest-runner@16484

jest-runtime

npm i https://pkg.pr.new/jest-runtime@16484

@jest/schemas

npm i https://pkg.pr.new/@jest/schemas@16484

jest-snapshot

npm i https://pkg.pr.new/jest-snapshot@16484

@jest/snapshot-utils

npm i https://pkg.pr.new/@jest/snapshot-utils@16484

@jest/source-map

npm i https://pkg.pr.new/@jest/source-map@16484

@jest/test-result

npm i https://pkg.pr.new/@jest/test-result@16484

@jest/test-sequencer

npm i https://pkg.pr.new/@jest/test-sequencer@16484

@jest/transform

npm i https://pkg.pr.new/@jest/transform@16484

@jest/types

npm i https://pkg.pr.new/@jest/types@16484

jest-util

npm i https://pkg.pr.new/jest-util@16484

jest-validate

npm i https://pkg.pr.new/jest-validate@16484

jest-watcher

npm i https://pkg.pr.new/jest-watcher@16484

jest-worker

npm i https://pkg.pr.new/jest-worker@16484

pretty-format

npm i https://pkg.pr.new/pretty-format@16484

commit: 70fc4c1

@eduardorittner
eduardorittner force-pushed the fix/promise-matcher-cause branch from 45ff2dc to 3bfc1c4 Compare October 6, 2026 12:03
@eduardorittner
eduardorittner force-pushed the fix/promise-matcher-cause branch from 3bfc1c4 to 70fc4c1 Compare October 6, 2026 12:13
@eduardorittner

Copy link
Copy Markdown
Author

CI failures seem unrelated to my changes, but I can't re-run the failed steps so I can't confirm that

This branch has not been deployed

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

Labels

require-changelog If a PR does requires a changelog entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: show full error or object in promised expect

1 participant