2017-07-03 31 views
0

我正在努力从Docker镜像运行我的黄瓜测试。如何在Docker中运行cucumber/selenium测试?

这里是我的设置:

  1. 我使用OSX与XQuartz运行的X11会议
  2. 我用发展的Ubuntu的14放浪形象在我转发我的X11会议
  3. 我想运行与Firefox码头工人形象,将用我XQuartz会话显示

到目前为止,我设法用下面的设置启动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 

我可以--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 

但因为我不能在泊坞窗,compose.yml文件等容器链接到我的机器,这是不理想的。理想情况下,我想没有--net=host运行我的泊坞窗机是这样的:

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 

请帮助:)

+0

你特别努力,因为你想看到的测试或者使用X11你打开一些像Xvfb这样的容器,你不需要X11服务器就可以运行虚拟帧缓冲区?我问,因为我使用官方Selenium镜像https://hub.docker.com/r/selenium/在Selenium Hub上使用Selenium Hub在Firefox和Chrome中运行Selenium测试,它运行良好。 –

+0

是的,我不使用xvfb的主要原因是因为我想查看和调试我的测试。 Xvfb非常适合CI。 –

回答

0

你可以简单地使用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 
+0

我如何使用它来运行我的黄瓜测试? –

+0

当然,这些是安装了Firefox和Chrome的硒服务器。 –