Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AgtLucas/63ed547f1037d1c4a68a350778b9845b to your computer and use it in GitHub Desktop.
Save AgtLucas/63ed547f1037d1c4a68a350778b9845b to your computer and use it in GitHub Desktop.
// utils/testing-library.js
// Set up a custom renderer for @testing-library/react
import { render as originalRender } from '@testing-library/react'
import diff from 'jest-diff'
import chalk from 'chalk'
const render = (...args) => {
const rendered = originalRender(...args)
rendered.lastFragment = new DocumentFragment()
rendered.debugDiff = () => {
const nextFragment = rendered.asFragment()
console.log(
diff(rendered.lastFragment, nextFragment, {
aAnnotation: 'Previous',
bAnnotation: 'Next',
aColor: chalk.red,
bColor: chalk.green,
})
)
rendered.lastFragment = nextFragment
}
return rendered
}
export * from '@testing-library/react'
export { render }
import { render, fireEvent } from './react-testing-library'
// Usage
// `render` now has a `debugDiff` method that shows how the
// rendered fragement changes over time
test('shows fragment changes over time', () => {
const rendered = render(<App />)
// First call shows the initial fragment
rendered.debugDiff()
const input = rendered.getByPlaceholderText('Search...')
fireEvent.change(input, { target: { value: 'Foo!' } })
// Shows changes since the last diff
rendered.debugDiff()
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment