检查主机在 Cypress 是否在线

问题描述 投票:0回答:1

我的测试在通过网络界面控制的物联网设备上运行。我想创建一个恢复出厂设置测试,其中涉及设备的重新启动,并且我想循环检查设备是否再次在线(“可 ping”)。有没有办法在Cypress内部执行ping命令并获取其返回值。

cypress ping web-testing
1个回答
4
投票

假设您指的是标准 ping 协议,这就是形式。替换您的设备地址并回复消息。

cy.exec('ping google.com', {failOnNonZeroExit: false})
  .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', {failOnNonZeroExit: false})
    .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()
© www.soinside.com 2019 - 2024. All rights reserved.