diff --git a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap index ca39274cdb18..a4749b1d7cdb 100644 --- a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap +++ b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap @@ -2071,6 +2071,39 @@ Expected: /abc/g Received: /abc/gsy `; +exports[`.toEqual() {pass: false} expect([]).toEqual([]) 1`] = ` +expect(received).toEqual(expected) // deep equality + +Expected: [] +Received: serializes to the same string +`; + +exports[`.toEqual() {pass: false} expect([]).toEqual([]) 2`] = ` +expect(received).toEqual(expected) // deep equality + +Expected: [] +Received: serializes to the same string +`; + +exports[`.toEqual() {pass: false} expect([]).toEqual([]) 3`] = ` +expect(received).toEqual(expected) // deep equality + +Expected: [] +Received: serializes to the same string +`; + +exports[`.toEqual() {pass: false} expect([]).toEqual([1]) 1`] = ` +expect(received).toEqual(expected) // deep equality + +- Expected - 3 ++ Received + 1 + +- Array [ +- 1, +- ] ++ Array [] +`; + exports[`.toEqual() {pass: false} expect([1, 2]).toEqual([2, 1]) 1`] = ` expect(received).toEqual(expected) // deep equality diff --git a/packages/expect/src/__tests__/matchers.test.js b/packages/expect/src/__tests__/matchers.test.js index 5b24688e69d0..72453cea4227 100644 --- a/packages/expect/src/__tests__/matchers.test.js +++ b/packages/expect/src/__tests__/matchers.test.js @@ -598,6 +598,24 @@ describe('.toEqual()', () => { [Symbol.for('bar')]: 1, }, ], + [ + Object.assign([], {4294967295: 1}), + Object.assign([], {4294967295: 2}), // issue 11056 + ], + [ + // eslint-disable-next-line no-useless-computed-key + Object.assign([], {['-0']: 1}), + // eslint-disable-next-line no-useless-computed-key + Object.assign([], {['0']: 1}), // issue 11056: also check (-0, 0) + ], + [ + Object.assign([], {a: 1}), + Object.assign([], {b: 1}), // issue 11056: also check strings + ], + [ + Object.assign([], {[Symbol()]: 1}), + Object.assign([], {[Symbol()]: 1}), // issue 11056: also check symbols + ], ].forEach(([a, b]) => { test(`{pass: false} expect(${stringify(a)}).toEqual(${stringify( b, diff --git a/packages/expect/src/jasmineUtils.ts b/packages/expect/src/jasmineUtils.ts index eabab9bbf236..44a32b251be4 100644 --- a/packages/expect/src/jasmineUtils.ts +++ b/packages/expect/src/jasmineUtils.ts @@ -224,7 +224,11 @@ function keys( } for (var x = 0; x < allKeys.length; x++) { - if (typeof allKeys[x] === 'symbol' || !allKeys[x].match(/^[0-9]+$/)) { + if ( + typeof allKeys[x] === 'symbol' || + !allKeys[x].match(/^[0-9]+$/) || + Number(allKeys[x]) >= 4294967295 + ) { extraKeys.push(allKeys[x]); } }