当webpack-dev-server导致页面重新加载时,在GUI中重新运行Cypress测试

时间:2018-09-08 00:54:18

标签: javascript cypress

我正在使用webpack-dev-server和Cypress GUI进行开发工作流程,我希望Cypress在由WDS自动重新加载触发的页面重新加载时自动重新运行/重新启动测试。

现在发生的是,我看到WDS导致页面重新加载,但是Cypress会话停留在它停止的地方。

我似乎找不到办法实现这一目标。我没有看到任何公开(或私有)方式来触发赛普拉斯重新运行当前选择的测试。

1 个答案:

答案 0 :(得分:2)

您可以将以下内容添加到cypress/support/index.js(或spec文件的顶部):

Cypress.on('window:before:load', (win)=>{
  const _consoleInfo = win.console.info
  win.console.info = function () {
    if (arguments[0].includes('App updated.')) {
      cy.$$('.restart', top.document).click()
    }
    return _consoleInfo.apply(win.console, arguments)
  }
})

只要您将webpack-dev-server信息打印到控制台上,此方法就可以工作(我发现Webpack重装行为没有其他钩子)

$('.restart').click()是触发测试重新运行的一种非常简单的方法

或者,您可以尝试使用此插件,该插件在源文件上设置自己的观察程序,并在检测到更改时重新运行测试:https://github.com/bahmutov/cypress-watch-and-reload