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

jest-dom/prefer-to-have-text-content leads to unexpected behaviour

Open darkowic opened this issue 1 year ago • 1 comments

  • eslint-plugin-jest-dom version: 5.1.0
  • node version: 18.14.2
  • npm version: yarn 3

Relevant code or config

What I wanted to use

            expect(
                screen.getByTestId('location')
            ). toHaveTextContent('/');

What I'm forced to use:

            // Can not use toHaveTextContent because it doesn't match exact text
            // eslint-disable-next-line jest-dom/prefer-to-have-text-content
            expect(
                screen.getByTestId('location')
                    .textContent
            ).toBe('/');

What you did: I wanted to ensure that the tested value is exactly the value I pass to assertion.

What happened: Eslint rule warns to use toHaveTextContent. Unfortunately, that change is also changing the behavior.

Problem description: I believe everything is clear from the above examples and explanations. The jest-dom/prefer-to-have-text-content rule forces me to change my code to a version that doesn't fulfill my requirements.

Suggested solution: The rule should only be triggered if the assertion toContain or similar is used. Extend toHaveTextContent with exact option. Or add toBeTextContent.

darkowic avatar Nov 16 '23 13:11 darkowic