首页 > 解决方案 > 如何一次性启动 Cypress 测试、Vue 前端和后端?

问题描述

我想在 Vue.js 应用程序上使用 Cypress 设置 E2E 测试。当我开始 Cypress 测试时,它警告我 Vue 应用程序(在 localhost:8080 上)没有运行,这让我一开始有点吃惊。正如我认为随着赛普拉斯测试的开始,Vue 应用程序将自动启动(自动?;)。但是 - 事实证明 - 它并没有这样做。

我现在想做的是创建一个测试脚本,它将同时启动 Cypress 测试、Vue.js 前端应用程序和后端 Node.Js/Express 应用程序。(目前前端和后端应用程序都不是很大,所以启动它们应该不会花那么长时间。当它们变得更大时,我很可能会为后端调用添加存根。)

但是,我无法找到如何做到这一点!我可以手动启动它们,但这似乎很麻烦。而且我无法想象这不能在某些脚本或其他代码或配置的帮助下完成。

从我收集到的信息来看,我认为我需要创建某种 Webpack 脚本来实现这一点,但这就是我所能找到的(我几乎没有 Webpack 经验,这也无济于事......) . 我怎样才能创建一个(shell?)脚本来完成这个?

标签: vue.jse2e-testingcypress

解决方案


我相信您必须检查赛普拉斯文档 - https://docs.cypress.io/guides/guides/continuous-integration.html#Boot-your-server

这是内容的摘录,

许多人通过运行如下命令来处理这种情况:

npm start & cypress run // Do not do this

问题是——如果你的服务器需要时间来启动会发生什么?无法保证在下一个命令运行 ( cypress run) 时您的 Web 服务器已启动且可用。因此,您的赛普拉斯测试可能会开始并尝试在您的本地服务器准备好被访问之前访问它。

解决方案

幸运的是,有一些解决方案。您可以使用更好的选择,而不是引入任意等待(如 sleep 20)。

等待模块

使用等待模块,您可以阻止cypress run命令执行,直到您的服务器启动。

npm start & wait-on http://localhost:8080

cypress run

推荐阅读