testing-library / testing-playground

Simple and complete DOM testing playground that encourage good testing practices.

Home Page:https://testing-playground.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Testing Playground Fails to find role="listitem"

ashleyryan opened this issue Β· comments

Bug Report πŸ›

screen. getByRole('listitem') does nothing. It will correctly point out when clicking on the element that you should use getByRole('listitem') but then nothing happens when you do.

To Reproduce βœ”οΈ

https://testing-playground.com/gist/8e1c0a696406024c7ca3948328d11643/8926981ba1d5840186bdc0db0d039a90d202bd18
https://testing-playground.com/gist/8473f395e8e4cff53ad059184d268db0/4ef2f72a3abc6ee13f07b6f4887744c3053b4fd5

Click on an li element and see how the query displays // sorry, I failed to provide something useful

Expected behavior πŸ€”

Li elements would be found, just like getByRole('list') works

Your Environment πŸ’»

  • browser: Chrome
  • os: Mac

πŸ€¦β€β™€οΈ It's getAllByRole not getByRole

Thanks for reporting!

The error/notice is because there are multiple li elements matched to the same getByRole query. I guess we should make the query generator smarter and let it try less optimal queries in such cases (like the getByText).

I think what complicates things too is that (at least locally) list items don't have a name so you can't even use getByRole('listitem', {name: 'blah'})

The notice makes sense, but it would be nice to get a better error message when the query doesn't work, like in this case. It looks like nothing happens (unless i'm just missing it)

Yeah, that makes sense. Would a message like this have been better?

This element might be fine, but I can't auto-generate a query for you. Try using getAllBy or add some labels.

Do you have any ideas/suggestions?

Yeah, a message like that would have been more helpful!