testing-library / playwright-testing-library

πŸ” Find elements in Playwright with queries from Testing Library
MIT License
248 stars 9 forks source link

Inconsistent visibility requirement between get/query and find queries #523

Open jrolfs opened 2 years ago

jrolfs commented 2 years ago

This originally came up in #519 / https://github.com/testing-library/playwright-testing-library/issues/519#issuecomment-1253172660

Because we use Locator.waitFor() in the find* queries implementation, we have to specify a Playwright state for the element we are waiting on. I naively went with the Playwright default, which is visible. However, this causes inconsistency with the get* and query* queries because they don't verify the element state in Playwright at all.

Here are some options I see to resolve this:

  1. Switch the default state/asyncUtilExpectedState to 'attached'
  2. Assert the state consistently (isVisible()), for elements returned from the other types of queries (we'd probably also want to rename the option to remove async from the name πŸ˜’)
  3. Document this well and be okay that find* queries already serve a different purpose on top of the other query types

1 and 2 will now be breaking changes since we already released stuff on 4.4.0. We should probably do 3 in some form in the meantime regardless of what we choose.

Related inconsistency/rough edge: #506