Comments 2
Если кому-то интересно, есть ли в Playwright общие исходники с Puppeteer, то можно посмотреть на эти два файла, например:
- https://github.com/puppeteer/puppeteer/blob/763e3901d9ff7c631e95fa22fd37b190715a30c3/utils/flakiness-dashboard/FlakinessDashboard.js
- https://github.com/microsoft/playwright/blob/9ba375c06344835d783fe60bf33f857f9bc208a4/utils/flakiness-dashboard/FlakinessDashboard.js
Отличаются только копирайтами
Большое спасибо за интервью и за вопрос про Juggler в частности.
Честно говоря, не очень понятно, как команда позиционирует Juggler. С одной стороны, насколько я понял из интервью, Juggler — это протокол именно для FF, который только идеологически связан с CDP, т.е. решает схожие задачи, но не обязательно схожим образом, поскольку некоторая часть протокола очень тесно связана с самим Chrome'ом и фактически не может быть кроссбраузерной.
С другой стороны, Juggler похож на CDP, и Андрей упомянул, что они работают над долгосрочным API. Будет ли это API поверх CDP/Juggler, или Juggler и будет основой для данного API? Будет ли оно кроссбраузерным?
Мне кажется, это важный вопрос для будущих инструментов. Например, если кто-то захочет создать библиотеку на Python, в каком направлении ему следует двигаться?
- Библиотека реализует общие методы, которые под капотом используют CDP/Juggler в зависимости от браузера.
- Библиотека реализует клиента для кроссбраузерного API.
- Библиотека коммуницирует с playwright, запущенным на node js.
По поводу недоверия к пропатченным браузерам: на мой взгляд, проблема не столько в боязни за Rendering Engine. Представьте, что у нас есть веб приложение, и пользователи завели баг для определённой версии браузера (например, баг воспроизводится в FF версии < 70). В итоге мы создаём тест для регресса и гоняем автотесты и для новой версии FF, и для старой. Поскольку, насколько я это понимаю, определённая версия Playwright'а использует свою фиксированную версию браузера, мне, как автоматизатору, теперь необходимо придумать, как прикрутить использование нескольких версий Playwright'а в автотестах: возможно, всё решается разными контейнерами или виртуальными машинами для каждой версии, но, опять же, инфраструктурные затраты несравнимо больше, чем запуск разных версий с одной машины. Не стоит ещё забывать, что в данном случае мы ещё надеемся, что наши тесты совместимы с обеими версиями Playwright'а, особенно если протокол не менялся между версиями.
С другой стороны, проблемы разделения Playwright и браузеров тоже понятны: наверняка, у всех была ситуация, когда при работе с selenium'ом возникала проблема совместимости вебдрайвера с соответствующим браузером из-за различия в версиях.
Желаю удачи и успеха команде и проекту Playwright. Хочется верить, что это будущее автоматизации веб тестирования.
«Если сайты будут работать лучше — это будет идеально»: интервью с разработчиком Playwright Андреем Лушниковым