I have a (Jest) test to determine if a button exists:
it('renders a signup button', () => {
expect(sut.getByText('Sign up for free')).toBeDefined()
})
This test because there is both a button AND heading with "Sign up for free" text in the component.
A testid
could be added to the button, but I'd prefer to follow the react-testing-library principle of simulating user behaviour.
I feel it's legitimate a user would want to "click the button labelled 'Sign up for free'". In this situation, specifying the type of HTML element makes sense as a <button />
is a distinctive element to the user, as opposed to be <h2 />
vs <h3 />
.
How can I query for a button element labelled "Sign up for free"? For example can getByText()
be further limited by a query selector?
name
property didn't exist in my version of React Testing Library so I had to update the package. Just in case others come across the same problem. – Cataract