Если вы пользователь Cypress, вы, вероятно, знакомы с ключевым словом «тогда». Он обычно используется для доступа и управления результатами команды Cypress. Однако многие разработчики ошибочно предполагают, что ключевое слово «then» связано с промисами, поскольку это распространенный метод обработки цепочек промисов в JavaScript. На самом деле ключевое слово «тогда» в Cypress не имеет ничего общего с промисами.

Чтобы понять, почему ключевое слово «тогда» в Cypress не связано с обещаниями, давайте подробнее рассмотрим, как оно работает. В Cypress каждая команда возвращает объект Chainable, который представляет собой оболочку вокруг элемента jQuery. Ключевое слово then используется для доступа к результату команды и выполнения над ним дополнительных действий.

Например, предположим, что мы хотим получить текст кнопки и вывести его в консоль:

cy.get('button').invoke('text').then((text) => {
  console.log(text)
})

В этом примере команда get возвращает объект Chainable, представляющий элемент кнопки. Команда invoke используется для получения текста кнопки. Наконец, ключевое слово «тогда» используется для вывода текста на консоль.

Обратите внимание, что ключевое слово «тогда» не используется для обработки цепочки промисов. Вместо этого он используется для доступа к результату команды и выполнения над ним дополнительных действий. Это потому, что команды Cypress не являются промисами. На самом деле они заключены в объекты особого типа, что позволяет Cypress контролировать порядок их выполнения.

Это важное различие, так как предположение, что команды Cypress являются промисами, может привести к путанице и ошибкам. Например, если вы попытаетесь использовать метод Promise, такой как «catch», в команде Cypress, он не будет работать должным образом:

cy.get('button').catch((error) => {
  console.log(error)
})

В этом примере метод «catch» не будет вызываться, так как это недопустимый метод для команды Cypress.

В заключение, ключевое слово «тогда» в Cypress не имеет ничего общего с промисами. Это просто способ получить доступ к результату команды и выполнить над ним дополнительные действия. Хотя это может выглядеть похоже на синтаксис промисов, важно понимать различия между командами Cypress и промисами, чтобы избежать путаницы и ошибок в ваших тестах.