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?