vitest-dev / vitest

Next generation testing framework powered by Vite.
https://vitest.dev
MIT License
13.13k stars 1.18k forks source link

Bad diff output on DOM objects #6939

Open tuhm1 opened 5 days ago

tuhm1 commented 5 days ago

Describe the bug

The diff function doesn't work on DOM objects because they have a special output format.

AssertionError: expected <div><img></img></div> to match object { tagName: 'DIV', id: 'root', …(2) }

- Expected
+ Received

- Object {
-   "children": Object {
-     "0": Object {
-       "src": "http://url.com/",
-       "tagName": "IMG",
-     },
-     "1": Object {
-       "tagName": "BUTTON",
-       "textContent": "Go",
-     },
-     "length": 2,
-   },
-   "className": "d-flex",
-   "id": "root",
-   "tagName": "DIV",
- }
+ <div>
+   <img />
+ </div>

Ideally, I think only differing property values should be shown.

Reproduction

const node = document.createElement("div");
node.append(document.createElement("img"));

expect(node).toMatchObject({
  tagName: "DIV",
  id: "root",
  className: "d-flex",
  children: {
    length: 2,
    [0]: { tagName: "IMG", src: "http://url.com/" },
    [1]: { tagName: "BUTTON", textContent: "Go" },
  },
});

StackBlitz

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (4) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 18.20.3 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.2.3 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    @vitest/ui: latest => 2.1.5 
    vite: latest => 5.4.11 
    vitest: latest => 2.1.5

Used Package Manager

npm

Validations