В результате обновления WebdriverIO API-интерфейс browserStack не ожидает ответа - PullRequest
0 голосов
/ 28 января 2020

Я настроил свои тесты, используя 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 секунды после каждого теста

1 Ответ

0 голосов
/ 29 января 2020

@ NaveenThiyagarajan - request () от узла_модуля. Приведенный выше код находится в файле wdio.conf. js. Я смог заставить его работать с asyn c. Есть лучший способ сделать это? ниже мой код:

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)
        }
    },
}
...