Хром зависает, используя образ TestCafe Docker - PullRequest
0 голосов
/ 25 февраля 2019

Попытка запустить Chromium без заголовка внутри изображения Docker testcafe / testcafe приводит к зависанию браузера, независимо от того, какие параметры я использовал.Вот что у меня есть на данный момент:

"browsers": {
    "path": "/usr/bin/chromium-browser",
    "cmd": "--headless --disable-gpu --no-sandbox"
}

И вывод через несколько минут:

e2e_1  | Using locally installed version of TestCafe.
e2e_1  | ERROR The HeadlessChrome 71.0.3578 / Linux 0.0.0 browser disconnected. This problem may appear when a browser hangs or is closed, or due to network issues.
e2e_1  |
e2e_1  | Type "testcafe -h" for help.

Это прекрасно работает, если я удаляю --headless, но тогда браузеррендеринг в Xvfb вместо запуска без головы.

Dockerfile:

FROM testcafe/testcafe

USER root

RUN apk --no-cache add \
    ffmpeg

RUN mkdir /home/e2e
WORKDIR /home/e2e
COPY . .
RUN chmod -R 757 /home/e2e

USER user

RUN npm install

EXPOSE 1337 1338

ENTRYPOINT ["/home/e2e/testcafe-docker.sh"]

testcafe-docker.sh:

#!/bin/sh
XVFB_SCREEN_WIDTH=${SCREEN_WIDTH-1280}
XVFB_SCREEN_HEIGHT=${SCREEN_HEIGHT-720}

dbus-daemon --session --fork
Xvfb :1 -screen 0 "${XVFB_SCREEN_WIDTH}x${XVFB_SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
export DISPLAY=:1.0
fluxbox >/dev/null 2>&1 &
testcafe --ports 1337,1338 "$@"

.testcaferc.json:

{
    "browsers": "chromium --no-sandbox",
    "src": ["tests/*"],
    "reporter": "spec",
    "screenshotPath": "tmp/screenshots/",
    "screenshotPathPattern": "${DATE}_${TIME}/test-${TEST_INDEX}/${USERAGENT}/${FILE_INDEX}.png",
    "takeScreenshotsOnFails": true,
    "videoPath": "tmp/reports/screen-captures",
    "videoOptions": {
        "singleFile": true,
        "failedOnly": true,
        "pathPattern": "${TEST_INDEX}/${USERAGENT}/${FILE_INDEX}.mp4"
    },
    "videoEncodingOptions": {
        "r": 20,
        "aspect": "16:9"
    },
    "skipJsErrors": true,
    "concurrency": 1,
    "port1": 1337,
    "port2": 1338
}

РЕДАКТИРОВАТЬ: Я должен исправить себя, что это не работает в 100% случаев, когда я удаляю --headless, и при этом он не работает в 100% случаев, когда он без головы.В любом случае, он периодически проходит один или два теста, а затем не проходит. Firefox проходит 100% времени. Я тоже немного пробовал docker-compose, но в моем docker-compose.yml нет ничего особенного, и поведение кажется таким же.

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Создан вопрос на TestCafe GitHub по этому поводу.В конечном итоге он был решен с помощью флага --disable-dev-shm-usage на Chromium.

Проблема: https://github.com/DevExpress/testcafe/issues/3524

PR, где это было установлено по умолчанию для запуска в Docker: https://github.com/DevExpress/testcafe/pull/3557

0 голосов
/ 26 февраля 2019

[Обновлено] Последняя версия TestCafe (1.1.4) содержит все необходимые флаги.Вы можете упростить значение свойства browsers следующим образом:

"browsers": "chromium"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...