You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 2, 2021. It is now read-only.
Rut is a DOM-less React testing library that aims to be lightweight, encourage great testing
practices, and reduce flakiness and code smells. It is a wrapper and abstraction around
react-test-renderer that simplifies the test writing
process, while doing all the hard work behind the scenes.
import{render}from'rut-dom';importInput,{InputProps}from'../src/Input';describe('<Input />',()=>{it('renders an input field',()=>{const{ root, update }=render<InputProps>(<Inputname="rut"value="foo"/>);expect(root).toHaveProp('name','rut');expect(root).toHaveValue('foo');expect(root).not.toBeDisabled();update({disabled: true});expect(root).toBeDisabled();});});
The rut package provides core functionality for adapters to expand upon. For example, a DOM
adapter for react-dom, a mobile native adapter for react-native, or even a custom adapter unique
to your application.
Features
Type safe by design. Test with confidence.
First-class async support. Wait for async calls to finish before returning a rendered result.
(Experimental)
Deep act() integration. Let Rut do the
heavy lifting.
Update a component with new props, children, or a completely new element.
Unmount a component to verify cleanup and destructor based logic.
Dispatch DOM level events with a mocked synthetic event (and propagation coming soon!).
Wrap all renders with a defined wrapping component and or React.StrictMode.
Apply pre-built mocks for robust and accurate testing.
Utilize an array of pre-built matchers for easily querying, expecting, and asserting.
Arrange: Renders the entire component tree (instead of shallow) for a more accurate representation
of your component. Requires fetches, events, contexts, and more, to be properly mocked or setup
before hand.
Act: With no direct access to state or internals, it forces you to interact with your tree in the
same manner your user would. Dispatch events to toggle states or execute handlers, like a form
submission.
Assert: Test your expectations using pre-built matchers for common testing scenarios and patterns
while avoiding implementation details.