Моя цель:
Для запуска модульных тестов в моем приложении Angular 6 (которое запускается внутри контейнера Docker) с использованием Karma / Jasmine.Для запуска этих тестов мне нужен веб-браузер.Таким образом, казалось, что Chromium без головы был хорошим вариантом.Я установил его вместе с кучей других библиотек через мой Dockerfile, но запуск моих тестов внутри контейнера Docker завершился неудачно (запуск тестов вне его работает нормально).
Ошибка:
23 02 2019 04:28:08.884:ERROR [launcher]: ChromiumHeadless stdout:
23 02 2019 04:28:08.884:ERROR [launcher]: ChromiumHeadless stderr: [0223/042808.557529:WARNING:dns_config_service_posix.cc(326)] Failed to read DnsConfig.
[0223/042808.591436:FATAL:udev_loader.cc(38)] Check failed: false.
Фактически открытие браузера (http://localhost:9876/) и последующее выполнение тестов по-прежнему приводят к сбою в автономном режиме, но тесты отображаются в браузере. Приятно видеть тесты, но не слишком полезно, если я хочу, чтобы эти модульные тесты в конечном итоге выполнялись как часть CI или что-то в этом роде.
Я предполагаю, что на самом деле мне может не понадобиться работающий DNS (он говорит WARNING из вывода stderr), но я не уверен, как его отключить.
Вот текущая конфигурация браузера в тестере Karma:
browsers: ['ChromeHeadlessCustom'],
customLaunchers: {
ChromeHeadlessCustom: {
base: 'ChromiumHeadless',
flags: [
'--no-sandbox',
'--allow-insecure-localhost',
'--homepage=about:blank',
'--no-first-run',
'--headless',
'--disable-software-rasterizer',
'--disable-gpu',
'--disable-translate',
'--disable-extensions',
'--disable-setuid-sandbox',
'--remote-debugging-port=9876'
]
}
}
Единственные значимые флагибыли бы флаги headless
и no-sandbox
, все остальное, что я добавил при просмотре других постов и, похоже, не оказало никакого влияния.
Dockerfile (где я думаю, что я устанавливаюChromium успешно):
FROM node:8-alpine
# Install Google Chrome to run Angular unit tests
ENV CHROME_BIN="/usr/bin/chromium-browser"
ENV LIGHTHOUSE_CHROMIUM_PATH /usr/bin/chromium-browser
RUN \
echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk --no-cache update \
&& apk --no-cache upgrade \
&& apk add --no-cache --virtual .build-deps gifsicle pngquant optipng libjpeg-turbo-utils udev ttf-opensans chromium
&& rm -rf /var/cache/apk/* /tmp/* /usr/include
Так что, если у кого-нибудь есть какие-либо предложения о том, куда идти дальше, или если я пропустил какой-то другой очевидный простой способ выполнения этих тестов, это будет оценено!