Браузеры
- Как Testplane работает с браузерами
- Как описать браузеры в конфигурации
- Какие есть источники браузеров: локальные, Docker, облако
- Как выбрать подход под свою задачу
Введение
Testplane запускает тесты в реальных браузерах и не привязан к конкретным версиям или одному источнику браузеров.
Вы описываете нужные браузеры в секции browsers, а параметр gridUrl определяет, откуда их брать: локально, из Docker-грида (например, Selenoid) или из удаленного облака (BrowserStack, Sauce Labs).
Общая схема работы:
- Testplane читает секцию
browsers - Для каждого браузера берет
gridUrl(общий или переопределенный на уровне браузера) - Обращается к гриду и запускает браузер с указанными
desiredCapabilities
Обычно для всех браузеров используют один источник (один gridUrl), но пр и необходимости его можно задать отдельно для каждого браузера.
Конфигурация браузеров
Секция browsers описывает, в каких браузерах запускаются тесты.
import type { ConfigInput } from "testplane";
export default {
browsers: {
chrome: {
gridUrl: "local",
desiredCapabilities: {
browserName: "chrome",
browserVersion: "125.0",
},
windowSize: "1920x1080",
headless: true,
},
"chrome-mobile": {
gridUrl: "local",
desiredCapabilities: {
browserName: "chrome",
browserVersion: "125.0",
"goog:chromeOptions": {
mobileEmulation: {
deviceName: "iPhone 12 Pro",
},
},
},
headless: true,
},
},
} satisfies ConfigInput;
Ключ в browsers (chrome, chrome-mobile) — логическое имя браузера. Оно используется в CLI и в отчетах. Имя не ограничивает реальные настройки: в desiredCapabilities можно указать любой browserName и browserVersion.
Версия браузера задается в desiredCapabilities.browserVersion. Для локальных браузеров Testplane скачает нужную версию, если она поддерживается.
windowSize: "1920x1080" задает размер окна, что важно для скриншотных тестов.
Headless-режим
Параметр headless: true включает запуск браузера без графического интерфейса.
Важные моменты:
-
Поведение тестов идентично: с точки зрения тестов браузер с
headless: trueиheadless: falseработает полностью одинаково. Например, при запуске сheadless: trueвсе еще можно делать скриншоты, работать с DOM, выполнять любые команды. -
Параметр обязателен в окружениях без UI: в окружениях, где нет графического интерфейса (например, в CI-джобах), необходимо использовать
headless: true, иначе будут ошибки видаcannot open displayи подобные.
Мобильная эмуляция
Для Chrome используйте goog:chromeOptions.mobileEmulation:
const desiredCapabilities = {
"goog:chromeOptions": {
mobileEmulation: {
deviceName: "iPhone 12 Pro",
},
},
};
Остальные поддерживаемые настройки смотрите в официальной документации.
Для Firefox можно эмулировать мобильный user-agent через moz:firefoxOptions:
const desiredCapabilities = {
"moz:firefoxOptions": {
prefs: {
"general.useragent.override":
"Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15",
"layout.css.devPixelsPerPx": "3.0",
},
args: ["--width=390", "--height=844"],
},
};
Локальные браузеры
Самый простой способ начать работу с Testplane. Тесты запускаются на браузерах и драйверах, установленных на вашей машине.
Установка зависимостей
Скачать все браузеры и драйверы, указанные в конфиге и поддерживающие автоматическую установку:
npx testplane install-deps
Загрузить только выбранные браузеры (по логическому имени из конфига):
npx testplane install-deps chrome-dark
Указать конкретные версии:
npx testplane install-deps chrome@130 firefox@104
По умолчанию браузеры и драйверы скачиваются в директорию .testplane в домашней папке пользователя. Путь можно изменить через переменную окружения TESTPLANE_BROWSERS_PATH:
TESTPLANE_BROWSERS_PATH=./node_modules/.testplane npx testplane install-deps