【问题标题】:Karma with ChromeHeadless on Jenkins CI with Debian使用 Debian 的 Jenkins CI 上使用 ChromeHeadless 的 Karma
【发布时间】:2018-08-02 01:41:04
【问题描述】:

我们正在我们的测试环境中从 PhantomJS 迁移到 ChromeHeadless,并为我们的前端 Node.js 应用程序使用 Karma 和 Jasmine。在本地,只需要替换字段

浏览器:['PhantomJS'],

浏览器:['ChromeHeadless'],

并在 package.json 中添加条目:

"karma-chrome-launcher": "x.y.z",

然后 npm 构建将使用本地安装的 chrome 浏览器实例来运行 Jasmine 测试。这可以正常工作。

在我们的 jenkins 构建服务器(在 Debian Jessie 上运行)上,没有安装 chrome,因此无法执行测试。

现在的问题:

  • 是否有 chrome 的 NPM 包 可以安装,这样我就不用直接在 debian 机器上安装了? (类似于 phantomjs-prebuilt,在运行实际测试用例之前安装当前的 PhantomJS 实例)

UPDATE:是的,有 NPM 包 puppeteer,见: https://github.com/GoogleChrome/puppeteer。这将根据当前的构建机器获取 chrome 版本。因此,必须添加 package.json 文件的新条目(或通过 npm install puppeteer -D 安装):

“傀儡师”:“x.y.z”,

还有 karma.conf:

process.env.CHROME_BIN = require('puppeteer').executablePath();

browsers: ['HeadlessChrome'],
        customLaunchers: {
            HeadlessChrome: {
                base: 'ChromeHeadless',
                flags: ['--no-sandbox']
            }
        },

请注意,使用 Debian,有时必须安装缺少依赖项。见:https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

【问题讨论】:

    标签: node.js npm phantomjs karma-jasmine puppeteer


    【解决方案1】:

    有一个比在任何地方捆绑铬更好的方法。 您可以设置环境变量来告诉 Puppeteer 安装或不安装 Chromium。 所以在本地,继续安装 chromium,但在 CI 服务器上将 env 变量设置为不安装 chromium。

    然后您可以获取无浏览器图像并为 CI 服务器 chrome 运行该图像。 这要好得多的原因是您需要在服务器上安装大量依赖项才能使 Chromium 正常工作。使用 Docker 镜像是更好的方法。

    请参阅此处的文档: https://docs.browserless.io/docs/docker-quickstart.html

    参考这个question的答案!有关如何使用 selenium chrome 图像执行此操作的 karma 配置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2018-01-19
      • 2018-03-19
      • 2018-10-16
      • 2018-03-20
      • 1970-01-01
      • 2012-08-25
      相关资源
      最近更新 更多