Мои тесты выполняются на устройстве IOT, которое управляется через веб-интерфейс. Я хочу создать тест сброса к заводским настройкам, который включает перезагрузку устройства, и я хочу циклически проверять, находится ли устройство в сети («доступно для проверки связи»). Есть ли способ выполнить команду ping внутри Cypress и получить ее возвращаемое значение.
Предполагая, что вы имеете в виду стандартный протокол ping, это форма. Подставьте адрес своего устройства и ответьте на сообщение.
cy.exec('ping google.com')
.then(reply => {
expect(reply.code).to.eq(0)
const expectedMsg = 'Pinging google.com [142.250.66.206] with 32 bytes of data:\r\nReply from 142.250.66.206: bytes=32'
expect(reply.stdout).to.satisfy(msg => msg.startsWith(expectedMsg))
})
Цикл может не понадобиться, но если да, то я бы использовал рекурсивную функцию
function doPing(count = 0) {
if (count === 10) throw 'Failed to ping';
cy.exec('ping google.com')
.then(reply => {
if (reply.code > 0) {
cy.wait(1000) // whatever back-off time is required
doPing(++count)
} else {
expect(reply.stdout).to.satisfy(msg => ...)
}
})
}
doPing()