【发布时间】:2021-12-11 16:56:44
【问题描述】:
我正在尝试让赛普拉斯 e2e 测试与 gitlab 运行器一起运行,但遇到了许多问题。我的管道有 3 个步骤:安装依赖项、运行构建、运行测试。
这是我当前的配置:
image: node:14.0.0
variables:
API_BASE_URL: https://test.local.mysite.io/api
API_BASE_URL: https://test.local.mysite.io/api
npm_config_cache: '$CI_PROJECT_DIR/.npm'
CYPRESS_CACHE_FOLDER: '$CI_PROJECT_DIR/cache/Cypress'
cache:
paths:
- node_modules/
- cache/Cypress
stages:
- install
- build
- test
install:
stage: install
cache:
key: 'e2eDeps'
paths:
- node_modules/
- cache/Cypress/
script:
- npm i
build:
stage: build
dependencies:
- install
script:
- npm run build
artifacts:
expire_in: 1 days
when: on_success
tests:
script:
- npm ci
- npm run start:ci &
- npm run test
这是我的 package.json 中的脚本:
"scripts": {
"build": "webpack --config webpack.prod.js",
"dev": "webpack serve --config webpack.dev.js",
"start:ci": "serve --no-clipboard --listen ${PORT:-3000}",
"test": "cross-env NODE_ENV=test && npm run test:jest && npm run test:cypress",
"test:ci": "npx start-test start:ci http://localhost:3000 test",
"test:cypress": "ELECTRON_RUN_AS_NODE=1 cypress run --headless",
"test:cypress-open": "cypress open",
"test:jest": "jest",
"test:jest-watch": "cross-env NODE_ENV=test jest --watchAll",
},
我最理想的情况是运行所有依赖项的安装的第一步,以及使用这些依赖项进行构建或运行测试的以下步骤。到目前为止,我已经成功完成了前两个步骤(安装和构建),但第三个步骤在赛普拉斯测试中一直失败 (npm run test:cypress)
我首先在没有 ELECTRON_RUN_AS_NODE=1 标志的情况下运行测试时遇到了这个错误:
错误:生成 Xvfb ENOENT
在调查了该问题后,赛普拉斯似乎需要一些系统依赖项才能运行它的测试,详细信息 here。我不确定是否可以在 Gitlab 运行器中安装这些系统依赖项,所以我尝试使用我在网上找到的另一种方法,其中提到在运行测试时添加 ELECTRON_RUN_AS_NODE=1 标志。它成功地解决了错误,但是我却遇到了一个不同的错误:
加载共享库时出错:libxshmfence.so.1:无法打开共享对象文件:没有这样的文件或目录
不幸的是,我在任何地方都找不到有关上述错误的任何有用答案。我试图运行的脚本似乎是相当基本/标准的,所以我不确定它们为什么会失败。有人可以告诉我我哪里出错了吗?谢谢
【问题讨论】:
标签: javascript node.js gitlab cypress