Backstopjs can't connect browser it started

1k views Asked by At

I'm using backstop to test my app, but it fails on random test with message like

COMMAND | Command `test` ended with an error after [155.109s]
COMMAND | BackstopException: TestNameGoesHere on ViewportNameGoesHere: Error: connect ECONNREFUSED 127.0.0.1:9336

Port 9336 is one of the ports used by backstop to connect chromy. Application port is 8082.

The problem occurs only in Windows. Everything works in Linux Mint.

Command for starting test is

backstop test --configPath=backstop-config.js

Configuration is

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"],
};

each of the scenarios is like following:

scenarios.push({
  label,
  url,
  hideSelectors: ["#debug"],
  removeSelectors: [],
  selectors: ["body"],
  readyEvent: null,
  delay: 5000,
  onReadyScript: null,
  onBeforeScript: null,
});

Here is console output:

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

I think problem can happen because specified port is already in use, but I'm not sure. Anyway, as you see, backstop uses all ports from 9222 to 9353 in this run - each test requires a port which was not used before. Is there a way to configure backstop to reuse ports?

PS: Same question in Russian.

1

There are 1 answers

2
AJC24 On

Looks like you're clashing with another program which is using that port when you run it on Windows. The only suggestion I could give you to resolve this is to change the default port that Chromy is using so that it starts assigning ports from a point which suits running on both Linux and Windows.

For reference: By default, Chromy starts assigning ports starting at port 9222.

See https://github.com/OnetapInc/chromy#chromyoptions for more information on Chromy options and their default values.

You can set your own custom "starting" port by adding engineOptions to your backstop JSON configuration file and setting the port as follows:

"engineOptions": {
   port: 9222 // Or whatever port you wish to assign
}

Hopefully this helps you out!