WebdriverIO 更新结果在 browserStack API 调用不等待响应
WebdriverIO update results in browserStack API call does not wait for response
我已经使用 webdriverIO V5 和 Browserstack 设置了我的测试。测试 运行 成功,但测试结果未在 BrowserStack 中更新。我在代码中进行的请求调用不会等待它完成
在我的 wdio.conf.js 中,我有以下代码:
afterTest: function (test, context, { error, result, duration, passed, retries }) {
let sessionid = browser.sessionId;
if (!test.passed) {
request({
uri: `https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`,
method: 'PUT',
form: { 'status': 'error', 'reason': "" }
})
}
else {
request({
uri: `https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`,
method: 'PUT',
form: { 'status': "passed", 'reason': "" }
})
}
//browser.pause(3000)
仅当我给出 browser.pause(3000) 时才会更新结果。
我怎样才能让它等到请求完成而不是在每次测试后等待 3 秒
@NaveenThiyagarajan - request() 来自 node_module。上面的代码在 wdio.conf.js 文件中。我能够让它与 async 一起工作。有一个更好的方法吗?下面是我的代码:
var request = require("request");
exports.config = {
afterTest: async function (test, context, { error, result, duration, passed, retries }) {
let sessionid = browser.sessionId;
function doRequest(url, testStatus) {
return new Promise(function (resolve, reject) {
request({
uri: url,
method: 'PUT',
form: { 'status': testStatus, 'reason': "" }
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
resolve(body)
}
else {
reject(error)
}
})
})
}
if (test.passed) {
let res = await doRequest(`https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`, "passed")
console.log(res)
}
else {
let res = await doRequest(`https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`, "error")
console.log(res)
}
},
}
我已经使用 webdriverIO V5 和 Browserstack 设置了我的测试。测试 运行 成功,但测试结果未在 BrowserStack 中更新。我在代码中进行的请求调用不会等待它完成
在我的 wdio.conf.js 中,我有以下代码:
afterTest: function (test, context, { error, result, duration, passed, retries }) {
let sessionid = browser.sessionId;
if (!test.passed) {
request({
uri: `https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`,
method: 'PUT',
form: { 'status': 'error', 'reason': "" }
})
}
else {
request({
uri: `https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`,
method: 'PUT',
form: { 'status': "passed", 'reason': "" }
})
}
//browser.pause(3000)
仅当我给出 browser.pause(3000) 时才会更新结果。 我怎样才能让它等到请求完成而不是在每次测试后等待 3 秒
@NaveenThiyagarajan - request() 来自 node_module。上面的代码在 wdio.conf.js 文件中。我能够让它与 async 一起工作。有一个更好的方法吗?下面是我的代码:
var request = require("request");
exports.config = {
afterTest: async function (test, context, { error, result, duration, passed, retries }) {
let sessionid = browser.sessionId;
function doRequest(url, testStatus) {
return new Promise(function (resolve, reject) {
request({
uri: url,
method: 'PUT',
form: { 'status': testStatus, 'reason': "" }
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
resolve(body)
}
else {
reject(error)
}
})
})
}
if (test.passed) {
let res = await doRequest(`https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`, "passed")
console.log(res)
}
else {
let res = await doRequest(`https://${this.user}:${this.key}@api.browserstack.com/automate/sessions/${sessionid}.json`, "error")
console.log(res)
}
},
}