Gitlab和Cypress -加载共享库时出错:libxshmfence.so.1:不能打开共享对象文件:没有这样的文



我正试图让赛普拉斯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",
},

理想情况下,我希望发生的是第一步运行所有依赖项的安装,接下来的步骤使用这些依赖项进行构建或运行测试。到目前为止,我已经设法得到前两个步骤的工作(安装&但第三个在Cypress测试(npm run test:cypress)上一直失败

在没有ELECTRON_RUN_AS_NODE=1标志的情况下运行测试时,我首先得到了这个错误:

错误:spawn Xvfb ENOENT

在调查了这个问题之后,似乎Cypress需要一些系统依赖才能运行它的测试,详见这里。我不确定是否有可能在Gitlab运行器中安装这些系统依赖项,所以我尝试使用我在网上找到的另一种方法,其中提到在运行测试时添加ELECTRON_RUN_AS_NODE=1标志。它成功地获得了错误,但我随后出现了一个不同的错误:

加载共享库时出错:libxshmfence.so。1:无法打开共享目标文件:没有这样的文件或目录

不幸的是,我在任何地方都找不到任何有用的答案。似乎我试图运行的脚本是相当基本/标准,所以我不确定为什么他们失败。谁能告诉我哪里做错了吗?由于

我也得到了缺失的libxshmfence.so。1库错误,试图运行Cypress。我尝试遵循在堆栈溢出相关问题下找到的各种建议来安装不同的依赖项,但都没有成功。最后,我发现我得到这个错误的原因是我在一个32位的Debian VM上,只支持64位。我用Vagrant启动了一个64位的Ubuntu桌面虚拟机,没有出现问题。

最新更新