-
Notifications
You must be signed in to change notification settings - Fork 256
Description
Reproduction example
import { describe, expect, it } from "vitest";
import userEvent from "@testing-library/user-event";
describe("my test", () => {
it("should pass", () => {
console.log(userEvent.setup);
userEvent.setup(); // <-- fails here
expect(true).toBe(true);
});
});https://github.com/nene/test-userevent
Prerequisites
Sorry, I don't know how to work with tests in codesandbox. Instead I provide a repository:
- Check out the repo
git clone [email protected]:nene/test-userevent.git - Install dependencies with
npm install - Run tests
npm test
Expected behavior
Tests execute successfully.
Actual behavior
An error occurs:
FAIL src/my.test.ts > my test > should pass
TypeError: Cannot read properties of undefined (reading 'Symbol(Node prepared with document state workarounds)')
β― prepareDocument node_modules/@testing-library/user-event/dist/esm/document/prepareDocument.js:10:17
β― Object.setupMain [as setup] node_modules/@testing-library/user-event/dist/esm/setup/setup.js:52:5
β― src/my.test.ts:7:15
5| it("should pass", () => {
6| console.log(userEvent.setup);
7| userEvent.setup();
| ^
8| expect(true).toBe(true);
9| });
User-event version
14.6.1
Environment
Testing Library framework: @testing-library/dom 10.4.0
JS framework: react 18.3.1 (though not used in test)
Test environment: vitest 3.0.8
DOM implementation: Not sure, Vitest docs say that the default environment is node. I haven't installed any of the optional environments like js-dom or happy-dom.
Additional context
This problem looks similar to #839, but that issue has been fixed, and the workarounds suggested there didn't seem to do anything.
Most strangely, when I console.log(userEvent.setup) it prints:
[Function: setupMain]
Similarly typeof userEvent.setup also tells me that it's a function.
But when I call the function userEvent.setup() I get the error.
I managed to locate this strange Symbol(Node prepared with document state workarounds) inside user-event library. But I have no clue what's going on with that.