jeudi 28 septembre 2017

How to increase goto timeout for page load?

tl;dr;

I need to increase this timeout:

COMMAND | Command `test` ended with an error after [32.585s]
COMMAND | BackstopExcpetion: Test #1 on undefined: GotoTimeoutError: goto() timeout


Consider following server code:

const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/html');
  res.end(`<!DOCTYPE html>
    <title>Test Page</title>
    <script>console.log("Hello world!")</script>
    <h1>Hello world!</h1>
  `);
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

and BackstopJS configuration with 4 * 3 = 12 tests:

{
  "id": "backstop_default",
  "viewports": [
    { "label": "phone_portrait",     "width":  320,   "height":  480 },
    { "label": "phone_landscape",    "width":  480,   "height":  320 },
    { "label": "tablet_portrait",    "width":  768,   "height": 1024 },
    { "label": "tablet_landscape",   "width": 1024,   "height":  768 }
  ],
  "scenarios": [
    { "label": "Test #1",   "url": "http://localhost:3000/",   "selectors": ["body"] },
    { "label": "Test #2",   "url": "http://localhost:3000/",   "selectors": ["body"] },
    { "label": "Test #3",   "url": "http://localhost:3000/",   "selectors": ["body"] }
  ],
  "paths": {
    "bitmaps_reference": "backstop_data/bitmaps_reference",
    "bitmaps_test": "backstop_data/bitmaps_test",
    "engine_scripts": "backstop_data/engine_scripts",
    "html_report": "backstop_data/html_report",
    "ci_report": "backstop_data/ci_report"
  },
  "report": ["browser"],
  "engine": "chrome",
  "engineFlags": []
}

When I start backstop test, everything works fine:

D:\Temp\Supertemp\server-delay>backstop test
BackstopJS v3.0.22
Loading config:  D:\Temp\Supertemp\server-delay\backstop.json

COMMAND | Executing core for `test`
createBitmaps | Selcted 3 of 3 scenarios.
Starting Chromy: port:9222 --disable-gpu,--force-device-scale-factor=1,--window-size=320,480
Starting Chromy: port:9223 --disable-gpu,--force-device-scale-factor=1,--window-size=480,320
Starting Chromy: port:9224 --disable-gpu,--force-device-scale-factor=1,--window-size=768,1024
Starting Chromy: port:9225 --disable-gpu,--force-device-scale-factor=1,--window-size=1024,768
Starting Chromy: port:9226 --disable-gpu,--force-device-scale-factor=1,--window-size=320,480
Starting Chromy: port:9227 --disable-gpu,--force-device-scale-factor=1,--window-size=480,320
Starting Chromy: port:9228 --disable-gpu,--force-device-scale-factor=1,--window-size=768,1024
Starting Chromy: port:9229 --disable-gpu,--force-device-scale-factor=1,--window-size=1024,768
Starting Chromy: port:9230 --disable-gpu,--force-device-scale-factor=1,--window-size=320,480
Starting Chromy: port:9231 --disable-gpu,--force-device-scale-factor=1,--window-size=480,320
9224 LOG >  Hello world!
9227 LOG >  Hello world!
9226 LOG >  Hello world!
9222 LOG >  Hello world!
9223 LOG >  Hello world!
9225 LOG >  Hello world!
9228 LOG >  Hello world!
9231 LOG >  Hello world!
9229 LOG >  Hello world!
9230 LOG >  Hello world!
Starting Chromy: port:9232 --disable-gpu,--force-device-scale-factor=1,--window-size=768,1024
Starting Chromy: port:9233 --disable-gpu,--force-device-scale-factor=1,--window-size=1024,768
9232 LOG >  Hello world!
9233 LOG >  Hello world!
      COMMAND | Executing core for `report`
      compare | OK: Test #1 backstop_default_Test_1_0_body_0_phone_portrait.png
      compare | OK: Test #1 backstop_default_Test_1_0_body_1_phone_landscape.png
      compare | OK: Test #1 backstop_default_Test_1_0_body_2_tablet_portrait.png
      compare | OK: Test #1 backstop_default_Test_1_0_body_3_tablet_landscape.png
      compare | OK: Test #2 backstop_default_Test_2_0_body_0_phone_portrait.png
      compare | OK: Test #2 backstop_default_Test_2_0_body_1_phone_landscape.png
      compare | OK: Test #2 backstop_default_Test_2_0_body_2_tablet_portrait.png
      compare | OK: Test #2 backstop_default_Test_2_0_body_3_tablet_landscape.png
      compare | OK: Test #3 backstop_default_Test_3_0_body_0_phone_portrait.png
      compare | OK: Test #3 backstop_default_Test_3_0_body_1_phone_landscape.png
      compare | OK: Test #3 backstop_default_Test_3_0_body_2_tablet_portrait.png
      compare | OK: Test #3 backstop_default_Test_3_0_body_3_tablet_landscape.png
       report | Test completed...
       report | 12 Passed
       report | 0 Failed
       report | Writing browser report
       report | Browser reported copied
       report | Copied configuration to: D:\Temp\Supertemp\server-delay\backstop_data\html_report\config.js
      COMMAND | Executing core for `openReport`
   openReport | Opening report.
      COMMAND | Command `openReport` sucessfully executed in [0.114s]
      COMMAND | Command `report` sucessfully executed in [0.182s]
      COMMAND | Command `test` sucessfully executed in [8.495s]

But now let's make server delay 40 seconds before sending a page:

const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

http.createServer((req, res) => {
  setTimeout(() => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html');
    res.end(`<!DOCTYPE html>
      <title>Test Page</title>
      <script>console.log("Hello world!")</script>
      <h1>Hello world!</h1>
    `);
  }, 40000);
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

and run backstop test:

D:\Temp\Supertemp\server-delay>backstop test
BackstopJS v3.0.22
Loading config:  D:\Temp\Supertemp\server-delay\backstop.json

COMMAND | Executing core for `test`
createBitmaps | Selcted 3 of 3 scenarios.
Starting Chromy: port:9222 --disable-gpu,--force-device-scale-factor=1,--window-size=320,480
Starting Chromy: port:9223 --disable-gpu,--force-device-scale-factor=1,--window-size=480,320
Starting Chromy: port:9224 --disable-gpu,--force-device-scale-factor=1,--window-size=768,1024
Starting Chromy: port:9225 --disable-gpu,--force-device-scale-factor=1,--window-size=1024,768
Starting Chromy: port:9226 --disable-gpu,--force-device-scale-factor=1,--window-size=320,480
Starting Chromy: port:9227 --disable-gpu,--force-device-scale-factor=1,--window-size=480,320
Starting Chromy: port:9228 --disable-gpu,--force-device-scale-factor=1,--window-size=768,1024
Starting Chromy: port:9229 --disable-gpu,--force-device-scale-factor=1,--window-size=1024,768
Starting Chromy: port:9230 --disable-gpu,--force-device-scale-factor=1,--window-size=320,480
Starting Chromy: port:9231 --disable-gpu,--force-device-scale-factor=1,--window-size=480,320
      COMMAND | Command `test` ended with an error after [32.585s]
      COMMAND | BackstopExcpetion: Test #1 on undefined: GotoTimeoutError: goto() timeout
9230 LOG >  Hello world!
9228 LOG >  Hello world!
9222 LOG >  Hello world!
9224 LOG >  Hello world!
9227 LOG >  Hello world!
9231 LOG >  Hello world!
9223 LOG >  Hello world!
9225 LOG >  Hello world!
9229 LOG >  Hello world!
9226 LOG >  Hello world!

As you see, there is an error

COMMAND | Command `test` ended with an error after [32.585s]
COMMAND | BackstopExcpetion: Test #1 on undefined: GotoTimeoutError: goto() timeout

but after that we can see console.log executed on the page. Backstop starts infinite waiting for something... Anyway, it's not the question.

I'm interested in option to enlarge 30 seconds timeout as in some cases dev server needs more time to serve the content. How can I configure it?

Aucun commentaire:

Enregistrer un commentaire