Skip to content

[RFC]: testing-library-eslint-plugin/prefer-query-matchersΒ #66

@MattAgn

Description

@MattAgn

Why?

This rules helps ensure that we use getBy matchers when we want to assert element exists, are check, are accessible etc and queryBy only when elements don't exist. This is our standard for clear code and easy debugging in tests.

Issues so far:

  • it does not seem to work with findBy for now
  • nor does it wok with "not" assertions (I'd like to use queryBy only for "not.toBeOnTheScreen"

Rule Documentation πŸ“œ

https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-query-matchers.md

Config Selection πŸ› 

tests

(Optional) Additional Details πŸ“

Here is a possible configuration for this rule

    'testing-library/prefer-query-matchers': [
      2,
      {
        validEntries: [
          { matcher: 'toBeChecked', query: 'get' },
          { matcher: 'toHaveAccessibleName', query: 'get' },
          { matcher: 'toBeBusy', query: 'get' },
          { matcher: 'toBeSelected', query: 'get' },
          { matcher: 'toBeExpanded', query: 'get' },
          { matcher: 'toBePartiallyChecked', query: 'get' },
          { matcher: 'toHaveDisplayValue', query: 'get' },
          { matcher: 'toHaveTextContent', query: 'get' },
          { matcher: 'toHaveStyle', query: 'get' },
          { matcher: 'toHaveProp', query: 'get' },
          { matcher: 'toContainElement', query: 'get' },
          { matcher: 'toBeEnabled', query: 'get' },
          { matcher: 'toBeDisabled', query: 'get' },
          { matcher: 'toBeEmptyElement', query: 'get' },
        ],
      },
    ],

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions