testing-library / testing-library/user-event
userEvent.setup() exists but I'm unable to call it
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 2.3k
- Forks
- 258
- PR merge metrics
- No merged PRs in 30d
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 git@github.com: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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by cloning nene/test-userevent, installing dependencies, and running npm test to reproduce the failure in src/my.test.ts. Then inspect src/document/prepareDocument.ts at the linked Symbol reference and the reported stack frames; done means the setup call has an established expected behavior in the documented Vitest environment and the regression is covered or clearly explained.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100