-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
Components: Fix no-node-access
in Grid
tests
#45900
Conversation
Open in CodeSandbox Web Editor | VS Code | VS Code Insiders |
const { container } = render( | ||
<Grid> | ||
render( | ||
<Grid role="grid"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was contemplating whether it made sense to add the grid
role by default to <Grid />
and then the gridcell
role to each child view, but then I realized it probably won't always be the case that this makes sense. So it maybe makes more sense for the component consumers to add those roles as they see fit. Would love to hear some thoughts about this though!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reasoning makes sense to me — Grid
is mostly about a visual grid layout, and it doesn't necessarily imply the semantics of role="grid"
.
For that reason, I'm not sure it makes much sense to add role="grid"
to every test — on one hand, it allows us to use *ByRole
queries, but on the other hand it feels a bit hacky.
I wonder if just passing a data-test-id
to Grid
is a better indication of our intensions in these tests?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I never imagined I'd be reverting from using role
to data-testid
😅 But yup, I agree that data-testid
expresses our intent better. Updated in f47bd07
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just think that role
needs to be used with intention :) In this case, if we were using role as a "proxy" for the Grid component, that was mostly a hack
It's tricky to test pure layout components (like grid) semantically, which is why I used to mostly rely on snapshot testing in those scenarios (i.e. I mainly want to test that markup and styles are correct, no need to check for semantics).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀
What?
With the recent work to improve the quality of tests, we fixed a bunch of ESLint rule violations. This PR fixes a few (
10
)no-node-access
rule violations in theGrid
component.Why?
The end goal is to enable that ESLint rule once all violations have been fixed.
How?
We're adding a role to the test fixtures in order to be able to use
screen.getByRole()
.Testing Instructions
Verify all tests still pass.