2016-01-29 50 views
2

我刚开始使用带有browserstack的nightwatch,并且我注意到当我们得到失败的测试时,夜视服务器注册失败,但是浏览器不会。 sample test I am using。 另外我正在使用BrowserStack的免费试用版。即使当Nightwatchjs中的测试失败时,Browserstack报告也会成功

我的问题是:

  1. 是否有任何想法如何告诉browserstack当测试运行失败?

从BrowserStack doc

REST API

是可能的标记测试作为通过或失效,使用 下面的代码片断:

var request = require("request"); 
request({uri:"https://user:[email protected]/automate/sessions/<session-id>.json", method:"PUT", form:{"status":"completed","reason":""}}) 

这两个 状态的潜在值可以完成或错误。 或者,也可以传递一个原因。

我的问题是:

  • 我怎么能测试执行后获得 '会话ID'?
  • 如果我可以在仪表板中看到“已完成”状态,该怎么办?
  • 回答

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

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

    browser.session(function(session) { 
        console.log(session.sessionId); 
    }); 
    
  • 是,一旦完成你当然可以改变会话的状态。这就是REST-API提供帮助的地方!
  • +1

    有没有一种更简单的方法强制通过BrowserStack测试失败?不需要干预API,找出构建和会话ID ...... – dialex

    +1

    只能通过REST-API将会话标记为“错误”。 没有其他办法。也就是说,你不需要构建ID来改变会话的状态,只有会话ID就足够了。检查这个链接的更多细节 - https://www.browserstack.com/automate/rest-api#rest-api-sessions –

    +0

    他们的支持告诉我,我可以做'driver.getSessionId()'立即得到id 。 – dialex

    相关问题