Настраивал ли окружение для тестирования?
Что проверяют
Отличаете ли вы «писал тесты по готовому шаблону» от «поднимал инфраструктуру с нуля». Настройка окружения показывает, понимаете ли вы, что тест проверяет поведение, а не реализацию, и умеете ли сделать прогон быстрым и стабильным. Медленный или флакающий прогон команда просто перестаёт запускать.
Как отвечать
Пройти по уровням и называть то, что делали руками:
- юнит и компонентные тесты: раннер и окружение с эмуляцией DOM, запросы к элементам по доступным ролям и тексту, а не по классам;
- сеть: перехват на уровне запросов общим слоем моков, а не подмена
fetchв каждом файле; - сборка тестов: трансформация TypeScript и JSX, алиасы путей, заглушки для стилей и картинок, общий
setupс матчерами и очисткой после каждого теста; - сквозные тесты: отдельный конфиг, поднятие приложения перед прогоном, свои тестовые данные;
- CI: запуск на каждый пулреквест, кэш зависимостей, артефакты при падении, порог покрытия, если он вообще нужен.
Отдельно скажите про борьбу с нестабильностью: фиксация времени и таймеров, ожидание состояния интерфейса вместо пауз, изоляция данных между тестами.
Где спотыкаются
Рассказывают про установку пакета и на этом останавливаются. Настройка окружения это не команда установки, а принятые решения: что мокаем, где граница юнита, сколько времени прогон имеет право занимать.
Второе: мокают всё подряд, включая собственные модули. Тест превращается в зеркало реализации, и рефакторинг без изменения поведения красит сборку в красный, хотя приложение работает.
Третье: гоняют сквозные тесты на каждый коммит и по живому бэкенду. Прогон растягивается, падения приходят от чужих данных, и через месяц красный пайплайн перестают читать вовсе.