Skip to main content

Які типи селекторів надає RTL?

React Testing Library надає кілька груп селекторів. Їхня філософія - шукати елементи так, як це зробив би користувач, а не за технічними деталями.


1) За доступністю (головні та рекомендовані)

Ці селектори імітують поведінку користувачів зі скрінрідерами і вважаються найправильнішими.

МетодЩо шукає
getByRoleза роллю елемента, кнопка, посилання, заголовок тощо
getByLabelTextза текстом label у формах
getByPlaceholderTextза placeholder
getByTextза видимим текстом
getByDisplayValueза значенням поля вводу

Приклад:

js
getByRole("button", { name: /send/i });

2) За alt-текстом і title

Корисно для зображень та іконок.

МетодЩо шукає
getByAltTextза alt у зображення
getByTitleза атрибутом title

3) За test-id (на крайній випадок)

Використовується, лише якщо інших варіантів немає.

МетодЩо шукає
getByTestIdза data-testid="…"

RTL вважає це крайнім заходом, тому що такі тести ближчі до реалізації, а не до поведінки.


4) Async і множинні версії тих самих методів

У всіх селекторів є варіанти:

ПрефіксЩо означає
getBy…знайти елемент, якщо немає, одразу помилка
queryBy…знайти елемент, якщо немає, повернути null
findBy…асинхронний пошук (очікування появи, Promises)
getAllBy…очікує кілька елементів
queryAllBy…не кидає помилку за відсутності

Головна думка

RTL просуває селектори в такому пріоритетному порядку:

  1. Role / Text / Label, як користувач
  2. Alt / Title / Placeholder, близько до реальності
  3. Test ID, лише якщо інакше не можна

Якщо знадобиться, можу навести приклади тестів із кожним типом селектора.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.