我用Slack连接我的量角器测试,如果测试开始,一旦完成,我的想法是在休息室发送一个消息。
但是,我只能在onPrepare期间成功地向slack发送消息。但不是在afterLanch,甚至不是在onComplete。
我试着在afterLaunch和onComplete中做一个简单的console.log,所以我知道它是有效的。唯一让我感到困惑的是,为什么在测试完成后,它没有松弛地发送消息。
如果有更好的方法,请告诉我你的想法。现在,这是我能找到的最好的。
请参考我的代码:
let SpecReporter = require('jasmine-spec-reporter').SpecReporter;
var webRep = require('jasmine-slack-reporter');
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
var SlackWebhook = require('slack-webhook');
var slack = new SlackWebhook('my-webhook-url');
exports.config = {
capabilities: {
'browserName' : 'chrome',
},
seleniumAddress: 'http://localhost:4446/wd/hub',
specs: ['./smoke-test/loginAccountType.js'],
onPrepare: function () {
browser.ignoreSynchronization = true,
slack.send({
text: "Test is starting",
channel: '#test-report'
}),
jasmine.getEnv().addReporter(new SpecReporter({
spec: {
displayStacktrace: true
}
})),
jasmine.getEnv().addReporter(
new Jasmine2HtmlReporter({
savePath: './reports',
takeScreenshotsOnlyOnFailures: true,
})
);
},
afterLaunch: function () {
slack.send({
text: "Test is Done",
channel: '#test-report'
})
},
jasmineNodeOpts: {
// Default time to wait in ms before a test fails.
defaultTimeoutInterval: 100000,
print: function() {},
},};
发布于 2017-05-28 16:39:02
看起来你的slack.send()是异步的?尝试从你的afterLanch/onComplete返回promise -在这种情况下,量角器将等待这个promise解析,然后终止node.js进程。
我从未使用过slack-webhook包。但我在文档中看到的是- .send()正在返回promise。尝试从您的afterLaunch/onComplete返回它:
afterLaunch: function () {
return slack.send({
text: "Test is Done",
channel: '#test-report'
})
},发布于 2017-05-29 02:05:15
除了@Xotabu4他的答案。
根据docs,send是异步的,所以return也是异步的;
但也catch错误,只是为了检查什么失败,见下文。
return slack.send('some text')
.then(function(res) {
// succesful request
})
.catch(function(err) {
// handle request error
})
希望能有所帮助
https://stackoverflow.com/questions/44223985
复制相似问题