testing-library / eslint-plugin-testing-library

ESLint plugin to follow best practices and anticipate common mistakes when writing tests with Testing Library
https://npm.im/eslint-plugin-testing-library
MIT License
992 stars 142 forks source link

Make 'prefer-presence-queries' autofixable #916

Open guicamillo opened 4 months ago

guicamillo commented 4 months ago

What rule do you want to change?

prefer-presence-queries

Does this change cause the rule to produce more or fewer warnings?

Fewer warnings

How will the change be implemented?

When eslint is run with the --fix flag, the plugin will:

Example code


// current code
const {getByTestId} = render(<Thing />);
expect(getByTestId("awesome-test-id")).not.toBeInTheDocument()

// will then get replaced to
const {getByTestId, queryByTestId} = render(<Thing />);
expect(queryByTestId("awesome-test-id")).not.toBeInTheDocument()

How does the current rule affect the code?

Code isn't fixed automatically 🫤

How will the new rule affect the code?

It will be auto-fixed 🎉

Anything else?

No response

Do you want to submit a pull request to change the rule?

Yes

guicamillo commented 4 months ago

I've implemented the fixer and got it working as intended (i think)

im having some issues with the current unit tests as createRuleTester() seems to be autofixing it, producing a plethora of the following errors:

    Expected value to strictly be equal to:
      "expect(screen.queryByTestId('Hello')).not.toBeNull()"
    Received:
      "expect(screen.getByTestId('Hello')).not.toBeNull()"

Is it possible to run the unit tests without --fix, so i can ensure I haven't changed the current behaviour?