【发布时间】: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