如何在Docker中运行黄瓜/硒测试?

时间:2017-07-03 12:19:14

标签: ruby selenium docker cucumber xvfb

我正在努力从Docker镜像中运行我的黄瓜测试。

这是我的设置:

  1. 我使用OSX和XQuartz来运行X11会话
  2. 我使用Ubuntu 14 Vagrant图像进行开发,转发我的X11会话
  3. 我正在尝试使用Firefox运行一个docker镜像,它将使用我的XQuartz会话进行显示
  4. 到目前为止,我设法使用以下设置启动Firefox:

    # Dockerfile
    FROM ubuntu:14.04
    
    RUN apt-get update && apt-get install -y firefox
    
    # Replace 1000 with something appropriate ;)
    RUN export uid=1000 gid=1000 && \
         mkdir -p /home/developer && \
         echo "developer:x:${uid}:${gid}:Developer,,,:/home/dev:/bin/bash" >> /etc/passwd && \
         echo "developer:x:${uid}:" >> /etc/group && \
         echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
         chmod 0440 /etc/sudoers.d/developer && \
         chown ${uid}:${gid} -R /home/developer
    
    USER developer
    ENV HOME /home/developer
    CMD /usr/bin/firefox
    

    我可以从我的Vagrant机器启动带有--net=host的Firefox:

    docker build -t firefox .
    docker run --net=host -ti --rm -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/home/developer/.Xauthority -v /tmp/.X11-unix:/tmp/.X11-unix:rw firefox:latest
    

    但这并不理想,因为我无法在docker-compose.yml文件中将其他容器链接到我的机器。理想情况下,我想在没有--net=host的情况下运行我的docker机器:

    docker build -t firefox .
    docker run -ti --rm -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/home/developer/.Xauthority -v /tmp/.X11-unix:/tmp/.X11-unix:rw firefox:latest
    

    但是我收到以下错误:

    error: XDG_RUNTIME_DIR not set in the environment.
    Error: cannot open display: localhost:10.0
    

    请帮助:)

1 个答案:

答案 0 :(得分:1)

您可以简单地使用elgalu/docker-selenium来避免处理已经为您解决的问题,并维护:

docker run --rm -ti --net=host --pid=host --name=grid \
   -e SELENIUM_HUB_PORT=4444 -e TZ="US/Pacific" \
   -v /dev/shm:/dev/shm --privileged elgalu/selenium

如果您需要高级功能,例如带有视频录制功能的信息中心或实时预览,您可以使用Zalenium并启动它:

curl -sSL https://raw.githubusercontent.com/dosel/t/i/p | bash -s start -i