【问题标题】:'--disable-dev-shm-usage' does not resolve the Chrome crash issue in Docker'--disable-dev-shm-usage' 不能解决 Docker 中的 Chrome 崩溃问题
【发布时间】:2019-08-12 14:58:22
【问题描述】:

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

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

至少这是我目前在网上找到的。

我正在使用 multicapabilities 和 Puppeteer 使用上面提供的 Chrome 参数在 Docker 中运行我的 e2e 测试。在默认的 gitlab 运行器测试中开始,但很可能会随机失败并出现随机超时错误。我试图解决这个问题将近一个星期,突然之间出现这个超时问题是由于已知的错误而发生的,而实际发生的是浏览器在 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)

当使用默认的免费 G​​itlab 运行器时,测试非常不稳定;慢的;并且随机失败(这就是我们决定使用自己的跑步者的原因)。但是当使用我们的 runner 测试时,由于上面的错误甚至没有启动。并且由于 Protractor 配置中存在所有必需的标志,因此不应发生此错误。 使用自定义运行器时如何解决'DevToolsActivePort file doesn't exist' 问题? 这是 Protractor 配置的一部分

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(),
            },
        },
    ],

更新 我正在使用

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

我知道你可能会建议更新 webdriver,但这个版本是我设法与 Puppeteer 合作的唯一版本

更新 2 泊坞窗文件:

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 运行器上,一切都运行良好(除了缓慢、不稳定、随机超时等)。但是当我们尝试使用我们自己的跑步者时不是这样

【问题讨论】:

  • 问 - 你为什么在 Puppeteer 中使用 Protractor?
  • 您还以root 用户身份运行Chrome 吗?如果是这样,请尝试更改它。
  • @demouser123 我不知道,所以它可能意味着“不”。这是我需要添加到 CI 脚本的东西吗?
  • (我说的是“root”用户)
  • 我有同样的问题很长时间了......据我了解,您正在 Docker 中运行测试,对吧?如果是这样,请附上您的 dockerfile

标签: docker protractor puppeteer


【解决方案1】:

老问题,但类似的问题几乎让我发疯,所以分享我的解决方案:

当我将我的 Docker 映像 Chrome 安装从旧版本更新到 Chrome 86 时,我收到了这个错误。我的设置不一样,但我们通过 selenium webdriver 实例化 Chrome。

解决方案是将选项作为goog:chromeOptions 哈希而不是chromeOptions 哈希传递。我真的不知道这是 Selenium、Chrome、Chromedriver 还是其他一些更新,但也许一些可怜的灵魂将来会在这个答案中找到安慰。

【讨论】:

【解决方案2】:

我想我发现了我的问题

如果我运行 df -h 我会得到这个

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G   15G  547M  97% /

问题开始发生得早一点,当时可能空间并不重要,比如说80%,这就是我错过它的原因

我发现我的/var/jenkins/workspace 大约是 10Gb,因为我在不知道这一点的情况下归档了一年的报告,因为我的 jenkins HTML 发布者设置

我的解决方案是

  1. 从目录中删除旧报告
  2. keep-all 标志设置为false,以防止将来由于我正在归档报告而过度填充
publishHTML([
    allowMissing: true,
    alwaysLinkToLastBuild: false,
    includes: '**/*',
    keepAll: true, <--------------- this guy
    reportDir: 'reports/',
    reportFiles: reports,
    reportName: 'HTML Report',
    reportTitles: tabs
])
  1. 并将额外的 4 Gb 添加到 /dev/xvda1

【讨论】:

  • 感谢分享!查看空间使用情况的好点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2020-01-02
相关资源
最近更新 更多