С выпуском Chrome 59 теперь доступен режим "без головы" в стабильных сборках для Linux и macOS (а вскоре и для Windows с Chrome 60). Это позволяет нам запускать полнофункциональную версию Chrome без видимого пользовательского интерфейса, что является отличной возможностью для автоматического тестирования. Вот примеры.
chrome --headless --disable-gpu --dump-dom https://stackoverflow.com/
В моем тестере JavaScript я люблю записывать как можно больше информации об используемом браузере, чтобы помочь локализовать проблемы. Например, я записываю многие свойства navigator
, включая текущие плагины браузера:
JSON.stringify(Array.from(navigator.plugins).map(p => p.name))
["Chrome PDF Viewer","Widevine Content Decryption Module","Shockwave Flash","Native Client","Chrome PDF Viewer"]
Насколько я понимаю, Chrome должен вести себя одинаково в режиме без головы, но у меня достаточно опыта, чтобы скептически относиться к новой функции, которая может существенно изменить конвейер рендеринга.
Сейчас я собираюсь запустить тесты в обоих режимах. Я хотел бы, чтобы тестовый участник записал, используется ли режим без головы. Я мог бы передать эту информацию в конфигурациях тестов, но я бы предпочел иметь чистое решение JavaScript, которое я мог бы встроить в самого организатора теста. Тем не менее, я не смог найти интерфейс браузера, который бы показывал, активен ли режим без головы.
Есть ли способ определить, работает ли Chrome в автономном режиме из JavaScript?