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

时间:2016-01-29 11:48:34

标签: node.js selenium-webdriver nightwatch.js browserstack

我刚开始使用带有browserstack的夜视仪,我注意到当我们得到失败的测试时,nightwatch会记录失败,但是browserstack没有。 sample test I am using。 我也在使用BrowserStack的免费试用版。

我的问题是:

  1. 有没有想法如何在测试运行失败时告诉browserstack?
  2. 来自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":""
        }
    });
    
      

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

    我的问题是:

    1. 我如何获得&#39; session-id&#39;测试执行后?
    2. 如果我能看到&#34;已完成&#34;该怎么办?仪表板中的状态已经?

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

如果您是来这里寻找Python解决方案的,可以使用

requests.put(
    "https://api.browserstack.com/automate/sessions/{}.json".format(driver.session_id),
    auth=(USERNAME, ACCESS_KEY),
    json={"status": "failed", "reason": "test failed"})