我想在Vue.js应用程序上使用赛普拉斯设置E2E测试。当我启动赛普拉斯测试时,它警告我Vue应用程序(在localhost:8080上)没有运行,这让我有点惊讶。我认为随着赛普拉斯测试的开始,Vue应用程序将自动启动(自动启动?;)。但是 - 事实证明 - 它不会这样做。
我现在要做的是创建一个测试脚本,它将同时启动赛普拉斯测试,Vue.js前端应用程序和后端Node.Js / Express应用程序。 (前端和后端应用程序目前不是很大,所以启动它们不应该花那么长时间。当它们变大时,我很可能会为后端调用添加存根。)
但是,我无法找到如何做到这一点!我可以手工启动它们,但这看起来非常麻烦。我无法想象在某些脚本或其他代码或配置的帮助下无法做到这一点。
从我收集到的内容来看,我认为我需要创建一些Webpack脚本来实现这一点,但这就是我能找到的全部内容(我没有Webpack经验,这对任何一个都没有帮助......) 。如何创建一个(shell?)脚本来实现这一目标?
我相信你必须检查赛普拉斯的文件 - https://docs.cypress.io/guides/guides/continuous-integration.html#Boot-your-server
以下是内容的摘录,
许多人通过运行如下命令来处理这种情况:
npm start & cypress run // Do not do this
问题是 - 如果您的服务器需要时间启动会发生什么?当下一个命令运行(cypress run
)时,无法保证您的Web服务器已启动且可用。因此,您的赛普拉斯测试可能会启动并尝试访问您的本地服务器,然后才能访问它。
解
幸运的是,有一些解决方案。您可以使用更好的选项,而不是引入任意等待(如睡眠20)。
wait-on模块
使用wait-on模块,可以阻止cypress run
命令执行,直到服务器启动。
npm start & wait-on http://localhost:8080
cypress run