我正在运行一个 Angular 2+ 应用程序,使用 Cypress.io 和 CI 使用 circleCI 进行集成测试。
我重复了这里提供的使用 circleCI 设置 Angular 项目的教程,但还需要添加 cypress orbs 来运行 Cypress。所以我最终得到了以下 config.yml 脚本:
version: 2.1
orbs:
cypress: cypress-io/cypress@1.0.1
jobs:
build:
working_directory: ~/project
docker:
- image: angular/ngcontainer
steps:
- checkout
- run:
name: Show current branch
command: |
echo ${CIRCLE_BRANCH}
echo $fireBaseApiKey
- restore_cache:
keys:
- v1-dependencies-{{checksum "package.json"}}
- v1-dependencies-
- run:
name: Install local dependencies
command: |
npm install
- save_cache:
key: v1-dependencies-{{checksum "package.json"}}
paths:
- node_modules
- run:
name: Building
command: npm run build
- save_cache:
key: v1-dist-{{ .Environment.CIRCLE_BRANCH}}-{{ .Environment.CIRCLE_SHA1}}
paths:
- dist
workflows:
version: 2.1
build:
jobs:
- build
- cypress/install:
requires:
- build
build: 'npm run build'
context: fireBaseApiKey
- cypress/run:
requires:
- cypress/install
- build
start: 'npm start'
context: fireBaseApiKey
当 circleCI 启动时,工作流的前两个作业成功(构建和 cypress/install),但 cypress/run 产生以下错误:
赛普拉斯无法验证设置为“baseUrl”的服务器是否正在运行:
您的测试可能会向此“baseUrl”发出请求,如果您不启动服务器,这些测试将失败。
请启动此服务器,然后再次运行 Cypress。
我猜我没有使用该npm run build
命令启动服务器。
我尝试添加:
- run:
name: start ng server
command: ng serve
在“构建”工作中,但错误是:
/bin/bash: ng: 找不到命令
我试图在 dockerhub 上找到一个可以执行 ng 命令的 docker 容器,并且“angular/ngcontainer”似乎是一个不错的候选者,因为按照教程链接使用 circleci/node:6.10-browsers 作为我的 docker 映像也无法识别 ng 命令。
我想我在这里大部分时间都超出了我的深度,并且无法找到使用 Cypress 并在 circleCI 上运行 CI 的 Angular 项目的示例。有这样一个例子可能会大大有助于让事情变得有意义。在那之前,有没有人对我如何执行命令有任何建议,ng serve
你认为这会解决我的服务器无法启动错误吗?
2019 年 2 月 3 日 19:34 更新:
根据网上朋友的建议,我wait-on
在研究了柏树球的使用情况后补充了一点。因此,我更新的-cypress/run
命令显示为:
...
- cypress/run:
requires:
- cypress/install
- build
start: 'npm start'
wait-on: 'http://localhost:4200'
context: fireBaseApiKey
这似乎在等待一个永远不会发生的“ http://localhost:4200 ”。