Главная · Каталог задач · Стабильные snapshot-тесты интерфейса

Готовый сценарий

Стабильные snapshot-тесты интерфейса

Snapshot-тест полезен, когда его изменение можно прочитать и объяснить. Енотик поможет отделить стабильный контракт от времени, случайного id и лишней разметки. Учебный ответ содержит номер заказа, статус и created_at; дата меняется при каждом прогоне. Нужно либо контролировать часы, либо проверять динамическое поле отдельно. Удалять всё содержимое ради неизменного снимка нельзя: тест должен продолжать замечать неверный статус или исчезновение обязательного поля в ответе приложения.

Попробуйте прямо здесь Отвечает Gemma 3 12B — модель подобрал сервис

Открыть в полном чате

  • Доступ без VPN
  • Русский интерфейс
  • Оплата рублями по факту

Зачем

Зачем это нужно

01

Выделите компактную часть результата, которая действительно является контрактом.

02

Контролируйте время и случайность либо проверяйте их отдельными assertions.

03

Прочитайте diff перед обновлением эталона и сохраните чувствительность к дефектам.

Вопросы

Частые вопросы

Как задать пример нестабильного снимка?

«Учебный JSON заказа содержит случайный id, текущее created_at и status=new. Повтор без изменения логики должен проходить, а status=paid — падать». Попросите два варианта: фиксированные зависимости и точные matchers для динамических полей. Затем проверьте отсутствие даты: выбранная нормализация не должна позволять пропустить обязательное поле только потому, что его значение меняется между запусками теста.

Когда лучше заменить snapshot обычными проверками?

Когда важны несколько признаков поведения, а снимок содержит сотни строк посторонней структуры. Например, доступное имя кнопки и её disabled-состояние понятнее проверить прямо. Попросите перечислить защищаемые свойства до сокращения снимка. Маленький snapshot остаётся полезен для стабильного формата, но не заменяет проверку взаимодействия, сохранения данных и результата действия пользователя в интерфейсе приложения.

Можно ли автоматически обновлять все снимки?

Только если каждое изменение результата уже рассмотрено и признано ожидаемым в вашей процедуре. Само обновление не отличает исправление от регрессии. Попросите сгруппировать diff на шум времени, перестановку и смысловое изменение, затем проверьте последнюю группу. Автообновление эталона при любом падении делает тест неспособным удерживать прежний контракт и превращает его в запись текущего поведения без проверки.

Как проверять стабильность после правки?

Повторите тест с разными реальными моментами запуска и убедитесь, что контролируемый источник времени сохраняет ожидаемый результат. Затем намеренно измените значимое поле в учебной копии: тест должен отказать. Енотик может предложить структуру проверок, но не подтверждает ваш прогон. Укажите версию Jest и сериализатор, поскольку формат снимка и доступные matchers зависят от установленного инструментария проекта.

Рядом

Дальше — весь каталог задач: поиск по названию, темы и фильтры.

Нужно больше

Весь Енотик — в одном окне

Полный чат: история, вложения, базы знаний, картинки и видео. Один баланс на все модели, оплата рублями по факту.