dom-testing-addon-async
Async query addon for dom-testing-library
Usage
find*
Each of the get
and getAll
queries from dom-testing-library
are wrapped in an async find
API.
The find APIs return a Promise and retry automatically until they time out. The timeout can be specified as an option in the last argument.
const container = document; // trigger an actionfireEvent // This element doesn't appear immediately:const usernameElement = await usernameElementvalue = 'chucknorris' // wait for error statenot // expect NOT to see success stateawait rejects
waitFor
waitFor
is a utility function that lets you retry queries until they succeed or time out. Unlike dom-testing-library#wait
, waitFor
returns the result of the function. It is used internally to create the find APIs.
The first argument is the query. A new async function is returned if this is the only argument. If there are more arguments, it returns a Promise which resolves with the result of calling the async function with the arguments. If the last argument is an object with a "timeout" key, it will be used as the timeout for the retries. The Promise is rejected with the last error thrown by the callback.
const usernameElement = await usernameElementvalue = 'chucknorris'
You can create your own async queries by passing only the first argument:
const waitForText = const headline = await // do something
with react-testing-library
You can add the queries to react-testing-libary's render method as described here
- import { render, fireEvent } from 'react-testing-library';+ import { render, fireEvent } from '../test-utils';
// test-utils.js const allQueries = ...syncQueries ...asyncQueries { return } // re-export everything // override render method