Skip to main content

Браузеры

Введение

Каждая версия Playwright требует конкретные версии бинарных файлов браузеров для работы. Вам нужно будет использовать Playwright CLI для установки этих браузеров.

С каждым релизом Playwright обновляет версии поддерживаемых браузеров, чтобы последняя версия Playwright поддерживала последние версии браузеров в любой момент времени. Это означает, что каждый раз, когда вы обновляете Playwright, вам может понадобиться повторно выполнить команду install в CLI.

Установка браузеров

Playwright может устанавливать поддерживаемые браузеры. Запуск команды без аргументов установит браузеры по умолчанию.

npx playwright install

Вы также можете установить конкретные браузеры, указав аргумент:

npx playwright install webkit

Посмотреть все поддерживаемые браузеры:

npx playwright install --help

Установка системных зависимостей

Системные зависимости могут устанавливаться автоматически. Это полезно для CI-сред.

npx playwright install-deps

Вы также можете установить зависимости для одного браузера, передав его в качестве аргумента:

npx playwright install-deps chromium

Также возможно комбинировать install-deps с install, чтобы браузеры и зависимости ОС были установлены одной командой.

npx playwright install --with-deps chromium

Смотрите системные требования для официально поддерживаемых операционных систем.

Регулярное обновление Playwright

Держите вашу версию Playwright в актуальном состоянии, чтобы иметь возможность использовать новые функции и тестировать ваше приложение на последних версиях браузеров, а также выявлять ошибки до того, как последняя версия браузера будет выпущена для широкой публики.

# Обновить playwright
npm install -D @playwright/test@latest

# Установить новые браузеры
npx playwright install

Проверьте заметки о релизах, чтобы узнать, какая версия последняя и какие изменения были выпущены.

# Узнать, какая версия Playwright у вас, выполнив следующую команду
npx playwright --version

Настройка браузеров

Playwright может запускать тесты в браузерах Chromium, WebKit и Firefox, а также в брендированных браузерах, таких как Google Chrome и Microsoft Edge. Он также может работать на эмулируемых планшетах и мобильных устройствах. Смотрите реестр параметров устройств для полного списка выбранных настольных, планшетных и мобильных устройств.

Запуск тестов в разных браузерах

Playwright может запускать ваши тесты в нескольких браузерах и конфигурациях, настраивая проекты в конфигурации. Вы также можете добавить разные параметры для каждого проекта.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
/* Тестирование в настольных браузерах */
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
/* Тестирование в мобильных вьюпортах. */
{
name: 'Mobile Chrome',
use: { ...devices['Pixel 5'] },
},
{
name: 'Mobile Safari',
use: { ...devices['iPhone 12'] },
},
/* Тестирование в брендированных браузерах. */
{
name: 'Google Chrome',
use: { ...devices['Desktop Chrome'], channel: 'chrome' }, // или 'chrome-beta'
},
{
name: 'Microsoft Edge',
use: { ...devices['Desktop Edge'], channel: 'msedge' }, // или 'msedge-dev'
},
],
});

Playwright по умолчанию запустит все проекты.

npx playwright test

Запуск 7 тестов с использованием 5 рабочих процессов

[chromium] › example.spec.ts:3:1 › базовый тест (2с)
[firefox] › example.spec.ts:3:1 › базовый тест (2с)
[webkit] › example.spec.ts:3:1 › базовый тест (2с)
[Mobile Chrome] › example.spec.ts:3:1 › базовый тест (2с)
[Mobile Safari] › example.spec.ts:3:1 › базовый тест (2с)
[Google Chrome] › example.spec.ts:3:1 › базовый тест (2с)
[Microsoft Edge] › example.spec.ts:3:1 › базовый тест (2с)

Используйте опцию командной строки --project, чтобы запустить один проект.

npx playwright test --project=firefox

Запуск 1 теста с использованием 1 рабочего процесса

[firefox] › example.spec.ts:3:1 › базовый тест (2с)

С помощью расширения VS Code вы можете запускать ваши тесты в разных браузерах, отмечая флажок рядом с именем браузера в боковой панели Playwright. Эти имена определены в вашем файле конфигурации Playwright в разделе проектов. Конфигурация по умолчанию при установке Playwright предоставляет вам 3 проекта: Chromium, Firefox и WebKit. Первый проект выбран по умолчанию.

Раздел проектов в расширении VS Code

Чтобы запустить тесты в нескольких проектах (браузерах), выберите каждый проект, отметив флажки рядом с именем проекта.

Выбор проектов для запуска тестов

Chromium

Для Google Chrome, Microsoft Edge и других браузеров на основе Chromium Playwright по умолчанию использует сборки Chromium с открытым исходным кодом. Поскольку проект Chromium опережает брендированные браузеры, когда мир использует Google Chrome N, Playwright уже поддерживает Chromium N+1, который будет выпущен в Google Chrome и Microsoft Edge через несколько недель.

