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