Backstopjs не может подключиться к браузеру
Я использую backstop для тестирования моего приложения, но оно не проходит при случайном тестировании с таким сообщением, как
КОМАНДА | Команда `test` завершилась с ошибкой после [155.109s]
КОМАНДА | BackstopException: TestNameGoesHere on ViewportNameGoesHere: Ошибка: подключение ECONNREFUSED 127.0.0.1:9336
Порт 9336 является одним из портов, используемых backstop для подключения Chromy. Порт приложения - 8082.
Проблема возникает только в Windows. Все работает в Linux Mint.
Команда для запуска теста
backstop test --configPath=backstop-config.js
Конфигурация
module.exports = {
viewports,
scenarios,
paths: {
bitmaps_reference: `backstop-smth/bitmaps_reference`,
bitmaps_test: `backstop-smth/bitmaps_test`,
engine_scripts: `backstop/engine_scripts`,
html_report: `backstop-smth/html_report`,
ci_report: `backstop-smth/ci_report`,
},
engine: "chrome",
report: ["browser", "CLI"],
};
каждый из сценариев выглядит следующим образом:
scenarios.push({
label,
url,
hideSelectors: ["#debug"],
removeSelectors: [],
selectors: ["body"],
readyEvent: null,
delay: 5000,
onReadyScript: null,
onBeforeScript: null,
});
Вот вывод консоли:
Starting Chromy: port:9222 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9223 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9224 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
Starting Chromy: port:9225 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9226 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9227 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
...
Starting Chromy: port:9336 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9337 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9338 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
Starting Chromy: port:9339 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9340 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9341 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
Starting Chromy: port:9342 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9343 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9344 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
Starting Chromy: port:9345 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9346 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9347 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
Starting Chromy: port:9348 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9349 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9350 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
Starting Chromy: port:9351 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=954,735
Starting Chromy: port:9352 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=1024,768
Starting Chromy: port:9353 --disable-gpu,--force-device-scale-factor=1,--disable-infobars=true,--window-size=768,1024
COMMAND | Command `test` ended with an error after [155.109s]
COMMAND | BackstopException: TestNameGoesHere on ViewportNameGoesHere: Error: connect ECONNREFUSED 127.0.0.1:9336
Я думаю, что проблема может произойти, потому что указанный порт уже используется, но я не уверен. В любом случае, как вы видите, backstop использует все порты с 9222 по 9353 в этом прогоне - для каждого теста требуется порт, который раньше не использовался. Есть ли способ настроить backstop для повторного использования портов?
1 ответ
Похоже, вы конфликтуете с другой программой, которая использует этот порт при запуске в Windows. Единственное предложение, которое я мог бы дать вам для решения этой проблемы, - это изменить порт по умолчанию, который использует Chromy, чтобы он начал назначать порты с точки, подходящей для работы как в Linux, так и в Windows.
Для справки: по умолчанию Chromy начинает назначать порты, начиная с порта 9222.
См. https://github.com/OnetapInc/chromy для получения дополнительной информации о параметрах Chromy и их значениях по умолчанию.
Вы можете установить свой собственный "стартовый" порт, добавив engineOptions
в файл конфигурации JSON backstop и настройте порт следующим образом:
"engineOptions": {
port: 9222 // Or whatever port you wish to assign
}
Надеюсь, это поможет вам!