在Docker容器中运行和调试测试

时间:2015-04-20 06:27:44

标签: node.js docker phantomjs karma-runner protractor

我想将我的整个node.js应用程序停靠,并在docker容器中运行所有内容,包括测试。

如果您使用PhantomJS并且我实际上尝试了它并且它有效,这听起来很容易。

我喜欢在Chrome中运行测试的一件事 - 简单的调试。您可以启动Karma服务器,打开devtools,在测试文件中设置断点(使用debugger语句)并运行Karma - 它将连接到服务器运行测试,并在断点处停止,允许您从那里做各种各样的事情。

现在我如何在docker容器中执行此操作?

  • 我应该在主机上启动Karma服务器(使用Chrome)并告诉容器内的Karma-runner连接到它,运行测试吗? (无论如何我该怎么办?)

  • 是否可以在Docker容器中运行Chrome(这听起来像是一个愚蠢的问题,但是当我尝试docker search desktop时会出现一堆事情,所以我认为它是可能的(?)< / p>

  • 也许可以在PhantomJS中调试测试(虽然我怀疑它与Chrome devtools一样方便)

您能否分享一下在Docker容器中运行和调试Karma测试的经验?

upd :我刚刚意识到可以在容器中运行Karma服务器,并且仍然可以通过从主机导航到Karma页面(例如localhost:9876)来调试测试。

但是,我仍有问题 - 我打算设置并开始使用Protractor。现在这些测试肯定需要在真正的浏览器中运行(PhantomJS有太多的怪癖)。谁能告诉我如何从Docker容器内运行Protractor测试?

2 个答案:

答案 0 :(得分:4)

我不了解Protractor及其工作流程,但如果您需要在容器中使用浏览器,您是否看到了this文章?我会冒昧地引用这个:

$ docker run -it \
    --net host \ # may as well YOLO
    --cpuset 0 \ # control the cpu
    --memory 512mb \ # max memory it can use
    -v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
    -e DISPLAY=unix$DISPLAY \ # pass the display
    -v $HOME/Downloads:/root/Downloads \ # optional, but nice
    -v $HOME/.config/google-chrome/:/data \ # if you want to save state
    -v /dev/snd:/dev/snd --privileged \ # so we have sound
    --name chrome \
    jess/chrome

答案 1 :(得分:1)

要对量角器测试用例进行docker化,请使用Dockerhub caltha / protractor(或)webnicer / protractor-headless中的任一图像。

然后运行此命令“ docker run -it {imageid} protractor.conf.js”。请参阅那些存储库中的说明