【问题标题】:Gitlab and Cypress - error while loading shared libraries: libxshmfence.so.1: cannot open shared object file: No such file or directoryGitlab和赛普拉斯-加载共享库时出错:libxshmfence.so.1:无法打开共享对象文件:没有这样的文件或目录
【发布时间】: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


    【解决方案1】:

    我在尝试运行 Cypress 时也遇到了缺少 libxshmfence.so.1 库的错误。我尝试按照堆栈溢出相关问题下的各种建议来安装不同的依赖项,但均未成功。最后我发现我收到此错误的原因是我使用的是 32 位 Debian VM,并且仅支持 64 位。我使用 Vagrant 启动了一个 64 位 Ubuntu 桌面虚拟机,但问题并没有出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 2015-08-31
      • 1970-01-01
      • 2019-02-16
      相关资源
      最近更新 更多