selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally

Закинул фронтовые тесты (Selene) в гитлаб и запускаю на самопальном образе python:3.12.1-alpine3.18 (у нас в докер образе нет терминала и нужно было собрать свой для запуска в headless режиме):

    FROM python:3.12.1-alpine3.18

# Installs latest Chromium package.
RUN apk upgrade --no-cache --available \
    && apk add --no-cache \
      chromium \
      chromium-chromedriver \
      ttf-freefont \
      font-noto-emoji \
      curl \
      wget \
      bash \
      xvfb \
    && apk add --no-cache \
      --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community \
      font-wqy-zenhei

# Add Chrome as a user
RUN mkdir -p /usr/src/app \
    && adduser -D chrome \
    && chown -R chrome:chrome /usr/src/app

# Run Chrome as non-privileged
USER chrome
WORKDIR /usr/src/app

ENV CHROME_BIN=/usr/bin/chromium-browser \
    CHROME_PATH=/usr/lib/chromium/

# Autorun chrome headless
ENV CHROMIUM_FLAGS="--headless --no-sandbox --disable-gpu --disable-software-rasterizer --disable-dev-shm-usage"

COPY --chown=chrome docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

Брал за основу этот [dockerfile][1]

В итоге в джобе ловлю ошибку:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally.
  (session not created: DevToolsActivePort file doesn't exist)

Перепробовал уже тысяча и один способ с разной степени паршивости результата (либо так же все, либо падают не только фронтовые, но и бэк тесты)

В фикстуре пробовал указывать разные опции, которые писали по схожей проблеме:

@pytest.fixture(scope='function', autouse=True)
def browser_management():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--remote-debugging-pipe')
    chrome_options.add_argument("--crash-dumps-dir=/tmp")
    chrome_options.add_argument('--headless=new')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--disable-software-rasterizer')
    chrome_options.add_argument('--remote-debugging-port=9222')
    browser.config.chrome_options = chrome_options

    driver = webdriver.Chrome(service=ChromeService('/usr/bin/chromedriver'), options=chrome_options)

    yield
    browser.quit()

Собственно может кто-то сталкивался и знает как можно решить проблему? Возможно есть другой вариант для образа или тут уже в тестах надо править или параметры запуска в gitlab-ci.yml? [1]: https://github.com/Zenika/alpine-chrome/blob/master/Dockerfile


Ответы (0 шт):