diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index c9162bf8ca52..58f6ed40edbe 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -675,7 +675,8 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { const _error = new AssertionError( `promise rejected "${utils.inspect(err)}" instead of resolving`, { showDiff: false }, - ) + ) as Error + _error.cause = err _error.stack = (error.stack as string).replace(error.message, _error.message) throw _error }, @@ -712,8 +713,8 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { (value: any) => { const _error = new AssertionError( `promise resolved "${utils.inspect(value)}" instead of rejecting`, - { showDiff: false }, - ) + { showDiff: true, expected: new Error('rejected promise'), actual: value }, + ) as any _error.stack = (error.stack as string).replace(error.message, _error.message) throw _error }, diff --git a/test/core/test/jest-expect.test.ts b/test/core/test/jest-expect.test.ts index 086c765960be..215db7e4e9f8 100644 --- a/test/core/test/jest-expect.test.ts +++ b/test/core/test/jest-expect.test.ts @@ -814,6 +814,8 @@ describe('async expect', () => { } catch (err: any) { expect(err.message).toMatchInlineSnapshot(`"promise rejected "Error: some error { foo: { bar: 42 } }" instead of resolving"`) + expect(err.cause).toBeDefined() + expect(err.cause.message).toMatchInlineSnapshot(`"some error"`) expect(err.stack).toContain('jest-expect.test.ts') } })