2017-05-28 42 views
0

我使用Slack将量角器测试挂钩,如果测试开始并且一旦完成,想法是在松弛室中发送消息。Slack集成仅适用于onPrepare,但不适用于onLinunch后的onComplete?

但是,我只能在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() {}, 
    }, 

};

回答

0

看起来你的slack.send()是异步? 尝试从你的afterLanch/onComplete中返回承诺 - 在这种情况下,量角器将在杀死node.js进程之前等待这个承诺解决。

我从来没有与slack-webhook包合作过。但是我在文档中看到的 - .send()正在回复诺言。尝试从你的afterLaunch/onComplete中返回它:

afterLaunch: function() { 
    return slack.send({ 
    text: "Test is Done", 
    channel: '#test-report' 
    }) 
}, 
0

除了@ Xotabu4他的回答。

根据docssend是异步的,所以做一个return;

但也catch的错误,只是为了检查什么失败,见下文。

return slack.send('some text') 
 
    .then(function(res) { 
 
    // succesful request 
 
    }) 
 
    .catch(function(err) { 
 
    // handle request error 
 
    })

希望它可以帮助

相关问题