Как использовать Chrome DevTools Protocol в testplane
Введение
Установите в своем проекте 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 значение "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 к удаленному браузеру необходимо:
- использовать
automationProtocol: webdriver(значение по умолчанию); - в
desiredCapabilitiesбраузера добавить вендорное полеselenoid:options: данная опция необходима, чтобы webdriverio понял, что нужно подключиться именно к удаленной машине, а не к локальному браузеру.
// .testplane.conf.js
module.exports = {
browsers: {
chrome: {
desiredCapabilities: {
"selenoid:options": {},
// ...
},
// другие настройки браузера...
},
// настройки других браузеров...
},
// другие настройки testplane...
};
Полноценно использовать CDP можно только начиная с Chrome@77 и выше. Это связано с внутренней реализацией в webdriverio.
Какие возможности открывает CDP
С помощью CDP вы можете:
- отслеживать и перехватывать сетевые запросы и ответы
- тестировать доступность (accessibility) страницы
- управлять пропускной способностью сети
- управлять быстродействием процессора
- скрывать скроллбары