如何增加页面加载的goto超时?

TL;博士;

我需要增加这个超时:

命令| 命令`test`在[32.585s]之后以错误结束
命令| BackstopExcpetion:未定义的testing#1:GotoTimeoutError:goto()超时


考虑以下服务器代码:

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}/`); }); 

和4 * 3 = 12testing的BackstopJSconfiguration:

 { "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": [] } 

当我开始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 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] 

但是现在让我们在发送页面之前让服务器延迟40秒:

 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}/`); }); 

并运行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! 

如你所见,有一个错误

命令| 命令`test`在[32.585s]之后以错误结束
命令| BackstopExcpetion:未定义的testing#1:GotoTimeoutError:goto()超时

但之后我们可以看到在页面console.log执行console.log 。 逆止器开始无限等待某件事…不pipe怎样,这不是问题。

我有兴趣可以select放大30秒的超时时间,因为在某些情况下,开发服务器需要更多时间来提供内容。 我如何configuration它?

onBeforeScript ,可以在发出任何请求之前访问Chromy,并设置超时(和其他选项 ):

 module.exports = function (chromy) { chromy.options.gotoTimeout = 60000; };