Модуль 15 · Урок 57
React Testing Library, semantic queries і async UI
Component test має нагадувати реальне використання: знайти control за role/name, виконати повну interaction через user-event і дочекатися observable UI transition.
Query priority
getByRole/findByRoleз accessible name.getByLabelTextдля controls.- Visible text для user-facing result.
queryBy*для absence.data-testidлише documented escape hatch.
Якщо semantic query не знаходить кнопку або input, спершу перевірте markup/accessibility. Не тестуйте internal state, Hook call count, CSS class або private child лише тому, що це простіше.
Async і boundary control
await user.type(screen.getByRole('textbox', { name: /назва/i }), 'react'); await user.click(screen.getByRole('button', { name: /застосувати/i }));user-event моделює повну interaction. findBy*/waitFor очікують loading→result; arbitrary sleep створює flakiness. Контролюйте fetch response, але залишайте validator, state transitions і DOM real. Окремо перевірте HTTP error/retry, valid empty, filtered empty та success.
jsdom має межі
Він не доводить real layout, paint, navigation, focus ring, browser compatibility або Web Vitals — потрібен окремий browser layer.
Практика
Запустіть 7 lab tests, прочитайте failure output semantic query та звірте case/mock/query/async registers.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.