使用Debian的Jenkins CI上使用ChromeHeadless的Karma

sch*_*ave 9 node.js npm phantomjs karma-jasmine puppeteer

我们正在测试环境中将PhantomJS从PhantomJS转移到ChromeHeadless,使用Karma和Jasmine作为我们的前端Node.js应用程序.在本地,只需要更换场地

浏览器:['PhantomJS'],

浏览器:['ChromeHeadless'],

并在package.json中添加条目:

"karma-chrome-launcher":"xyz",

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

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

现在的问题是:

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

更新:是的,有NPM包木偶操纵者,请参阅:https: //github.com/GoogleChrome/puppeteer.这将根据当前的构建计算机获取chrome版本.因此必须添加一个新条目package.json文件(或通过npm install puppeteer -D安装):

"puppeteer":"xyz",

和karma.conf:

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

browsers: ['HeadlessChrome'],
        customLaunchers: {
            HeadlessChrome: {
                base: 'ChromeHeadless',
                flags: ['--no-sandbox']
            }
        },
Run Code Online (Sandbox Code Playgroud)

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

Nan*_*ron 1

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

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

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

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