在 Cypress 中检查主机是否在线

Checking if host is online in Cypress

我在通过网络界面控制的 IOT 设备上进行测试 运行。我想创建一个出厂重置测试,其中涉及设备的重启,并且我想检查设备是否再次在线(“可 ping”)。有没有办法在赛普拉斯内部执行 ping 命令并获取它的 return 值。

假设您指的是标准 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()