user-event icon indicating copy to clipboard operation
user-event copied to clipboard

@testing-library/user-event paste() method fails when using happy-dom, works with jsdom

Open sethreidnz opened this issue 2 years ago • 1 comments

Reproduction example

https://github.com/sethreidnz/testing-library-happy-dom-paste-issue

Prerequisites

  1. Clone repository
  2. Install dependencies npm install or yarn install
  3. Run the tests npm run test or yarn test
  4. See error message in console that will look like the following:
FAIL  src/App.test.tsx > App > can paste in input
TypeError: dt.setData is not a function
 ❯ getClipboardDataFromString node_modules/@testing-library/user-event/dist/esm/clipboard/paste.js:25:8
 ❯ Object.paste node_modules/@testing-library/user-event/dist/esm/clipboard/paste.js:16:70
 ❯ node_modules/@testing-library/user-event/dist/esm/setup/setup.js:84:35
 ❯ Object.asyncWrapper node_modules/@testing-library/react/dist/pure.js:73:28
 ❯ wrapAsync node_modules/@testing-library/user-event/dist/esm/setup/wrapAsync.js:7:24
 ❯ Object.method [as paste] node_modules/@testing-library/user-event/dist/esm/setup/setup.js:84:16
 ❯ src/App.test.tsx:15:16
     13|     // assert
     14|     await user.click(screen.getByRole('textbox'));
     15|     await user.paste('Hello, world!');
       |                ^
     16|   });
     17| });

Expected behavior

The paste() method should work the same as in jestdom and not produce an error.

Actual behavior

user.paste() produces a type error when using happy-dom.

User-event version

14.5.1

Environment

Testing Library framework:

JS framework: [email protected]

Test environment: [email protected]

DOM implementation: [email protected] -->

Additional context

I am not sure if this is an issue with testing library or with happy-dom so I have also raised an issue there too:

https://github.com/capricorn86/happy-dom/issues/1077

sethreidnz avatar Sep 18 '23 23:09 sethreidnz

This is probably somewhat related to #1019

Christian24 avatar Nov 08 '23 11:11 Christian24