Skip to content

Commit 85bccf2

Browse files
pplytasthymikee
andauthored
docs: Port 'How Should I Query?' guide from Native Testing Library (#555)
* docs: Port How Should I Query guide * fixup! docs: Port How Should I Query guide * Update website/docs/HowShouldIQuery.md * reword * add getByAccessibilityState getByAccessibilityValue Co-authored-by: Michał Pierzchała <[email protected]>
1 parent 484c9f7 commit 85bccf2

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

website/docs/HowShouldIQuery.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
id: how-should-i-query
3+
title: How Should I Query?
4+
---
5+
6+
## Priority
7+
8+
Based on the [Guiding Principles](https://testing-library.com/docs/guiding-principles), your test should resemble how users interact with your code (component, page, etc.) as much as possible. With this in mind, we recommend this order of priority:
9+
10+
1. **Queries Accessible to Everyone** queries that reflect the experience of visual users as well as those that use assistive technology
11+
- [`getByText`](api-queries#bytext): This is the number 1 method a user finds any visible text on interactive and non-interactive elements.
12+
- [`getByDisplayValue`](api-queries#bydisplayvalue): Useful for the current value of a `TextInput`.
13+
- [`getByPlaceholderText`](api-queries#byplaceholdertext): Only useful for targeting a placeholder of a `TextInput`.
14+
- [`getByLabelText`](api-queries#bya11ylabel-byaccessibilitylabel-bylabeltext): This can be used to query every element that is exposed in the accessibility tree as a label, usually when there's no visible text.
15+
- [`getByHintText`](api-queries#bya11yhint-byaccessibilityhint-byhinttext): This can be used to query every element that is exposed in the accessibility tree as a hint. Make sure it also has a label set.
16+
- [`getByAccessibilityState`](api-queries#bya11ystate-byaccessibilitystate): This can be used to query every element that is exposed in the accessibility tree as a state of an interactive element, like a checkbox.
17+
- [`getByAccessibilityValue`](api-queries#bya11value-byaccessibilityvalue): This can be used to query every element that is exposed in the accessibility tree as a value on a range, like a slider.
18+
2. **Queries Users Can Infer**
19+
- [`getByRole`](api-queries#bya11yrole-byaccessibilityrole-byrole): This can be used to query every element that is exposed in the accessibility tree as a role, like buttons or images.
20+
3. **Test IDs**
21+
- [`getByTestId`](api-queries#bytestid): The user cannot see (or hear) these, so this is only recommended for cases where you can't match by text or it doesn't make sense

website/sidebars.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module.exports = {
22
docs: {
33
Introduction: ['getting-started'],
44
'API Reference': ['api', 'api-queries'],
5-
Guides: ['migration-v7', 'migration-v2'],
5+
Guides: ['migration-v7', 'migration-v2', 'how-should-i-query'],
66
Examples: ['react-navigation', 'redux-integration'],
77
},
88
};

0 commit comments

Comments
 (0)