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

时间:2018-02-22 09:12:01

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

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

  

浏览器:['PhantomJS'],

  

浏览器:['ChromeHeadless'],

并在 package.json 中添加条目:

  

“karma-chrome-launcher”:“x.y.z”,

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

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

现在的问题是:

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

更新:是的,有NPM包木偶操作员,请参阅: Blocking sockets: when, exactly, does "send()" return?。这将根据当前的构建计算机获取chrome版本。因此,必须添加 package.json 文件的新条目(或通过npm install puppeteer -D安装):

  

“puppeteer”:“x.y.z”,

和karma.conf:

operator()

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

1 个答案:

答案 0 :(得分:1)

有一种比在您各处捆绑铬更好的方法。 您可以设置环境变量来告诉Puppeteer安装或不安装Chromium。 因此,请在本地安装铬,然后在CI服务器上将env变量设置为不安装铬。

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

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

请参阅此question中的答案!关于如何使用硒铬图像进行业力配置