fix: Consider metadata elements as visible in waitForSelector
#37265
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Treats
<base>
,<link>
,<meta>
,<script>
,<style>
and<title>
as visible if attached inwaitForSelector(selector)
.The default of checking for visibility is generally desired. However, when selecting these metadata elements, you don't care about visibility since the user agent will never directly render the elements. You almost always just want to assert on their properties (text content of
<title>
orvalue
attributes in<meta>
). E.g. in vercel/next.js we have to switch the asserted state toattached
whenever we want to select metadata elements. This provides no additional clarity in the test. Worse, we had to adjust the selectors to make it clear thatstate: 'attached'
is safe for this specific selector.Having to include
state: 'attached'
for these elements is cumbersome since you have to double check that the selector is actually targeting a metadata element to not risk accidentally selecting elements that should render something but aren't visible.I excluded
<template>
from this lists since that may be a footgun to assert on its contents and consider it "visible".