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

[Bug]: structuredClone under jest fails instanceof check #14947

Closed
guydunton opened this issue Mar 7, 2024 · 7 comments
Closed

[Bug]: structuredClone under jest fails instanceof check #14947

guydunton opened this issue Mar 7, 2024 · 7 comments

Comments

@guydunton
Copy link

guydunton commented Mar 7, 2024

Version

29.7.0

Steps to reproduce

  1. Clone https:/guydunton/jest-structured-clone-issue
  2. Run npm run test

Expected behavior

I would expect the following test to pass:

test('structuredClone', () => {
  const origDate = new Date();
  const copyDate = structuredClone(origDate);

  const isOrigDate = origDate instanceof Date; // true
  const isCopyDate = copyDate instanceof Date; // false?

  expect(isCopyDate).toBe(isOrigDate);
});

Actual behavior

instanceof returns different values for a value & it's clone (using structuredClone) causing the test to fail.

  ● structuredClone

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

       6 |   const isCopyDate = copyDate instanceof Date;
       7 |
    >  8 |   expect(isCopyDate).toBe(isOrigDate);
         |                      ^
       9 | });
      10 |

      at Object.toBe (main.test.js:8:22)

Additional context

Running the following code in Node (20.11.1) gives the expected result:

const origDate = new Date();
const cloneDate = structuredClone(origDate);
console.log('origDate', origDate instanceof Date);      // true
console.log('cloneDate', cloneDate instanceof Date);    // true

Environment

System:
    OS: macOS 14.3.1
    CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
  Binaries:
    Node: 20.11.1 - ~/.nvm/versions/node/v20.11.1/bin/node
    Yarn: 1.22.21 - /usr/local/bin/yarn
    npm: 10.2.4 - ~/.nvm/versions/node/v20.11.1/bin/npm
  npmPackages:
    jest: ^29.7.0 => 29.7.0
@mrazauskas
Copy link
Contributor

Somewhat similar to #14011

Looks like the root of the problem is #2549. Try using jest-light-runner. Reference: #2549 (comment)

@guydunton
Copy link
Author

Somewhat similar to #14011

Looks like the root of the problem is #2549. Try using jest-light-runner. Reference: #2549 (comment)

Ah that solves it! Thank you!

It would be nice to not need to install a different runner but at least I have a way forwards

@mrazauskas
Copy link
Contributor

It would be nice to not need to install a different runner but at least I have a way forwards

Indeed that would be nice. To make this work Jest should give up isolating tests (unlikely) or a limitation on Node.js side should be fixed (follow nodejs/node#31852).

Copy link

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 30 days.

@github-actions github-actions bot added the Stale label Apr 14, 2024
Copy link

This issue was closed because it has been stalled for 30 days with no activity. Please open a new issue if the issue is still relevant, linking to this one.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale May 14, 2024
Copy link

This issue was closed because it has been stalled for 30 days with no activity. Please open a new issue if the issue is still relevant, linking to this one.

Copy link

This issue 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 Jun 14, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants