¶前言
我决定在我的 blessing-trans 项目中使用 Karma(是的,我要抛弃 node-qunit-phantomjs 了),当我在我本地执行 karma start 的时候,是完全没有问题的,能够自动启动 Chrome。但是当我推送到 Github 并让 CI 进行构建的时候,测试失败,提示是找不到 Chrome。
我很想当然地往 .travis.yml 中添加 addons,在里面加入 chrome: latest,但是依然失败。随后我在别人的一个仓库中,发现他的 .travis.yml 是 google-chrome: latest ……我无语。
但还是不行啊,我搜索了一下,发现这不能这么简单。
在 Travis CI 中使用 Chrome 要关闭沙箱(至于原因,我也不清楚)。因此,除了要对 .travis.yml 作改动,还要对 karma.conf.js 作改动。
¶.travis.yml
首先要把 .travis.yml 弄成这样的。
before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start其中 CHROME_BIN 就是指定 Chrome 位置的环境变量。
¶karma.conf.js
而 karma.conf.js 这里因为不仅要在 Travis CI 中使用,我们本地做测试也是需要的,因此里面的配置不能写死,要根据当前的环境作一些判断。
首先在文件最顶部加入:
let browsers = ['Chrome'];
if (process.env.TRAVIS) {
browsers = ['Chrome_travis_ci'];
}事实并不存在 Chrome_travis_ci 这样的浏览器,这只是我们自定义的,所以要在 config.set() 中添加:
browsers: browsers,
customLaunchers: {
Chrome_travis_ci: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},可以看到,我们添加“禁用沙箱”的标记,不添加是不能运行的。
参考来源: