使用cypress/included镜像时能否执行指定npm run命令?
cypress/included镜像运行自定义npm命令及Angular测试实现方案
可以直接在cypress/included镜像中运行指定的npm run命令,该镜像已经预安装了Cypress运行所需的全部系统依赖,包括你之前报错缺失的Xvfb,无需额外手动安装系统依赖即可完成Angular应用启动+自动化测试的全流程。
具体实现方式
cypress/included镜像的默认入口为Cypress原生命令,要执行自定义npm脚本,只需要在启动容器时覆盖默认entrypoint,通过bash串行执行你的启动、测试命令即可,参考命令如下:
docker run -it -v 本地项目绝对路径:/e2e -w /e2e --entrypoint bash cypress/included:对应版本号 -c "npm install && npm run start:ci & npx wait-on http://localhost:4200 && npm run cy:run"
命令参数说明
-v 本地项目绝对路径:/e2e:将本地Angular项目目录挂载到容器内的工作目录npm run start:ci:替换为你项目中配置的Angular测试环境启动命令,注意要配置为不自动唤起浏览器、后台常驻的模式,避免阻塞后续流程npx wait-on http://localhost:4200:等待Angular本地服务完全启动后再执行后续测试,避免服务未就绪导致用例执行失败,4200为Angular默认端口,可根据你的项目配置修改npm run cy:run:替换为你项目中配置的Cypress测试执行命令,和本地运行的命令保持一致即可
常见问题说明
- 之前自定义构建镜像报
system is missing the dependency: Xvfb,是因为Cypress在Linux环境下运行需要Xvfb提供虚拟显示服务,cypress/included镜像已经预装了匹配版本的Xvfb、内置浏览器、Node.js等所有依赖,不会出现该类依赖缺失问题 - 如果你的Angular项目对Node版本有要求,直接选择对应Node版本标签的
cypress/included镜像即可,比如需要Node 18环境就选择带-node18后缀的镜像标签,避免npm依赖安装兼容问题
内容的提问来源于stack exchange,提问作者Ben jamin
相关产品推荐
相关产品推荐

