Yur*_*ich 5 docker protractor puppeteer
由于我们的 e2e 测试已扩展到 50 多个测试,我们决定并行运行测试以加快速度。由于默认的 gitlab 管道资源有限(并且dev-shm-size技巧不起作用),我们决定使用我们自己的 AWS 运行器。对于那些在 Docker 中运行 Protractor 测试的人来说,你必须添加这个标志来防止浏览器崩溃问题:
chromeOptions: {
args: [
"--no-sandbox",
"--headless",
"--disable-gpu",
"--disable-dev-shm-usage"
]
Run Code Online (Sandbox Code Playgroud)
至少这是我目前在网上找到的。
我正在使用 multicapabilities 和 Puppeteer 使用上面提供的 Chrome 参数在 Docker 中运行我的 e2e 测试。在默认情况下,gitlab runner 测试开始,但很可能会随机失败并出现随机超时错误。我试图解决这个问题将近一个星期,突然出现这个超时问题是由于已知错误而发生的,而实际发生的是浏览器在 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)
Run Code Online (Sandbox Code Playgroud)
使用默认的免费 Gitlab 运行器测试时非常不稳定;减缓; 并随机失败(这就是我们决定使用自己的跑步者的原因)。但是当使用我们的 runner 测试时,由于上面的错误甚至没有启动。同样,这个错误不应该发生,因为所有必需的标志都存在于量角器配置中。'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(),
},
},
],
Run Code Online (Sandbox Code Playgroud)
更新 我正在使用
webdriver-manager update --standalone false --gecko false --versions.chrome 2.44
Run Code Online (Sandbox Code Playgroud)
我知道你可能会建议更新 webdriver,但这个版本是我设法与 Puppeteer 合作的唯一版本
更新 2 Docker 文件:
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
Run Code Online (Sandbox Code Playgroud)
在本地和免费的 gitlab runner 上,一切都运行良好(除了缓慢、片状、随机超时等)。但是当我们尝试使用我们自己的跑步者时不是
Eri*_*uer 12
老问题,但类似的问题几乎让我发疯,所以分享我的解决方案:
当我将 Docker 映像 Chrome 安装从旧版本更新到 Chrome 86 时,出现此错误。我的设置并不相同,但我们通过 selenium webdriver 实例化 Chrome。
解决方案是将选项作为goog:chromeOptions散列而不是chromeOptions散列传递。我真的不知道这是 Selenium、Chrome、Chromedriver 还是其他更新,但也许一些可怜的灵魂将来会在这个答案中找到安慰。
我想我在我的案例中发现了问题
如果我跑步df -h我会得到这个
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 16G 15G 547M 97% /
Run Code Online (Sandbox Code Playgroud)
问题开始发生得有点早,当时空间可能并不重要,可以说80%,这就是我错过它的原因
我发现我的大小/var/jenkins/workspace大约是 10Gb,因为我在不知道这一点的情况下归档了一年的报告,因为我的 jenkins HTML 发布商设置
keep-all标志设置为false,以防止将来出现溢出,因为无论如何我都会存档报告publishHTML([
allowMissing: true,
alwaysLinkToLastBuild: false,
includes: '**/*',
keepAll: true, <--------------- this guy
reportDir: 'reports/',
reportFiles: reports,
reportName: 'HTML Report',
reportTitles: tabs
])
Run Code Online (Sandbox Code Playgroud)
/dev/xvda1| 归档时间: |
|
| 查看次数: |
14595 次 |
| 最近记录: |