我想在Vue.js应用程序上使用Cypress设置E2E测试。当我开始Cypress测试时,它警告我Vue应用程序(在localhost:8080上)未运行,这让我有些惊讶。正如我认为的那样,随着Cypress测试的开始,Vue应用程序将自动(自动?)启动。但是-事实证明-它没有这样做。
我现在想做的是创建一个测试脚本,该脚本将同时启动Cypress测试,Vue.js前端应用程序和后端Node.Js / Express应用程序。 (目前,前端和后端应用程序还不是很大,因此启动它们的时间应该不会太长。当它们变得更大时,我很可能会为后端调用添加存根。)
但是,我找不到执行该操作的方法!我可以手动启动它们,但这似乎很麻烦。而且我无法想象这无法借助某些脚本或其他代码或配置来完成。
根据我的收集,我认为我需要创建某种Webpack脚本来实现此目的,但这就是我所能找到的全部(我几乎没有Webpack经验,这也无济于事。 ..)。 我该如何创建(外壳程序)脚本来完成此任务?
答案 0 :(得分:0)
我相信您必须检查Cypress文档-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)。
wait-on模块
使用等待模块,可以阻止cypress run
命令的执行,直到服务器启动为止。
npm start & wait-on http://localhost:8080
cypress run