Slack集成仅适用于onPrepare,但不适用于onComplete,afterLaunch后?

时间:2017-05-28 05:05:02

标签: selenium jasmine protractor automated-tests slack

我正在与Slack挂钩我的量角器测试,想法是在测试开始时和松弛的房间发送消息。

但是,我只能在onPrepare期间成功发送消息。但不是在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() {},
  },

};

2 个答案:

答案 0 :(得分:0)

您的slack.send()似乎是异步的? 尝试从afterLanch / onComplete返回promise - 在这种情况下,量角器会在杀死node.js进程之前等待此promise的解析。

我从未使用slack-webhook包。但我在文档中看到的内容 - .send()正在回归承诺。尝试从afterLaunch / onComplete返回它:

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

答案 1 :(得分:0)

除了@ Xotabu4他的答案。

根据docsreturn是异步的,catch也是如此;

return slack.send('some text') .then(function(res) { // succesful request }) .catch(function(err) { // handle request error })错误,只是检查失败的原因,见下文。

{{1}}

希望有所帮助