When generating a selector, we tend to match by role and call various
roleUtils methods multiple times.
Apply the usual pattern for "nested operations counter" and aggressively
cache the results.
Element.checkVisibility is a new browser API that was shipped in
chromium 105:
https://bugs.chromium.org/p/chromium/issues/detail?id=1309533
Using checkVisibility accounts for the content-visibility:hidden in the
user-agent ShadowRoot of the details element, which means we can remove
the usage of the AutoExpandDetailsElementFlag (I am trying to remove the
flag in chromium).
This behavior is covered by the existing "isVisible and isHidden should
work with details" test in locator-convenience.spec.ts.