Есть ли какой-либо способ сохранить полную полезную нагрузку XHR при запуске cypress?

#javascript #automated-tests #mocha.js #cypress #mochawesome

#javascript #автоматизированные тесты #mocha.js #cypress #mochawesome

Вопрос:

Наш cypress suite отлично работает локально на каждом компьютере, среде, местоположении. Мы настроили его для работы с конвейером Bitbucket, но есть определенный шаг, который постоянно завершается неудачей из-за выполняемого им вызова API. Этот вызов API выполняется для внешней службы, и мы добавляем параметры в полезную нагрузку, которые динамически создаются с запросом.

Мы подозреваем, что некоторые из этих параметров не созданы правильно при запуске из конвейера (могут быть связаны с местоположением, агентом и т. Д.), Потому что мы получаем «Несанкционированный доступ».

Итак, проблема в том, что у нас нет никакого способа отладить этот вызов API из конвейера, и это единственное место, где он терпит неудачу.

Итак, есть ли у вас какие-либо предложения о том, как сохранить полезную нагрузку XHR на шаге в Cypress?

  • Сохраните его в отчете mocha.
  • Отправьте его по электронной почте.
  • Возможно, добавьте это в журнал.
  • Сохраните его как артефакт. Извините, я просто не знаю, как подойти к этому, поскольку я не эксперт ни в конвейерах cypress, ни в bitbucket.

Более конкретно, мне нужно отладить этот вызов:

введите описание изображения здесь

Комментарии:

1. У меня нет для вас полного ответа, но вам, вероятно, просто нужно написать сценарий узла, чтобы сделать это, а затем вызвать его в своем тесте с помощью cy.task() .

Ответ №1:

Насколько я понимаю, ваш URL-адрес внешнего вызова API известен, верно? Если это так, я бы предложил для целей отладки маршрутизировать этот вызов, а затем отобразить его в журналах выполнения cypress, чтобы вы могли сравнить полезную нагрузку запроса:

 cy.route({ method: 'POST', url: `/ps/users`}).as('routedRequest');

... 

cy.get('@routedRequest').then((xhr) => {
    cy.log(JSON.stringify(xhr.request))
});