即使在Nightwatchjs中测试失败,Browserstack也会报告成功

use*_*875 6 node.js selenium-webdriver browserstack nightwatch.js

我刚开始使用带有browserstack的夜视仪,我注意到当我们得到一个失败的测试时,nightwatch会记录失败,但是browserstack没有. 我正在使用的样品测试.我也在使用BrowserStack的免费试用版.

我的问题是:

  1. 有没有想法如何在测试运行失败时告诉browserstack?

来自BrowserStack doc:

REST API

可以使用以下代码段将测试标记为通过或失败:

var request = require("request"); 
request({
    uri: "https://user:key@www.browserstack.com/automate/sessions/<session-id>.json",
    method: "PUT",
    form: {
        "status": "completed",
        "reason":""
    }
});
Run Code Online (Sandbox Code Playgroud)

状态的两个潜在值可以完成或错误.可选地,也可以通过原因.

我的问题是:

  1. 如何在测试执行后获得'session-id'?
  2. 如果我已经在仪表板中看到"已完成"状态怎么办?

Uma*_*sai 6

  1. BrowserStack上的会话只有三种类型的状态: 已完成,错误超时.如果测试已通过或失败,Selenium(以及BrowserStack)无法理解.通过您的测试中出现在控制台上的多个断言,您可以推断测试是否已通过/失败.但是,这些断言不会到达BrowserStack.正如您正确识别的那样,如果您在控制台中发现故障,则可以使用REST-API将会话状态更改为"错误".

  2. 我建议在执行测试时获取测试的会话ID,因为在测试执行获取会话ID 是一个漫长的过程.在Nightwatch中,您可以按如下方式获取会话ID:

browser.session(function(session) {
    console.log(session.sessionId);
});
Run Code Online (Sandbox Code Playgroud)
  1. 是的,一旦完成会话,您当然可以更改会话的状态.那就是REST-API的帮助!

  • 有没有更简单的方法可以强制在BrowserStack上通过测试?不必弄乱API,只需找出构建和会话ID ... (2认同)
  • 您只能通过REST-API将会话标记为“错误”。没有其他方法。就是说,您不需要构建ID即可更改会话状态,仅会话ID就足够了。检查此链接以获取更多详细信息-https://www.browserstack.com/automate/rest-api#rest-api-sessions (2认同)