dom-testing-library icon indicating copy to clipboard operation
dom-testing-library copied to clipboard

Support for sharing matching details between getByRole & queryByRole

Open flakey-bit opened this issue 1 year ago • 0 comments

Describe the feature you'd like:

When writing tests we'll often write a positive test i.e. something appears when we expect it to with a corresponding negative test i.e. it doesn't appear when it shouldn't.

For various reasons we want to keep things DRY (e.g. if the text changes, we don't want false-negatives in the negative test).

At the moment, the best we can come up with is

const warningMatcher: [ByRoleMatcher, ByRoleOptions] = [
  (content, element) => content === "status" && element?.textContent?.includes("The file has warning(s) that may affect how your data will import"),
  {}
];

Then

// Positive case i.e. we're looking for the warning
expect(screen.getByRole(...warningMatcher)).toBeInTheDocument();

// Negative case i.e. we're asserting the warning does not appear
expect(screen.queryByRole(...warningMatcher)).not.toBeInTheDocument();

Wondering if API changes could make this (surely common?) use-case easier.

flakey-bit avatar Apr 17 '23 23:04 flakey-bit