使用Testcafe Docker图像悬挂铬



试图在testcafe/testcafe docker映像中运行铬无头的摄像机会导致浏览器悬挂,无论我使用了什么选项。这是我目前拥有的:

"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
}

编辑:我应该纠正自己,当我删除--headless时,这在100%的时间内无法工作,也不会在无头时100%失败。无论哪种方式,它都会间歇地通过一两个测试,然后失败。 Firefox确实有100%的时间经过。我也一直在尝试docker-composs,但是我的docker-compose.yml中没有什么特别的,而且行为似乎是一样的。

[更新]最新的TestCafe版本(1.1.4)包含所有必要的标志。您可以如下简化browsers属性值:

"browsers": "chromium"

关于此的testcafe github上创建了一个问题。它最终通过在铬上使用--disable-dev-shm-usage标志来解决。

问题:https://github.com/devexpress/testcafe/issues/3524

pr在docker中默认为默认值:https://github.com/devexpress/testcafe/pull/3557

最新更新