【问题标题】:How to run protractor on docker?如何在 docker 上运行量角器?
【发布时间】:2017-02-09 20:37:45
【问题描述】:

我是 docker 和量角器的新手,所以请多多包涵。

我有一个应用程序,它的后端 API 使用 python 和 django,前端使用 angular.js,并使用量角器进行 e2e 测试。所以我认为我应该这样做:

  1. 我必须在 Python-Django 中为我的 backend 设置一个 docker 容器,然后通过一些 PORT 公开这个 API。
  2. 为 angular.js frontend 创建另一个容器(或不确定的层)。
  3. 下载量角器映像并构建容器。
  4. 通过 docker 网络连接所有这些容器层?

另类

  1. 在本地机器上运行后端。
  2. 为量角器创建 docker 容器并以某种方式将 e2e 测试指向容器?

请帮助我查看实现此目的的步骤。 This video 提供了一些见解,但不确定从哪里开始。

【问题讨论】:

    标签: docker protractor docker-compose docker-networking gulp-protractor


    【解决方案1】:

    您最初的想法是正确的。设置时,我通常使用像这样的 docker-compose 文件...

    #docker-compose.yml
    version: '2'
    
    services:
      backend:
        build: ./backend
        command: <your django startup command>
      db:
        image: <postgres or whatever>
      frontend:
        build: ./frontend
        command: <npm start or equivalent>
        ports:
          - "80:80"
    

    然后,我将运行我的测试

    docker-compose run --rm frontend <MY TESTING COMMAND HERE>
    

    Docker-compose 为你处理 docker 网络的东西——在这种情况下,你的前端可以通过http://backend: 访问你的后端。 Protractor 和 npm 以及所有有趣的东西都安装在您的前端容器中。

    您还没有想到的一个主要痛点是量角器需要一个显示器才能工作 - 它不能与像 phantomjs 这样的无头浏览器一起使用,而您的 docker 容器通常不会提供这种浏览器。这个 repo 是一个如何安装真实浏览器并为其提供假显示以便它可以在容器中工作的示例...https://github.com/mark-adams/docker-chromium-xvfb,基本上将 chrome 启动脚本替换为启动 xvfb 接口并附加的 shell 脚本浏览器。

    【讨论】:

    • 对于浏览器部分,我建议使用 Selenium docker 图像。您可以启动一个完整的集线器,也可以只是独立的无头 chrome 或 firefox。如果您需要对浏览器进行可视访问,图像的 -debug 版本启用了 VNC hub.docker.com/r/selenium
    • 谢谢保罗,我认为这是一个很好的起点,可以用作指导
    • 在你的 NPM 开发容器中运行量角器有很多好处——我会使用 Selenium 镜像 dockerfiles 作为如何让它工作的指南,但仍将它与我的 npm 镜像结合使用。
    • 任何有用的教程或分步使用 docker-compose 从头开始​​运行角度 2/4 应用程序的量角器测试?
    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    相关资源
    最近更新 更多