Skip to content
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

Merged
merged 2 commits into from
Nov 21, 2022
Merged

Conversation

tyxla
Copy link
Member

@tyxla tyxla commented Nov 18, 2022

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 the Grid 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.

@tyxla tyxla added [Type] Code Quality Issues or PRs that relate to code quality [Package] Components /packages/components labels Nov 18, 2022
@tyxla tyxla self-assigned this Nov 18, 2022
@codesandbox
Copy link

codesandbox bot commented Nov 18, 2022

CodeSandbox logoCodeSandbox logo  Open in CodeSandbox Web Editor | VS Code | VS Code Insiders

const { container } = render(
<Grid>
render(
<Grid role="grid">
Copy link
Member Author

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!

Copy link
Contributor

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?

Copy link
Member Author

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

Copy link
Contributor

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).

Copy link
Contributor

@ciampo ciampo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@tyxla tyxla merged commit 5122e65 into trunk Nov 21, 2022
@tyxla tyxla deleted the fix/no-node-access-grid branch November 21, 2022 13:11
@github-actions github-actions bot added this to the Gutenberg 14.7 milestone Nov 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Components /packages/components [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants