如何在CI中运行cypress之前提供角度cli应用程序?

Dau*_*eDK 9 angular cypress

我正在尝试将赛普拉斯与Angular(v.5)CLI应用程序一起使用.

在本地运行时测试工作正常,因为在这里我可以在运行cypress测试之前启动serve命令.

我尝试按照这里的文档,但没有一个命令似乎工作.

我尝试了varioues组合,看起来像这样:

"cypress:run:report": "./node_modules/.bin/cypress run --record --key <key>",
"cypress:run:ci": "start-server-and-test serve:dev http://localhost:4200 cypress:run:report",
"cypress:run:ci2": "npm run -s serve:dev & npm run -s cypress:run:report",
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Vad*_*imB 10

最新的 Cypress 更新已经包含 Angular 原理图,以简化测试集成到现有项目中。

很简单:ng add @cypress/schematic

进而ng e2e


Bas*_*ein 5

start-server-and-test 似乎不能与 'ng serve' 命令很好地集成。我通过不使用 angular-cli 为应用程序提供服务来使其工作 - 不需要模块 API:

包.json

"scripts": {
    "ci:serve": "ng build && http-server dist -p 4200",
    "cy:run": "cypress run",
    "cy:ci": "start-server-and-test ci:serve http://localhost:4200 cy:run"
}
"devDependencies": {
    // omitted angular & cypress deps
    "start-server-and-test": "x.x.x",
    "http-server": "x.x.x"
}
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,start-server-and-test 是一个需要安装的 NPM 包 (2认同)

Gui*_*ère 5

我对提供的任何答案都不满意,因此提出了以下建议:

步骤1:安装开发人员依赖项

npm install --save-dev concurrently wait-on
Run Code Online (Sandbox Code Playgroud)

第2步:在中编写以下脚本package.json

"scripts": {
  "start": "ng serve",
  ...
  "cy:open": "cypress open",
  "cy:run": "cypress run",
  "e2e": "concurrently \"npm run start\" \"wait-on http-get://localhost:4200 && npm run cy:run\" --kill-others --success first",
  "e2e-gui": "concurrently \"npm run start\" \"wait-on http-get://localhost:4200 && npm run cy:open\" --kill-others --success first",
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以运行npm run e2enpm run e2e-gui

瞧!

编辑:我创建了一个要点,也显示了如何使用产品或暂存版本运行SSR:https : //gist.github.com/glemiere/3282c3ace9417b32c75d93d7f0d3086d


Dan*_*iaz 5

第 1 步:安装 devDependency:

npm i -D angular-http-server start-server-and-test
Run Code Online (Sandbox Code Playgroud)

angular-http-server创建一个简单的开发服务器

start-server-and-test启动服务器,等待 URL,然后运行测试命令;测试结束时,关闭服务器

步骤 2:在package.json上添加脚本

npm i -D angular-http-server start-server-and-test
Run Code Online (Sandbox Code Playgroud)

步骤 4:将此命令添加到您的 CI 脚本中:

"scripts": {
  "build": "ng build",
  "cy:run": "cypress run",
  "ci:cy-run": "start-server-and-test ci:start-server 4200 cy:run",
  "ci:start-server": "angular-http-server --silent --path ./dist/project-name -p 4200"
}
Run Code Online (Sandbox Code Playgroud)

可选:考虑关闭视频和屏幕截图OnRunFailurecypress.json以及support目录