Browserstack 量角器忽略期望

Browserstack protractor ignores expect

我正在使用 Mocha 和 Chai。 我的 e2e 在浏览器堆栈上运行并很好地记录(视频和所有)但是浏览器堆栈总是将会话标记为已完成并且当我知道某些规范失败时没有错误。

我已经尝试过这里的示例:https://github.com/browserstack/protractor-browserstack 和相同的结果(即使出现错误,测试也标记为已完成)。

我尝试使用 'driverProviders/browserStack' 中的 'updateJob'...

这是我的测试:

describe('bbbb', () => {
  it('aaa', () => {
    expect(true).to.equal(false);
  });
});

您可以创建一个在每次测试后执行的通用挂钩。将 assert/expect 的结果、驱动程序实例的会话 ID 传递给挂钩并进行以下 API 调用:

var request = require("request");
request({uri: "https://USERNAME:ACCESS_KEY@api.browserstack.com/automate/sessions/<session-id>.json", method:"PUT", form:{"status":"failed","reason":"<reason for failure>"}})

这将确保您的测试失败被标记在浏览器堆栈上,并带有您希望通过的任何其他原因文本

您可以使用以下代码片段获取会话 ID:

protractor.browser.driver.getSession().then((session) => {
  console.log(session);
});

正如@BountyHunter 所建议的,我使用 api 来标记测试。 这是代码的笑话(可能是一些语法错误)

afterEach(function() {
  if (this.currentTest.state === 'failed') {
    //collect error data into array
    //this.currentTest.title, this.currentTest['err']
  }
});

after(function () {
  //after all is done if errors array is not empty, report to browserstack 
  protractor.browser.driver.getSession().then((session) => {
    var request = require("request");
    request({uri: "https://USERNAME:ACCESS_KEY@api.browserstack.com/automate/sessions/"+session['id_']+".json", method:"PUT", form:{"status":"failed","reason":errorsArrayStringified }})
  });

})

这里有完整的回购协议:https://github.com/zeevgl/protractor-browserstack