Кукловод в Gitlab CI / CD, тестирование в браузере Headfull не работает

#docker #gitlab #puppeteer #gitlab-ci

#докер #gitlab #кукловод #gitlab-ci

Вопрос:

У меня есть проект puppeteer для тестирования моего основного приложения, который имеет некоторые функции, зависящие от видимости, поэтому его необходимо протестировать в режиме headful.

Я хотел иметь возможность запускать тестовый скрипт из gitlab (чтобы я мог подключить конвейер к основному приложению), но, похоже, я не могу принудительно присвоить свойству headless значение true: фактически, когда я запускаю тот же скрипт с healess: true , он работает, в то время как для headless: false он терпит неудачу.

Ошибка:

 > jest --runInBand
 Error: Failed to launch the browser process!
 Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
 [1485:1485:0908/113752.573573:ERROR:browser_main_loop.cc(1512)] Unable to open X display.
 TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md
     at onClose (/builds/tests-puppeteer/node_modules/puppeteer/lib/Launcher.js:750:14)
     at ChildProcess.<anonymous> (/builds/tests-puppeteer/node_modules/puppeteer/lib/Launcher.js:740:61)
     at ChildProcess.emit (events.js:326:22)
     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
  

мой jest-puppeteerconfig файл:

 module.exports = {
  launch: {
      headless: false,
      slowMo: process.env.SLOWMO ? process.env.SLOWMO : 0,
      devtools: false,
      ignoreHTTPSErrors: true, 
      args: ['--no-sandbox', '--window-size=1920,1040']
  }
}
  

И мой .gitlab-CI.yaml :

 # https://hub.docker.com/r/library/node/tags/
image: node:latest

cache:
  paths:
  - node_modules/

stages:
  - test
  - deploy

Integration_Tests:
  stage: test
  script:
    - apt-get update
    - apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc  6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
    - npm install
    - npm test
  when: manual
  allow_failure: false
  artifacts:
    paths:
      - public
  

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

1. это то, что не может быть решено чисто в puppeteer. в случае действий GitHub есть несколько специальных действий, например: github.com/marketplace/actions/puppeteer-headful , с GitLab я не знаю ни о каком. если у вас все в порядке с puppeteer-extra пакетом npm: вы могли бы попробовать его скрытый плагин , который заставляет безголовый chrome действовать как headful Chrome npmjs.com/package/puppeteer-extra-plugin-stealth но, честно говоря, я не уверен, помогает ли это в вашем случае использования.

2. Я не знал об этом плагине, я попробую! что касается разницы между GitLab и GitHub, я уже нашел кое-что в других вопросах здесь и по сети, но, к сожалению, я не могу сменить хост

3. да, я полагаю, это не причина для перехода на GitHub. Я не уверен, что скрытность решит вашу проблему. но вы можете заглянуть в файл docker решения GitHub Action, возможно, это поможет вам воссоздать его для GitLab github.com/mujo-code/puppeteer-headful/blob/master/Dockerfile … тем временем я надеюсь, что будет больше полезных комментариев / ответов.