bamlab / bamlab/react-native-project-config

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

Open
#66 3 comments 0 reactions 0 assignees View on GitHub
⭐ enhancement 📏 eslint-plugin
Dominant language
TypeScript
Stars
9
Forks
0
Avg merge
10h 29m
Merged PRs (30d)
2

Description

### 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

```js
'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' },
],
},
],
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.