browsers
Обзор
Раздел browsers является обязательным в настройках Testplane. В нем задаются все браузеры, в которых будут запускаться тесты.
Настройка
Данный раздел имеет следующий формат:
import type { ConfigInput } from "testplane";
export default {
browsers: {
"<browser-id>": {
desiredCapabilities: {
browserName: "<browser-name>",
// ...
},
// ...
},
},
} satisfies ConfigInput;
Где <browser-id> — это имя браузера, которое используется для его идентификации.
Чтобы не повторять одни и те же настройки для разных браузеров, вы можете задать все нужные вам значения по умолчанию в корне конфига Testplane. Например:
import type { ConfigInput } from "testplane";
export default {
sessionsPerBrowser: 10,
browsers: {
chrome: {
/* ... */
},
firefox: {
// ...
sessionsPerBrowser: 5,
},
},
} satisfies ConfigInput;
В этом примере для браузера chrome будет использовано значение 10 для опции sessionsPerBrowser, а для firefox — 5.
Основные настройки браузера
| Параметр | Тип | По умолчанию | Описание |
desiredCapabilities | DesiredCapabilities | N/A | Обязательный параметр. Определяет свойства, которыми должен обладать браузер. Используется WebDriver'ом, см. DesiredCapabilities. |
gridUrl | string |
| URL грида Selenium. |
baseUrl | string | "http://localhost" | Базовый URL тестируемого сервиса. |
browserWSEndpoint | string | null | Эндпойнт websocket-соединения для подключения к браузеру через Chrome DevTools Protocol (CDP). |
automationProtocol | string | "webdriver" | Протокол общения с браузером. См. WebDriver vs CDP. |
sessionEnvFlags | SessionEnvFlags | {} | Флаги окружения, задающие протокол, который будет использоваться в созданной сессии браузера. |
windowSize | string | WindowSize | null | Размеры окна браузера. |
headless | boolean | "new" | "old" | depends on browser | Позволяет запускать браузер в headless режиме. |
desiredCapabilities
Обязательный параметр. Определяет свойства, которыми должен обладать браузер.
Формат объекта desiredCapabilities определяется стандартом WebDriver.
Помимо стандартных опций ряд инструментов предоставляют специфичные в своих неймспейсах.
Опции, специфичные для браузеров:
- Chrome,
goog:chromeOptions— документации по опциям ChromeDriver - Firefox,
moz:firefoxOptions— документации по Geckodriver - Edge,
ms:edgeOptions— документации по EdgeDriver
Опции, специфичные для браузерных гридов:
- Sauce Labs,
sauce:options— документация - BrowserStack,
bstack:options— документация - TestingBot,
tb:options— документация
Опции, специфичные для некоторых инструментов автоматизации:
- Appium,
appium:*— документация - Selenoid,
selenoid:options— документация
Пример расширенного задания desiredCapabilities:
import type { ConfigInput } from "testplane";
export default {
browsers: {
chrome: {
desiredCapabilities: {
browserName: "chrome",
browserVersion: "125.0",
"goog:chromeOptions": {
args: ["--hide-scrollbars", "--headless=new"],
},
},
},
},
} satisfies ConfigInput;
gridUrl
URL грида (адрес, на котором слушает ChromeDriver/Selenium Standalone/Sauce Labs/и т.д.).
По умолчанию: http://localhost:4444/wd/hub.
Также можно использовать значение "local", чтобы запускать тесты на локальных браузерах,
управляемых Testplane. Читайте больше в рецепте Как запустить Testplane в локальном
браузере.
baseUrl
Базовый URL тестируемого сервиса. Позволяет более удобно использовать команды browser.url:
- если целевой адрес начинается с
/, в начало будет добавленbaseUrlбез path-части. - если целевой адрес не начинается с
/, в начало будет добавлен весьbaseUrl. - важно наличие или отсутствие
/в конце. [Подробнее][url-resolve].
По умолчанию: http://localhost.
browserWSEndpoint
Эндпойнт websocket-соединения для подключения к браузеру через Chrome DevTools Protocol (CDP). Например, вы указываете browserWSEndpoint: "ws://YOUR_HOST/devtools", к которому в конце будет добавлен идентификатор сеанса браузера: ws://YOUR_HOST/devtools/12345, где 12345 — это идентификатор сеанса.
Значение по умолчанию: null. Означает, что Testplane попытается самостоятельно определить эндпойнт для веб-сокета.
automationProtocol
Протокол общения с браузером. Доступные значения: webdriver и devtools. См. также WebDriver vs CDP. По умолчанию: webdriver.
sessionEnvFlags
Флаги окружения задают протоколы, которые будут использоваться в созданной сессии браузера. По умолчанию флаги окружения автоматически устанавливаются в соответствии с заданными desiredCapabilities. Однако в редких случаях они могут принимать некорректные значения и тогда с помощью этой опции их можно будет задать явно.
Доступные флаги:
| Флаг | Протоколы |
isW3C | WebDriverProtocol или по умолчанию JsonWProtocol |
isChrome | ChromiumProtocol |
isMobile | |
isSauce | |
isSeleniumStandalone | Специальные команды для Selenium при запуске тестов в Selenium Grid или с помощью Selenium Standalone Server. |
Например:
import type { ConfigInput } from "testplane";
export default {
browsers: {
"chrome-phone": {
// ...
sessionEnvFlags: {
isMobile: true,
},
},
},
} satisfies ConfigInput;
windowSize
Размеры окна браузера. Если не указывать, то размер окна будет зависеть от WebDriver'а. Можно указывать как строку, например, 800x1000 или как объект с ключами width и height, значениями которых нужно указать целые числа.
Например:
const browserOptions = {
windowSize: "800x1000",
};
и
const browserOptions = {
windowSize: {
width: 800,
height: 1000,
},
};
эквивалентны между собой.
Настройка разрешения для браузера Opera или для мобильных браузеров не работает, так как эти браузеры используют только полноэкранный режим.
headless
Позволяет управлять запуском браузера в headless режиме (без видимого отображения браузера). Можно задавать как boolean значение, а с Chrome версии 112 — можно задавать как строку "new" | "old". Подробнее про новый headless режим — в блоге Chrome.
По умолчанию: null (определяется на стороне браузера).
Таймауты
| Параметр | Тип | По умолчанию | Описание |
waitTimeout | number | 3000 | Таймаут для событий на веб-странице, в мс. |
waitInterval | number | 500 | Интервал для событий на веб-странице, в мс. |
httpTimeout | number | 30000 | Таймаут для любых запросов к Selenium-серверу, в мс. |
urlHttpTimeout | number | = httpTimeout | Таймаут для запроса /url к Selenium-серверу, в мс. |
pageLoadTimeout | number | 20000 | Таймаут для полной загрузки страницы, в мс. |
sessionRequestTimeout | number | = httpTimeout | Таймаут запроса сессии браузера, в мс. |
sessionQuitTimeout | number | 5000 | Таймаут для завершения сессии, в мс. |
testTimeout | number | null | Таймаут для прогона теста, в мс. Если значение не задано, то будет использован общий таймаут для всех браузеров, который задается настройкой system.mochaOpts.timeout. |