#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 … тем временем я надеюсь, что будет больше полезных комментариев / ответов.