我想将我的整个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测试?
答案 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”。请参阅那些存储库中的说明