我有一个在 Docker 容器中运行的 Web 应用程序。根据我的理解,使用“cypress/base”镜像应该提供必要的依赖项。但是,尝试从附加的 shell 启动 Cypress 测试(使用 headless 运行)会产生以下输出:
Unhandled rejection Error: Your system is missing the dependency: Xvfb
Install Xvfb and run Cypress again.
Read our documentation on dependencies for more information:
https://on.cypress.io/required-dependencies
If you are using Docker, we provide containers with all required dependencies installed.
----------
Error: spawn Xvfb ENOENT
----------
Platform: linux (Debian - 10.11)
Cypress Version: 8.5.0
at /app/node_modules/cypress/lib/errors.js:328:17
at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
手动安装 Xvfb 无法解决问题;它只会导致另一个错误,指出无法解析 Cypress 的依赖项。
Dockerfile:
FROM node:16
RUN mkdir /app
WORKDIR /app
COPY package.json .
COPY yarn.lock .
RUN yarn
RUN npx browserslist@latest --update-db
COPY . .
CMD ["yarn", "start"]
docker-compose.yml:
version: "3"
services:
ponder:
image: cypress/base:16
container_name: myApplication
build: ./
volumes:
- ./src:/app/src
- ./public:/app/public
- ./package.json:/app/package.json
- /app/node_modules
ports:
- 3001:3000
stdin_open: true
想法?
编辑:
Xvfb 是通过运行 apt-get update
和 apt-get install xvfb
手动安装的。此后尝试运行 Cypress,给出:
Unhandled rejection Error: Cypress failed to start.
This may be due to a missing library or dependency. https://on.cypress.io/required-dependencies
Please refer to the error below for more details.
----------
/root/.cache/Cypress/8.5.0/Cypress/Cypress: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
----------
Platform: linux (Debian - 10.11)
Cypress Version: 8.5.0
at /app/node_modules/cypress/lib/errors.js:328:17
at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
最佳答案
您需要安装依赖项。 https://docs.cypress.io/guides/continuous-integration/introduction#Dependencies
apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
关于docker - Cypress 无法在 Docker 容器中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70451400/