'-disable-dev-shm-usage'无法解决Docker中的Chrome浏览器崩溃问题

问题描述 投票:0回答:1

由于我们的e2e测试已扩展到50多个测试,因此我们决定并行运行测试以加快测试速度。由于默认的gitlab管道资源有限(并且dev-shm-size技巧无效),我们决定使用自己的AWS运行程序。对于那些正在Docker中运行Protractor测试的人,您必须添加此标志以防止浏览器崩溃问题:

chromeOptions: {
                args: [
                    "--no-sandbox",
                    "--headless",
                    "--disable-gpu",
                    "--disable-dev-shm-usage"
                ]

至少那是我到目前为止在网上找到的。

我正在使用多功能和Puppeteer使用上面提供的Chrome参数在Docker中运行我的e2e测试。默认情况下,gitlab运行程序测试开始,但很可能会随机失败,并出现随机超时错误。我试图解决这个问题将近一个星期,因为突然之间,由于已知的bug导致发生了超时问题,而实际上发生的是浏览器在docker中崩溃。但是现在(当切换到运行程序时)在使用AWS运行程序时遇到“ DevToolsActivePort文件不存在”错误。

[chrome #01] WebDriverError: unknown error: DevToolsActivePort file doesn't exist
[chrome #01]   (Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.4.0-1052-aws x86_64)

使用默认的免费Gitlab运行程序测试时非常容易;慢;并随机失败(这就是我们决定使用自己的跑步者的原因)。但是,由于上述错误,使用流道测试时甚至无法启动。同样,由于所有必需的标志都在量角器配置中出现,因此不应再次发生此错误。使用自定义运行器时如何解决'DevToolsActivePort file doesn't exist'问题?这是量角器配置的一部分

multiCapabilities: [
        {
            browserName: "chrome",
            specs: ["./src/dashboard-spec.ts"],
            chromeOptions: {
                args: [
                    "--no-sandbox",
                    "--headless",
                    "--disable-gpu",
                    "--disable-dev-shm-usage",
                    "--window-size=1920,1040",
                ],
                binary: puppeteer.executablePath(),
            },
        },
        {
            browserName: "chrome",
            specs: ["./src/smoke-test.ts"],
            chromeOptions: {
                args: [
                    "--no-sandbox",
                    "--headless",
                    "--disable-gpu",
                    "--disable-dev-shm-usage",
                    "--window-size=1920,1040",
                ],
                binary: puppeteer.executablePath(),
            },
        },
    ],

UPDATE我正在使用

webdriver-manager update --standalone false --gecko false --versions.chrome 2.44

我知道您可能会建议更新网络驱动程序,但此版本是我设法与Puppeteer一起使用的唯一版本

UPDATE 2Docker文件:

RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-stable xvfb gtk2-engines-pixbuf xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable imagemagick x11-apps default-jre \
      --no-install-recommends \
      ruby && \
      gem install s3_website \
    && rm -rf /var/lib/apt/lists/*


RUN \
  npm install npm@latest -g &&\
  npm install -g @angular/cli

在本地和免费的gitlab运行程序上,一切正常(慢速,脆弱,随机超时等除外)。但是,当我们尝试使用自己的跑步程序时,则不可以。

由于我们的e2e测试已扩展到50多个测试,因此我们决定并行运行测试以加快测试速度。由于默认的gitlab管道资源有限(并且dev-shm-size技巧无效),我们...

docker protractor puppeteer
1个回答
0
投票

我认为我发现了我的问题

© www.soinside.com 2019 - 2024. All rights reserved.