Все глаза разные
Соблюдая https://t.me/xavescor_code/13 я пришёл к ситуации, когда у меня остались в статусе "outdated" только библиотеки связанные с UI. И основной проблемой оказалось то, что мы понаписали кучу css кода, который непонятно как будет работать в новых версиях библиотеки.
Очевидное решение: давайте всё заскриншотим. Playwright как раз умеет в них. Но, вот тут начинаются грабли.
Я, как и большая часть моих коллег, использую мак для разработки.
* Новость первая. Каждая ОС рендерит страницу по-разному. Даже в одном и том же браузере. Решение? Давай запихнём всё в докер, чтобы везде был линукс.
* Новость вторая. playwright не работает в alpine, поэтому придётся нести или их базовый образ с убунтой. Или самому использовать убунту. Так как у нас Bazel, то нужно собирать базовый образ с нуля для надёжности
* Новость третья. Хромиум не работает на голой убунте. Нужно доставлять ещё 4 библиотеки, чтобы он запустился
* Новость четвёртая. Браузер на одной и той же ОС, но на разных архитектурах рендерят страницу по-разному. У меня мак на ARM, а в CI x86_64. В итоге перевожу сборку образа на linux_amd64 и запускаю в режиме эмуляции
* Новость пятая. Докер под мак на арме просто зависает в режиме эмуляции. Нужно переносить эмуляцию на уровень розетты
* Новость шестая. Плейрайт в 1 из двух запусков просто падает с ошибкой в бинарных либах хромиума. Но если перезапустить, то в 90% всё пройдёт успешно.
Но зато теперь скриншоты на всех машинах генерятся одинаковые. Но сколько же гемора в этом всём. И самое тупое: ни playwright, ни puppeteer не дают норм руководства, чтобы избежать всего этого дерьма.
Post #26
585