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 для повторного использования портов?

PS: тот же вопрос по русски.

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
}

Надеюсь, это поможет вам!

Другие вопросы по тегам