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
967 stars 135 forks source link

False positive for `testing-library/await-async-events` when returning using a ternary #887

Closed jasonblalock closed 2 months ago

jasonblalock commented 3 months ago

Have you read the Troubleshooting section?

Yes

Plugin version

v6.2.0

ESLint version

v8.56.0

Node.js version

20.11.1

package manager and version

yarn 3.2.2

Operating system

macOS Ventura 13.6.4

Bug description

Ternary return of userEvent.type or userEvent.clear is reporting testing-library/await-async-queries, even though the query will get awaited

Steps to reproduce

  1. Go to test file
  2. Add code like

    async function changeEmailInput(value) {
    const emailInput = screen.getByRole('textbox', { name: 'Email' });
    
    return value.length
        ? userEvent.type(emailInput, value)
        : userEvent.clear(emailInput);
    }
  3. Observe errors on the last two lines

    Promise returned from async event method type must be handled eslint testing-library/await-async-events Promise returned from async event method clear must be handled eslint testing-library/await-async-events

Error output/screenshots

No response

ESLint configuration


{
  ...,
  plugins: [
     ...,
     'eslint-plugin-testing-library'
  ],
  rules: {
    ...,
    'testing-library/await-async-queries': ['error', { eventModule: 'userEvent' }]
  }
}

### Rule(s) affected

testing-library/await-async-queries

### Anything else?

_No response_

### Do you want to submit a pull request to fix this bug?

No
github-actions[bot] commented 2 months ago

:tada: This issue has been resolved in version 6.2.1 :tada:

The release is available on:

Your semantic-release bot :package::rocket: