Size: a a a

2020 September 24

DB

Dima Bildin in React Kyiv
Dmitry Zherebko
это оч странно если у тебя в пре 20 дифов
Я просто продолжил предложенный выше пример "меняешь в одном, ломается во всех".
Но бывает и так, что 20 диффов. Бывает, фича в пр относительно большая. Бывает, что обновилась либа с компонентами и кнопка на 2пкс шире. Бывает, у хрома чуть поменялся антиалиасинг и шрифты стали чуть другие и много других факторов, которые делают скриншотные тесты флеки.
И когда у тебя 200-500 флеки тестов, потому что эти тесты было легко сделать, то у тебя становится вечно-красный билд
источник

DZ

Dmitry Zherebko in React Kyiv
Dima Bildin
Я просто продолжил предложенный выше пример "меняешь в одном, ломается во всех".
Но бывает и так, что 20 диффов. Бывает, фича в пр относительно большая. Бывает, что обновилась либа с компонентами и кнопка на 2пкс шире. Бывает, у хрома чуть поменялся антиалиасинг и шрифты стали чуть другие и много других факторов, которые делают скриншотные тесты флеки.
И когда у тебя 200-500 флеки тестов, потому что эти тесты было легко сделать, то у тебя становится вечно-красный билд
если ты поменял либу с компонентами, то это логично что много может поменяться и надо проревьювить, такое может случиться даже если это не скриншот тесты, хром ты тоже просто так не меняешь, он зафиксирован и отдельно только можешь его поменять.
источник

DZ

Dmitry Zherebko in React Kyiv
по этой логике и обычные тесты будут падать
источник

DZ

Dmitry Zherebko in React Kyiv
поменялась версия жсдома - упала куча тестов
источник

DZ

Dmitry Zherebko in React Kyiv
поменялась библиотека компонентов - упала  пачка тестов
источник

DB

Dima Bildin in React Kyiv
Dmitry Zherebko
если ты поменял либу с компонентами, то это логично что много может поменяться и надо проревьювить, такое может случиться даже если это не скриншот тесты, хром ты тоже просто так не меняешь, он зафиксирован и отдельно только можешь его поменять.
Либа с компонентами остаётся та же, обновляется минорная версия (ней работает другая команда). Инфра, которая запускает puppeteer для тестов – тоже своя команда и они обновляют, когда считают нужным.
источник

DB

Dima Bildin in React Kyiv
Dmitry Zherebko
по этой логике и обычные тесты будут падать
Это не "логика" с предположениями, это из реальных случаев. Делали много скриншотных тестов и в какой-то момент пришли к тому, что их не стоит пихать везде где попало
источник

DZ

Dmitry Zherebko in React Kyiv
Dima Bildin
Это не "логика" с предположениями, это из реальных случаев. Делали много скриншотных тестов и в какой-то момент пришли к тому, что их не стоит пихать везде где попало
ну их стоит локализировать до конкретного компонента
источник

DZ

Dmitry Zherebko in React Kyiv
но когда они достаточно локализированы то ревьювить легко
источник

DZ

Dmitry Zherebko in React Kyiv
вот пример скриншот теста у нас
источник

DZ

Dmitry Zherebko in React Kyiv
источник

DZ

Dmitry Zherebko in React Kyiv
источник

DB

Dima Bildin in React Kyiv
На этом примере скриншот отлично заходит) Так как хочется проверить размеры кружочков и тд, я полагаю)
Мы когда делали редактор картинки, то лучше скриншотных тестов нет ничего, навернули blur, кроп, вырезали фон и тд – взяли картинку из канвы и сравнили)
Но скриншот с тем, что показывается за состоние в сайдбаре со слайдерами и инпутами получался слишком флеки
источник

DB

Dima Bildin in React Kyiv
Ну и как бы, чтоб было понятно. Я не против скриншотных тестов. Я против их использования всегда "потому что это легче" без того чтоб задуматься, что мы хотим тестировать, в каких случаях тест упадёт и принесёт пользу, а в каких упадёт и будет раздражать. Если вторых будет 20 случаев на 1 первый, то тогда мб это не подходит
источник

DZ

Dmitry Zherebko in React Kyiv
меня пока напрягает флекинес от того, что на линуксе  на сиай и на линуксе локально отличается рендеринг шрифтов
источник

DZ

Dmitry Zherebko in React Kyiv
я так и не уловил в чём нюанс и почему есть эта разница
источник

DB

Dima Bildin in React Kyiv
У нас тесты на aws запускаются, локально можно, но чисто для дебага, на их скриншоты мы не полагаемся, как раз из-за того что рендеринг разный
источник

DD

Dmytro Dovhan in React Kyiv
Скриншот тесты, кстати, практически бесплатно заводятся со сторибуком - уже есть шоу кейс компонентов в разных состояниях, надо просто поделать скрины с них
а проблемы с разным рендерингом решаются запуском в докере, с фиксированными версиями браузеров
источник

DZ

Dmitry Zherebko in React Kyiv
решаются запуском в докере - нет в том то и дело
источник

DZ

Dmitry Zherebko in React Kyiv
у меня вот в докере запускается папетир локально и иногда шрифты на сиайке и локально рендерятся иначе
источник