Перейти к основному содержимому
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Как использовать Chrome DevTools Protocol в testplane

Введение

warning

Установите в своем проекте testplane 4-й версии и выше, чтобы использовать Chrome DevTools Protocol (CDP) в testplane-тестах.

Протокол WebDriver используется в testplane уже давно, а вот возможность использования CDP появилась только после переезда на WebdriverIO@7 в testplane 4-й версии.

Поддержка CDP в WebdriverIO@7 реализована с помощью puppeteer. Который, в свою очередь, является оберткой с удобным API над CDP.

Про сравнение протоколов WebDriver и CDP читайте в разделе Справочника «WebDriver vs CDP».

Локальное использование

Удалено в Testplane 9

Начиная с Testplane 9 значение "devtools" у опции automationProtocol (а также CLI-флаг --devtools) удалены. Этот режим вызывал ряд трудновоспроизводимых ошибок, которых не было при automationProtocol: "webdriver", и в WebdriverIO, на котором основан Testplane, протокол автоматизации devtools также был удалён. Единственное поддерживаемое значение теперь — "webdriver" (оно же и значение по умолчанию).

Это не означает отказ от самого Chrome DevTools Protocol: вы по-прежнему можете напрямую использовать CDP (см. секцию Удалённое использование ниже и остальную часть этой страницы). Удалён только режим автоматизации devtools, который ранее предоставлял WebdriverIO.

Чтобы запустить тесты в локально установленном браузере, укажите gridUrl: "local" (или передайте CLI-флаг --local) — Testplane сам скачает необходимые браузеры и драйверы и запустит их по протоколу WebDriver:

// .testplane.conf.js

module.exports = {
browsers: {
chrome: {
gridUrl: "local",
desiredCapabilities: {
browserName: "chrome",
// ...
},
},

// настройки других браузеров...
},

// другие настройки testplane...
};

После этого все последующие запуски будут выполняться в вашем локально установленном Хроме.

Если вам нужно запустить тесты на локальном браузере однократно, передайте CLI-опцию --local:

npx testplane ... --local

Подробная пошаговая инструкция есть в блог-посте Запуск на локальных браузерах.

После того как браузер поднят локально по WebDriver, в тесте по-прежнему можно вызывать CDP-команды так же, как описано в секции Удалённое использование.

Удаленное использование

При использовании CDP на удаленной машине (например, в гриде) testplane сначала поднимет браузер с использованием WebDriver-протокола и только потом, по запросу пользователя (т. е. при вызове CDP-команды), перейдет на подключение по CDP. Таким образом, с удаленным браузером в одном тестовом сценарии мы будем общаться сразу по двум протоколам.

Выглядит это примерно так:

Схема удаленного использования CDP

Чтобы подключиться по CDP к удаленному браузеру необходимо:

  • использовать automationProtocol: webdriver (значение по умолчанию);
  • в desiredCapabilities браузера добавить вендорное поле selenoid:options: данная опция необходима, чтобы webdriverio понял, что нужно подключиться именно к удаленной машине, а не к локальному браузеру.
// .testplane.conf.js

module.exports = {
browsers: {
chrome: {
desiredCapabilities: {
"selenoid:options": {},
// ...
},

// другие настройки браузера...
},

// настройки других браузеров...
},

// другие настройки testplane...
};
Ограничения

Полноценно использовать CDP можно только начиная с Chrome@77 и выше. Это связано с внутренней реализацией в webdriverio.

Какие возможности открывает CDP

С помощью CDP вы можете: