即使在 Nightwatchjs 中测试失败,Browserstack 也会报告成功
Browserstack reports successful even when test fails in Nightwatchjs
我刚开始将 nightwatch 与 browserstack 一起使用,我注意到当我们得到一个失败的测试时,nightwatch 会记录失败,但 browserstack 不会。
sample test I am using。
我也在使用 BrowserStack 的免费试用版。
我的问题是:
- 有什么想法可以在测试 运行 失败时告诉 browserstack 吗?
来自 BrowserStack doc:
REST API
It is possible to mark tests as either a pass or a fail, using the
following snippet:
var request = require("request");
request({
uri: "https://user:key@www.browserstack.com/automate/sessions/<session-id>.json",
method: "PUT",
form: {
"status": "completed",
"reason":""
}
});
The two
potential values for status can either be completed or error.
Optionally, a reason can also be passed.
我的问题是:
- 如何在测试执行后得到 'session-id'?
- 如果我已经可以在仪表板中看到 "completed" 状态怎么办?
BrowserStack上的会话只有三种状态:
已完成、错误 或超时。 Selenium(因此,BrowserStack)无法理解测试是通过还是失败。通过出现在控制台上的测试中的多个断言,您可以推断测试是否通过/失败。但是,这些断言不会到达 BrowserStack。正如您正确识别的那样,如果您在控制台中看到失败,可以使用 REST-API 将会话状态更改为 'Error'。
我建议在执行测试时获取测试的会话 ID,因为在 之后获取会话 ID 测试执行是一个漫长的过程.在 Nightwatch 中,您可以按如下方式获取会话 ID:
browser.session(function(session) {
console.log(session.sessionId);
});
- 是的,您当然可以在会话完成后更改会话状态。这就是 REST-API 提供帮助的地方!
如果您来这里是为了在 Python 中寻找解决方案,您可以使用
requests.put(
"https://api.browserstack.com/automate/sessions/{}.json".format(driver.session_id),
auth=(USERNAME, ACCESS_KEY),
json={"status": "failed", "reason": "test failed"})
我刚开始将 nightwatch 与 browserstack 一起使用,我注意到当我们得到一个失败的测试时,nightwatch 会记录失败,但 browserstack 不会。 sample test I am using。 我也在使用 BrowserStack 的免费试用版。
我的问题是:
- 有什么想法可以在测试 运行 失败时告诉 browserstack 吗?
来自 BrowserStack doc:
REST API
It is possible to mark tests as either a pass or a fail, using the following snippet:
var request = require("request");
request({
uri: "https://user:key@www.browserstack.com/automate/sessions/<session-id>.json",
method: "PUT",
form: {
"status": "completed",
"reason":""
}
});
The two potential values for status can either be completed or error. Optionally, a reason can also be passed.
我的问题是:
- 如何在测试执行后得到 'session-id'?
- 如果我已经可以在仪表板中看到 "completed" 状态怎么办?
BrowserStack上的会话只有三种状态: 已完成、错误 或超时。 Selenium(因此,BrowserStack)无法理解测试是通过还是失败。通过出现在控制台上的测试中的多个断言,您可以推断测试是否通过/失败。但是,这些断言不会到达 BrowserStack。正如您正确识别的那样,如果您在控制台中看到失败,可以使用 REST-API 将会话状态更改为 'Error'。
我建议在执行测试时获取测试的会话 ID,因为在 之后获取会话 ID 测试执行是一个漫长的过程.在 Nightwatch 中,您可以按如下方式获取会话 ID:
browser.session(function(session) {
console.log(session.sessionId);
});
- 是的,您当然可以在会话完成后更改会话状态。这就是 REST-API 提供帮助的地方!
如果您来这里是为了在 Python 中寻找解决方案,您可以使用
requests.put(
"https://api.browserstack.com/automate/sessions/{}.json".format(driver.session_id),
auth=(USERNAME, ACCESS_KEY),
json={"status": "failed", "reason": "test failed"})