node.js - 在 Docker 容器中运行和调试测试

标签 node.js docker phantomjs karma-runner protractor

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

如果您使用的是 PhantomJS,这听起来很简单,我实际上已经尝试过并且它有效。

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

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

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

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

  • 也许可以在 PhantomJS 中调试测试(尽管我怀疑它会像使用 Chrome devtools 一样方便)

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

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

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

最佳答案

我不知道 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

关于node.js - 在 Docker 容器中运行和调试测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29740651/

相关文章:

javascript - 我的express.js和passport.js中间件都正常工作并且正在被调用,但是页面没有重定向

javascript - 如何用另一个数组的元素替换数组中的元素

docker - 以非root用户身份运行docker容器进程

javascript - 如何使用casperJS获取新页面的URL

ruby-on-rails - Ember 搜索引擎

javascript - 由于来自 typography.com [更新] 的字体,Spiderable 包偶尔会工作

javascript - Nest 无法解析 RestController 的依赖关系

javascript - 如何将二进制缓冲区解码为 node.js 中的图像?

docker - 如何提交具有空入口点的 docker 容器?

automation - 自动创建docker容器并启动python脚本