TGViewer
Мобильная разработка Мобильная разработка @mobi_dev · 13.2K subscribers
Post #4125 1.84K
Мобильная разработка Photo
Snapshot-тесты для дизайн-системы hh.ru

Привет! Меня зовут Андрей Максимкин. Я iOS-разработчик в hh.ru. В своих статьях (тут, тут и не только) мы уже не раз говорили о большой любви к тестам и их важной роли в нашем процессе разработки. В этой статье хочу поделиться опытом использования snapshot-тестов, начиная с этапа внедрения. Статья будет полезна для QA и iOS-разработчиков разных уровней. Обсудим не только теорию, но и напишем реальный snapshot-тест — как в нашей практике.

Вместо вступления

Сначала расскажем про snapshot-тесты и для чего они нужны. Snapshot тесты — это метод тестирования, который используется для защиты внешнего вида компонентов и интерфейсов от незапланированных изменений. Они позволяют зафиксировать эталонное состояние компонента и в дальнейшем использовать как образец. Это помогает выявлять изменения в пользовательском интерфейсе, которые могут возникнуть в результате обновлений кода.

В hh.ru мы активно разрабатываем нашу собственную дизайн-систему (ДС). Дело в том, что компоненты ДС могут иметь широкий набор свойств: цвета, размеры, скругления. Проверять корректность, например, цветов обычным ручным тестировщикам на длинной дистанции невозможно, поэтому возникла потребность автоматизировать проверки. Кроме того, при рефакторинге кода некоторые компоненты могут сломаться — хотелось бы находить такие проблемы сразу. Snapshot-тесты показались лучшим решением этих проблем.

Когда-то давно в hh.ru уже были snapshot-тесты. На тот момент они были написаны на экраны приложения. Эти экраны часто меняли свой дизайн, тесты вели себя нестабильно и падали, поэтому их приходилось переписывать. В итоге от snapshot-тестов отказались. Так что в своей новой попытке внедрения snapshot-тестов решили не писать тесты для экранов, а только для ДС.
Читать далее

Читать: https://habr.com/ru/companies/hh/articles/962420/

@mobi_dev | Другие наши каналы
More from @mobi_dev
  1. Sep 28, 2026Как загружать локальный HTML в SwiftUI WebView через свою URL-схему В iOS 26 у SwiftUI поя…
  2. Sep 27, 2026Как встроить генерацию изображений через Image Playground в iOS-приложение Фреймворк Image…
  3. Sep 27, 2026Как передавать контент между iOS-приложениями через Siri Чтобы Siri могла отдать сущность…
  4. Sep 27, 2026Как собрать фильтры и индикаторы в Android на Compose Material 3 В Compose Material 3 есть…
  5. Sep 26, 2026Как Baseline Profiles ускоряют запуск и прокрутку Android-приложений ART сначала интерпрет…
  6. Sep 26, 2026Как перевести платное iOS-приложение на freemium и сохранить доступ покупателям Схема мигр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →