我最近将我的node.js应用程序移动到了docker镜像中,我想在图像中运行我的测试。我的mocha / node测试工作正常,但Karma测试涉及启动Chrome以运行测试,而Chrome未安装在容器中。
我该如何解决这个问题?
谷歌搜索'码头工人& karma'在那里发现了docker图像,但我找不到如何思考问题和最佳方法的说明。
答案 0 :(得分:3)
我发现这个码头图像是在Concourse CI上的docker容器内快速运行业力测试的绝佳起点:
https://hub.docker.com/r/markadams/chromium-xvfb-js/
它包含节点6.x(最新)+ npm以及使用X虚拟帧缓冲的无头铬实例。对我有用!
答案 1 :(得分:0)
还有一个protractor-runner项目,而Karma与运行Protractor相似,因此您可以从该示例中学习如何做。但是,我更喜欢使用chromium-xvfb-js
图片的建议。
答案 2 :(得分:-4)
使用PhantomJS代替Chrome。 Karma有PhantomJS launcher。
PhantomJS基于Blink。
安装PhantomJS:
npm karma-phantomjs-launcher --save-dev
添加到Karma配置:
module.exports = function(config) {
config.set({
browsers : ['PhantomJS']
});
};
修改强>
这是部分od Dockerfile
ENV NODE_VERSION 0.12.7
ENV NPM_VERSION 3.5.1
ENV PHANTOM_JS phantomjs-1.9.8-linux-x86_64
# App and test
RUN set -x \
&& buildDeps='curl git bzip2 file libfreetype6 libfontconfig1 python-pip python-dev libpq-dev libmemcached-dev libzmq-dev libjpeg62-turbo-dev zlib1g-dev libtiff5-dev make g++ psmisc' \
&& apt-get update \
&& apt-get install -y $buildDeps --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& curl -SLO "https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2" \
&& tar xvjf $PHANTOM_JS.tar.bz2 \
&& mv $PHANTOM_JS /usr/local/share \
&& ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --verify SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.gz\$" SHASUMS256.txt.asc | sha256sum -c - \
&& tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt.asc \
&& npm install -g npm@"$NPM_VERSION" grunt-cli \
&& npm install \
&& npm cache clear \
&& ./node_modules/.bin/bower install --allow-root \
&& npm test \
&& apt-get purge -y --auto-remove $buildDeps \
&& rm -rf /usr/local/bin/node /usr/local/bin/npm /usr/local/include/node /usr/local/lib/node_modules \
&& rm -rf /usr/local/share/$PHANTOM_JS /usr/local/bin/phantomjs
在这种情况下,Docker制作了一个图层。在这一层
测试正在运行,您在生产容器中没有PhantomJS。