我们正在测试环境中将PhantomJS从PhantomJS转移到ChromeHeadless,使用Karma和Jasmine作为我们的前端Node.js应用程序。在本地,只需要更换场地
浏览器:['PhantomJS'],
同
浏览器:['ChromeHeadless'],
并在package.json中添加条目:
“karma-chrome-launcher”:“x.y.z”,
然后npm构建将采用本地安装的chrome浏览器实例来运行Jasmine测试。这工作正常。
在我们的jenkins构建服务器(在Debian Jessie上运行)上,没有安装chrome,因此无法执行测试。
现在的问题是:
更新:是的,有NPM包木偶操纵者,请参阅:https://github.com/GoogleChrome/puppeteer。这将根据当前的构建计算机获取chrome版本。因此必须添加一个新条目package.json文件(或通过npm install puppeteer -D安装):
“puppeteer”:“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
有一种更好的方法可以做到这一点,而不是在任何地方捆绑铬。您可以设置环境变量以告诉Puppeteer安装或不安装Chromium。所以在本地,继续安装铬但是在CI服务器上设置env变量不安装铬。
然后,您可以获取无浏览器图像并为CI服务器chrome运行该图像。这样做要好得多的原因是您需要在服务器上安装的依赖项数量才能使Chromium正常工作。使用Docker镜像是更好的方法。
请参阅此处的文档:https://docs.browserless.io/docs/docker-quickstart.html
请参阅此question中的答案!关于如何使用硒铬图像执行此操作的karma配置