当使用Protractor运行端到端测试时,我发现在使用Chrome运行时,我的测试中的承诺得到了解决。但是当使用Phantom运行时,回调将永远不会执行,并且测试最终会超时并显示消息Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
我的 protractor.config.js 文件如下所示:
exports.config = {
baseUrl: 'http://localhost:3000/',
suites: {
// ...
},
directConnect: !(process.env.NODE_ENV === 'CI'),
exclude: [],
multiCapabilities: [{
browserName: process.env.NODE_ENV === 'CI' ? 'phantomjs' : 'chrome',
'phantomjs.cli.args': ['--web-security=false',
'--ignore-ssl-errors=true'
]
}],
allScriptsTimeout: 110000,
getPageTimeout: 100000,
framework: 'jasmine2',
jasmineNodeOpts: {
isVerbose: false,
showColors: true,
includeStackTrace: false,
defaultTimeoutInterval: 400000,
print: function() {}
},
}
使用此配置,以下测试将执行Chrome的回调,但不会为幻影执行回调:
let targetUrl = '/foo';
it ('should resolve the route properly', function (done) {
browser.getCurrentUrl().then(function (url) {
console.log("****"); // This is printed in Chrome, but not Phantom
expect(url).toContain(targetUrl);
done();
})});
节点模块版本
量角器:5.0.0 幻影:4.0.0 PhantomJS 2.1.7 PhantomJS-prebuilt:2.1.14 Webdriver Manager(在Protractor中):11.1.1
有什么想法吗?