Chromium: headless shell

Playwright поставляет обычную сборку Chromium для работы с графическим интерфейсом и отдельную headless shell для chromium для безголового режима.

Если вы запускаете тесты только в headless shell (т.е. опция channel не указана), например, в CI, вы можете избежать загрузки полного браузера Chromium, передав --only-shell во время установки.

# только запуск тестов в безголовом режиме
npx playwright install --with-deps --only-shell

Chromium: новый безголовый режим

Вы можете выбрать новый безголовый режим, используя канал 'chromium'. Как указывает официальная документация Chrome:

Новый безголовый режим, с другой стороны, является настоящим браузером Chrome и, следовательно, более аутентичен, надежен и предлагает больше функций. Это делает его более подходящим для высокоточных тестов веб-приложений или тестирования расширений браузера.

Смотрите issue #33566 для получения подробностей.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'], channel: 'chromium' },
},
],
});

С новым безголовым режимом вы можете пропустить загрузку headless shell во время установки браузера, используя опцию --no-shell:

# только запуск тестов в безголовом режиме
npx playwright install --with-deps --no-shell

Google Chrome и Microsoft Edge

Хотя Playwright может загружать и использовать последнюю сборку Chromium, он может работать с брендированными браузерами Google Chrome и Microsoft Edge, доступными на машине (обратите внимание, что Playwright не устанавливает их по умолчанию). В частности, текущая версия Playwright будет поддерживать стабильные и бета-каналы этих браузеров.

Доступные каналы: chrome, msedge, chrome-beta, msedge-beta, chrome-dev, msedge-dev, chrome-canary, msedge-canary.

warning

Некоторые политики корпоративного браузера могут повлиять на способность Playwright запускать и управлять Google Chrome и Microsoft Edge. Запуск в среде с политиками браузера выходит за рамки проекта Playwright.

warning

Google Chrome и Microsoft Edge перешли на реализацию нового безголового режима, который ближе к обычному графическому режиму. Это отличается от headless shell для chromium, который используется в Playwright по умолчанию при запуске в безголовом режиме, поэтому ожидайте различного поведения в некоторых случаях. Смотрите issue #33566 для получения подробностей.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
/* Тестирование в брендированных браузерах. */
{
name: 'Google Chrome',
use: { ...devices['Desktop Chrome'], channel: 'chrome' }, // или 'chrome-beta'
},
{
name: 'Microsoft Edge',
use: { ...devices['Desktop Edge'], channel: 'msedge' }, // или "msedge-beta" или 'msedge-dev'
},
],
});

Установка Google Chrome и Microsoft Edge

Если Google Chrome или Microsoft Edge недоступны на вашем компьютере, вы можете установить их с помощью командной строки Playwright:

npx playwright install msedge
warning

Установки Google Chrome или Microsoft Edge будут установлены в стандартное глобальное местоположение вашей операционной системы, перезаписывая вашу текущую установку браузера.

Запустите с опцией --help, чтобы увидеть полный список браузеров, которые можно установить.

Когда использовать Google Chrome и Microsoft Edge, а когда нет?

По умолчанию

Использование конфигурации Playwright по умолчанию с последним Chromium обычно является хорошей идеей. Поскольку Playwright опережает стабильные каналы браузеров, это дает уверенность в том, что предстоящие релизы Google Chrome или Microsoft Edge не сломают ваш сайт. Вы сможете выявить проблемы заранее и у вас будет много времени, чтобы исправить их до официального обновления Chrome.

Регрессионное тестирование

Тем не менее, политики тестирования часто требуют проведения регрессионного тестирования на текущих общедоступных браузерах. В этом случае вы можете выбрать один из стабильных каналов, "chrome" или "msedge".

Медиа кодеки

Еще одной причиной для тестирования с использованием официальных бинарных файлов является необходимость тестирования функциональности, связанной с медиа кодеками. Chromium не имеет всех кодеков, которые включает Google Chrome или Microsoft Edge из-за различных лицензионных соображений и соглашений. Если ваш сайт зависит от таких кодеков (что бывает редко), вам также следует использовать официальный канал.

Корпоративная политика

Google Chrome и Microsoft Edge соблюдают корпоративные политики, которые включают ограничения на возможности, сетевой прокси, обязательные расширения, которые мешают тестированию. Поэтому, если вы являетесь частью организации, использующей такие политики, проще всего использовать встроенный Chromium для вашего локального тестирования, вы все равно можете выбрать стабильные каналы на ботах, которые обычно свободны от таких ограничений.

Firefox

Версия Firefox в Playwright соответствует последней стабильной версии Firefox. Playwright не работает с брендированной версией Firefox, так как она зависит от патчей.

Обратите внимание, что доступность определенных функций, которые сильно зависят от платформы, может варьироваться между операционными системами. Например, доступные медиа кодеки существенно различаются между Linux, macOS и Windows.

