Проверяет умение выстраивать стратегию тестирования UI-библиотеки компонентов, включая unit, интеграционные и визуальные тесты, что критично для поддержки дизайн-системы.
UI-библиотека компонентов — это фундамент, на котором строятся десятки приложений, поэтому ошибка в одном компоненте может разойтись по всей продуктовой линейке. Тестирование такой библиотеки отличается от тестирования обычного приложения: здесь важны не бизнес-сценарии, а поведение самого компонента, его API (пропсы, события, слоты) и визуальная стабильность.
Используем React Testing Library и Jest: проверяем, что кнопка вызывает onClick и блокируется при disabled.
import { render, screen, fireEvent } from '@testing-library/react';
import { Button } from './Button';
test('вызывает onClick при клике', () => {
const onClick = jest.fn();
render(<Button onClick={onClick}>OK</Button>);
fireEvent.click(screen.getByRole('button', { name: 'OK' }));
expect(onClick).toHaveBeenCalledTimes(1);
});
test('не вызывает onClick при disabled', () => {
const onClick = jest.fn();
render(<Button disabled onClick={onClick}>OK</Button>);
fireEvent.click(screen.getByRole('button'));
expect(onClick).not.toHaveBeenCalled();
});
Каждый компонент описывается сторисом в Storybook, а Chromatic или Playwright делает скриншоты всех состояний. При изменении кода CI сравнивает новые скриншоты с эталонными и подсвечивает diff. Это ловит регрессии в CSS, которые не видны в jsdom.
Итог: тестирование UI-библиотеки стоит строить как пирамиду — много быстрых unit и компонентных тестов, меньше интеграционных и визуальных, плюс обязательные accessibility-проверки. Такой подход даёт уверенность при рефакторинге и защищает потребителей библиотеки от регрессий.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию