Browserstack сообщает об успешном завершении теста даже в случае сбоя теста в Nightwatchjs

Я только начал использовать nightwatch с browserstack и заметил, что когда мы получаем неудавшийся тест, nightwatch регистрирует сбой, а browserstack - нет. образец теста, который я использую. Также я использую бесплатную пробную версию BrowserStack.

У меня вопрос:

  1. Есть ли какие-нибудь идеи, как сообщить браузеру, когда тестовый прогон не удался?

Из документа BrowserStack:

REST API

Можно пометить тесты как пройденные или неудачные, используя следующий фрагмент:

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

Два возможных значения статуса могут быть либо завершенными, либо ошибочными. При желании также можно указать причину.

Мои вопросы:

  1. Как я могу получить идентификатор сеанса после выполнения теста?
  2. Что, если я уже вижу статус «завершено» на панели инструментов?

person user2618875    schedule 29.01.2016    source источник


Ответы (2)


  1. Сеанс в BrowserStack имеет только три типа статусов: Завершено, Ошибка или Тайм-аут. У Selenium (и, следовательно, BrowserStack) нет способа понять, прошел ли тест или нет. По многочисленным утверждениям в ваших тестах, которые появляются на вашей консоли, вы можете сделать вывод, прошел ли тест или нет. Однако эти утверждения не достигают BrowserStack. Как вы правильно определили, вы можете использовать REST-API, чтобы изменить статус сеанс на «Ошибка», если вы видите сбой в консоли.

  2. Я бы предложил получать идентификатор сеанса теста во время выполнения теста, поскольку получение идентификатора сеанса после выполнения теста - длительный процесс. В Nightwatch вы можете получить идентификатор сеанса следующим образом:

browser.session(function(session) {
    console.log(session.sessionId);
});
  1. Да, вы можете изменить статус сеанса после его завершения. Здесь на помощь приходит REST-API!
person Umang Sardesai    schedule 30.01.2016
comment
Есть ли более простой способ принудительно провалить тест в BrowserStack? Вместо того, чтобы возиться с API, выясняя идентификатор сборки и сеанса ... - person dialex; 06.06.2016
comment
Отметить сессию как ошибку можно только через REST-API. Другого подхода нет. Тем не менее, вам не нужен идентификатор сборки для изменения статуса сеанса, достаточно только идентификатора сеанса. Для получения дополнительных сведений перейдите по этой ссылке - browserstack.com/automate/rest-api # rest-api-sessions - person Umang Sardesai; 06.06.2016
comment
Их поддержка сказала мне, что я могу сделать driver.getSessionId(), чтобы сразу получить идентификатор. - person dialex; 07.06.2016
comment
Зависит от того, какой язык вы используете. Если вы используете Nightwatch, вы можете использовать описанный выше метод. Для Java это driver.getSessionId(), чтобы получить идентификатор сеанса. - person Umang Sardesai; 07.06.2016

Если вы пришли сюда в поисках решения на Python, вы могли бы использовать

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