WebKit

WebKit в Playwright основан на последних источниках основной ветки WebKit, часто до того, как эти обновления будут включены в Apple Safari и другие браузеры на основе WebKit. Это дает много времени для реагирования на потенциальные проблемы с обновлениями браузера. Playwright не работает с брендированной версией Safari, так как она зависит от патчей. Вместо этого вы можете тестировать с использованием самой последней сборки WebKit.

Обратите внимание, что доступность определенных функций, которые сильно зависят от платформы, может варьироваться между операционными системами. Например, доступные медиа кодеки существенно различаются между Linux, macOS и Windows. Хотя запуск WebKit на Linux CI обычно является наиболее доступным вариантом, для наиболее близкого к Safari опыта вам следует запускать WebKit на Mac, например, если вы выполняете воспроизведение видео.

Установка за файрволом или прокси

По умолчанию Playwright загружает браузеры из CDN Microsoft.

Иногда компании поддерживают внутренний прокси, который блокирует прямой доступ к общедоступным ресурсам. В этом случае Playwright можно настроить для загрузки браузеров через прокси-сервер.

HTTPS_PROXY=https://192.0.2.1 npx playwright install

Если запросы прокси перехватываются с помощью собственного недоверенного центра сертификации (CA) и возникает ошибка Error: self signed certificate in certificate chain при загрузке браузеров, вам необходимо установить ваши собственные корневые сертификаты через переменную окружения NODE_EXTRA_CA_CERTS перед установкой браузеров:

export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"

Если ваша сеть медленно подключается к архиву браузеров Playwright, вы можете увеличить тайм-аут подключения в миллисекундах с помощью переменной окружения PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT:

PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 npx playwright install

Если вы устанавливаете зависимости и вам нужно использовать прокси на Linux, убедитесь, что вы выполняете команду от имени пользователя root. В противном случае Playwright попытается стать root и не передаст переменные окружения, такие как HTTPS_PROXY, менеджеру пакетов Linux.

sudo HTTPS_PROXY=https://192.0.2.1 npx playwright install-deps

Загрузка из репозитория артефактов

По умолчанию Playwright загружает браузеры из CDN Microsoft.

Иногда компании поддерживают внутренний репозиторий артефактов для размещения бинарных файлов браузеров. В этом случае Playwright можно настроить для загрузки из пользовательского местоположения с помощью переменной окружения PLAYWRIGHT_DOWNLOAD_HOST.

PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 npx playwright install

Также возможно использовать хосты загрузки для каждого браузера с помощью переменных окружения PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST, PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST и PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST, которые имеют приоритет над PLAYWRIGHT_DOWNLOAD_HOST.

PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 npx playwright install

Управление бинарными файлами браузеров

Playwright загружает браузеры Chromium, WebKit и Firefox в кэш-папки, специфичные для ОС:

  • %USERPROFILE%\AppData\Local\ms-playwright на Windows
  • ~/Library/Caches/ms-playwright на macOS
  • ~/.cache/ms-playwright на Linux

Эти браузеры займут несколько сотен мегабайт дискового пространства при установке:

du -hs ~/Library/Caches/ms-playwright/*
281M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX

Вы можете переопределить поведение по умолчанию с помощью переменных окружения. При установке Playwright попросите его загрузить браузеры в конкретное местоположение:

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install

При запуске скриптов Playwright попросите его искать браузеры в общем местоположении.

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright test

Playwright отслеживает пакеты, которые нуждаются в этих браузерах, и будет очищать их, когда вы обновляете Playwright до новых версий.

note

Разработчики могут выбрать этот режим, экспортировав PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers в своем .bashrc.

Герметичная установка

Вы можете выбрать герметичную установку и разместить бинарные файлы в локальной папке:

# Размещает бинарные файлы в node_modules/playwright-core/.local-browsers
PLAYWRIGHT_BROWSERS_PATH=0 npx playwright install
note

PLAYWRIGHT_BROWSERS_PATH не изменяет путь установки для Google Chrome и Microsoft Edge.

Удаление устаревших браузеров

Playwright отслеживает клиентов, которые используют его браузеры. Когда больше нет клиентов, которые требуют определенную версию браузера, эта версия удаляется из системы. Таким образом, вы можете безопасно использовать экземпляры Playwright разных версий и одновременно не тратить дисковое пространство на браузеры, которые больше не используются.

Чтобы отказаться от удаления неиспользуемых браузеров, вы можете установить переменную окружения PLAYWRIGHT_SKIP_BROWSER_GC=1.

Удаление браузеров

Это удалит браузеры (chromium, firefox, webkit) текущей установки Playwright:

npx playwright uninstall

Чтобы удалить браузеры других установок Playwright, также передайте флаг --all:

npx playwright uninstall --all