eslint-plugin-jest-dom icon indicating copy to clipboard operation
eslint-plugin-jest-dom copied to clipboard

toBeChecked suggested to replace check for aria-checked="mixed"

Open gnapse opened this issue 4 years ago • 4 comments

  • eslint-plugin-jest-dom version: 2.1.0

Relevant code or config

expect(element).toHaveAttribute("aria-checked", "mixed")

What you did:

I want to assert that the checked status is "mixed". It generally is only "true" or "false", but it can also be "mixed".

What happened:

The rule to prefer toBeChecked kicked in, but I cannot assert what I want with that custom matcher.

Suggested solution:

I think we need to either make an exception here with "mixed", but that would also be a problem, because for legibility in my test I'd like to use the same kind of assertion as my checkbox state changes. So it would not be ideal to use toBeChecked for some cases but not others with only a couple of lines of difference.

Or maybe there's nothing to do here. The "mixed" case is so rare, that maybe what we need to do is to disable the rule for that line. But I still wanted to discuss.

gnapse avatar May 06 '20 21:05 gnapse

hmm interesting, wasn't aware of that. I'd say there are a few options

  1. maybe open a PR on jest-dom to add support for toBeChecked('mixed') then this plugin can use that.
  2. just look for that special case in this plugin
  3. yeah just disable it for that line.

I'd prefer to do 1 or 2, but don't have the cycles right now if you'd like to open a PR.

benmonro avatar May 06 '20 21:05 benmonro

Yup, I thought something along the lines of no. 1, could work. Will propose it in jest-dom.

gnapse avatar May 06 '20 22:05 gnapse

We now have .toBePartiallyChecked as of v5.8.0 just released. See testing-library/jest-dom#249.

So this issue can be now about making the eslint plugin aware of this for as a replacement for .toHaveAttribute("aria-checked", "mixed").

gnapse avatar May 19 '20 22:05 gnapse

Care to open a PR @gnapse ?

benmonro avatar May 20 '20 12:05 benmonro