puppeteer 14: Сhromium for Apple Silicon



Практически сразу после релиза устройств на M1 в puppeteer появилось ишью Installation fails on Apple Silicon / M1. В puppeteer для загрузки правильной версии Chromium нужно получить текущую архитектуру через process.arch и составить правильную ссылку. Но от правильной ссылки мало толку, если нужной версии просто не существует в природе.



Эту проблему быстро починили, всегда скачивая версию под Intel в том числе и на устройствах с M1. Этот способ достаточо хорошо работало благодаря Rosetta 2, и ишью закрыли.



Через какое-то время появились билды хромиума и под Apple Silicon, но всем уже было всё равно, ведь puppeteer и так работал. Мне вот всё равно не было, и я открыл открыл пул-реквест с загрузкой правильного хромиума.



Пул-реквест я начал делать ещё в сентябре, и получился он небольшим. Но сперва пришлось ждать пока puppeteer обновится до минимальной версии, в которой есть поддержка arm64. В итоге только в феврале я смог продолжить работу. Ещё немного прокрастинации, ещё меньше кода и вот, неделю назад пул-реквест смерджили.



В процессе меня очень бесил пайплайн, т.к. локально тесты падали, а пайплайн не запускается автоматически, и нужно просить ментейнера запустить тесты вручную, т.к. я контрибьючу в репозиторий впервые. Кажется, только на эти ожидания ушло дня 3.



puppeteer 14 вышел 4 дня назад с моим пул-реквестом в комплекте. Поддержка пока что экспериментальная, т.к. Github Actions не поддерживает M1. Но если у вас девайс на M1, то смело ставьте глобальную env-переменную PUPPETEER_EXPERIMENTAL_CHROMIUM_MAC_ARM и у вас всё будет красиво!



P.S. Забавно, что пришлось делать костыль для Firefox, т.к. он поставляется в universal binary (это когда 2 бинарника для Intel и M1 объединены в один апп), а вот у Chromium свои билды под каждую архитектуру.