Комментарии 13
Прикольно)
Можно было за пару дней заменить pdf/svg с тенями на png. Рендер векторов всё равно будет глючить - особенности Quartz.
Как часто скриншот-тесты у вас показывают ошибки? Какие это ошибки?
Когда лезем и что-то обновляем в компоненте. То случайно констрейнту зацепишь которую не должен был, то приоритеты путаешь. Я прям без запуска приложения таким образом проверяю что всё ок сверстано и новые требования на вьюху не ломают старые.
Когда мажорно обновляется iOS. Обычно просто кернинги в шрифтах меняются, но на некоторых вьюхах что-то может расплыться.
Можете чуть подробнее раскрыть первый пункт? Это как? Вы запускаете тяжелый скриншот-тестинг (который все равно запускает приложение) под все платформы вместо того, чтобы запускать приложение в Xcode? А в чем профит?
Он не тяжелый. Сгенерить сотню скриншотов вьюхи во всех её возможных состояниях, проверить доступность, проверить как эта вьюха в другие интегрируется — меньше секунды.
Это как? Без запуска симулятора? 0_о
У меня обычно симулятор уже запущен.
Запустить на нем тесты и приаттачиться к ним — пара сек. Прогнать скриншот-тесты конкретной вьюхи — десятки миллисекунд.
Я на ютуб ролики про внедрение дайнамик тайпа в Додо Пицце выкладываю, там как раз через скриншот-тесты все идет. Можете посмотреть на скорость сами: https://youtu.be/u3WISkcQhjw
А есть где-то описание (желательно текстовое) как Вы этого добились? Просто я ни разу не видел, чтобы UI-тесты запускались быстрее, чем единицы или десятки секунд.
Плюс мне непонятно, у вас на видео открыт симулятор, при этом в нем нигде нет того компонента, скриншоты которого Вы проверяете. Это как это так работает?
Кажется, я слегка неправильно использовал скриншоты тесты. В моем понимании это выглядело так. Запускается симулятор, открывается нужный экран, делается нужный скриншот. Открывается следующий экран, делается скриншот для него. А это все жутко долго и нестабильно. То, что я увидел на ролике у Вас, мне совсем непонятно.
Вы говорите про стандартные UI-тесты, а статья про ссылка на скриншот-тестирование через вот эту либу. Работает так:
пишешь юнит-тест в котором создаешь вьюшку и заполняешь ее данными
вызываешь асерт специальный который ее отрендерит
сохранит этот скрншот в репозиторий
при следующем прогоне сгенерит новый скриншот и сравнит с прошлым прогоном.
Скриншотим мы лишь ячейки и контролы, поэтому файлы получаются маленькие, а скорость у них достаточная чтобы гонять их как юнит-тесты
Понял, спасибо. Из статьи это было не совсем очевидно. Ушел изучать инструмент.
Я про них в статье немного писал, там есть пример теста и скриншотов
Обновляю ссылку один месяц, или Лёгких задач не бывает