Конвейер Bitbucket В вашей системе отсутствует зависимость: Xvfb

#testing #npm #bitbucket #cypress

#тестирование #npm #bitbucket #cypress

Вопрос:

Я пытаюсь добавить cypress в конвейер bitbucket, но он говорит мне, что мне нужно установить Xvfb, и я не знаю, как продолжать. Это мой bitbucket.pipelines.yml

 #  Template NodeJS build

#  This template allows you to validate your NodeJS code.
#  The workflow allows running tests and code linting on the default branch.

image: node:14.15.4

pipelines:
  default:
    - step:
        name: Build
        script:
          - npm install
          - npm run lint
          - npm run cypress:run
 

Это мои скрипты package.json

 "scripts": {
    "cypress:open": "cypress open",
    "cypress:run": "npx cypress run --record --key xxxxxxxxxxxx"
}
 

и локально тест выполняется нормально
введите описание изображения здесь

Но в конвейере я получаю эту ошибку:

   npm run cypress:run
> wallet-frontend@0.1.0 cypress:run /opt/atlassian/pipelines/agent/build
> npx cypress run --record --key 70004462-62d4-42ce-b359-5bff73d8b001
It looks like this is your first time using Cypress: 6.5.0
[16:30:09]  Verifying Cypress can run /root/.cache/Cypress/6.5.0/Cypress [started]
[16:30:09]  Verifying Cypress can run /root/.cache/Cypress/6.5.0/Cypress [failed]
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 - 9.13)
Cypress Version: 6.5.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! wallet-frontend@0.1.0 cypress:run: `npx cypress run --record --key xxxxxxxxx`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the wallet-frontend@0.1.0 cypress:run script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
 

Комментарии:

1. Вы читали docs.cypress.io/guides/continuous-integration /… ?

2. Да, но я этого не понял… Я не знаком с Linux

Ответ №1:

Xvfb — это сервер отображения в памяти для UNIX-подобной операционной системы, в вашем случае Linux (Debian — 9.13). Это зависимость системного уровня, которая, как предполагает cypress, установлена заранее. В случае bitbucket env это не установлено и, следовательно, эта ошибка. В основном это используется для отображения (пользовательского интерфейса) в случае заголовочных браузеров при запуске cypress.

Здесь есть несколько простых обходных путей:

  1. Установка зависимости вручную: я не буду предлагать это, поскольку вы можете пропустить еще несколько зависимостей, если не изучите все зависимости досконально.
  2. Запуск безголовых браузеров :: Безголовые браузеры не используют Xvfb, поэтому не столкнутся с этой точной ошибкой, но, как я сказал в пункте 1, могут быть и другие проблемы. Команда станет cypress run --headless
  3. Используйте предоставленные Cypress изображения Docker (предлагаемые): я вижу, что вы используете node:14.15.4 образ для этой сборки. Вместо этого используйте официальные базовые изображения, предоставленные cypress, для любой версии узла, которую вы хотите запустить (ищите другую версию узла в тегах). Если вы заглянете в Dockerfile, вы увидите, что они приложили усилия для установки зависимостей, необходимых для запуска Cypress внутри docker (вы можете увидеть Xvfb там).

Кроме того, ищите уже открытые проблемы, когда вы застряли в проблемах, связанных с cypress, у них есть очень активный и полезный раздел проблем. Я обнаружил там ту же проблему: https://github.com/cypress-io/cypress/issues/14457

Ответ №2:

Cypress предоставляет зависимости для CI.

Linux

  • Ubuntu / Debian
 apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
 
  • CentOS
 yum install -y xorg-x11-server-Xvfb gtk2-devel gtk3-devel libnotify-devel GConf2 nss libXScrnSaver alsa-lib
 

ссылка: https://docs.cypress.io/guides/continuous-integration/introduction#Dependencies