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]: userEvent.click() not working as expected after upgrading Storybook to 8.x #26888

Open
allozaur opened this issue Apr 19, 2024 · 6 comments

Comments

@allozaur
Copy link

allozaur commented Apr 19, 2024

Describe the bug

I have some components that use <input type="checkbox" /> or <details> + <summary> tags.

When using Storybook 7.x, interactions tests that used userEvent.click() worked just fine, but after upgrading to 8.x the same stories without any changes in code just stopped working.

To Reproduce

Create a component that uses a <details> + <summary> tags and write an interaction test that click the summary to open <details> or a component using <input type="checkbox"> and an interaction test clicking the input.

In first case, the open attribute won't be triggered and in second case checked attribute won't be triggered.

System

- Operating system: macOS 14.3.1
- Browser: Firefox
- Node: 20.x

Additional context

Not working in Storybook 8.x

Reproduction code:
storybook-8x.mov

Working in Storybook 7.x

Reproduction code:
storybook-7x.mov
@kasperpeulen
Copy link
Contributor

Could it be related to this issue?

testing-library/user-event#1075 (comment)

@allozaur
Copy link
Author

allozaur commented Apr 19, 2024

hmmm, it seems so! i just re-checked on Chrome and Safari and userEvent.click() actually worked...

Also switching to fireEvent worked for Firefox, but that still seems like rubbing the problem under the rug, rather than fully addressing it... I know it's on Testing Library's team to fix that, but still this can make a lot of people scratch their heads.

The strange thing tho is that in latest versio nof 7.x the problem was not present and the issue you referenced is there since 2022, long time before the latest release of 7.x. I think that this should be investigated regardless of the workaround that you shared in your message, @kasperpeulen

@kasperpeulen
Copy link
Contributor

In 7.x we used an older version which didnt had this bug. But this older version had other bugs that had no workaround.. So we decided it was most sensible to upgrade.

@jaens
Copy link

jaens commented Apr 20, 2024

testing-library/user-event looks unmaintained at the moment, no pull requests merged for ~7 months, no response to a question asking about maintenance status for over a month.

Not really a good situation since Storybook is using it as a foundational dependency and re-exporting it. 🥲

@eifr
Copy link

eifr commented Oct 28, 2024

I'm experiencing it too on 8.3.6 on chrome..
invoking userEvent.click twice in a row works

@valentinpalkovic valentinpalkovic moved this from Needs Discussion to Empathy Backlog in Core Team Projects Nov 11, 2024
@kasperpeulen
Copy link
Contributor

kasperpeulen commented Nov 11, 2024

Workaround:

export const Submitting = {
  play: async ({ canvasElement }) => {
    const canvas = within(canvasElement);
    const submitButton = canvas.getByRole('button', { name: /Submit/i });
-   await userEvent.click(submitButton);
+   await fireEvent.click(submitButton);
  },
};

But fireEvent does a lot less than userEvent, so you might have to manually do the stuff that userEvent does (focus, hover etc).

This has to be fixed in testing-library-user-event itself. So I think we should close this issue here.
We might want to help testing-library though. cc @vanessayuenn @shilman

@jaens The maintainer of tl/user-event responded to you. Hopefully, some fixes get merged soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Empathy Backlog
Development

No branches or pull requests

5 participants