javascript - 在 Docker 中打开 Karma Server URL 后 Firefox 挂起

标签 javascript firefox docker karma-runner

上下文 我一直在 PhantomJS、Google Chrome 和 Firefox 本地运行 Karma 测试,没有任何问题。目前,我希望在 Docker 中运行 Karma 测试,并且在 Docker 容器内的 Firefox 中运行 Karma 测试时遇到了问题,尽管 Docker 容器可以在 Google Chrome 中运行 Karma 测试,没有任何问题。

问题 当我创建一个包含 Google Chrome、Firefox、JS 库(node、npm、grunt ...等)和 VNC 实用程序(Xvfb、x11vnc)的 Docker 容器时。我启动了 VNC 服务器并运行了测试。 Firefox 已启动,并且使用唯一 ID 创建了套接字。当我进入 VNC session 时,我可以看到 Firefox 已启动,URL 已加载到 URL 栏,并且 Karma 页面已加载。然而,大约 2 秒后,网页就会卡住,Firefox 也挂起。因此我看不到LOG: 'INFO[2015-10-16 20:19:15]: Router Started'还有消息。

手动复制时发现有趣的内容 我厌倦了评论the lines that starts Firefox ,这样只有当我运行 Karma 测试时才会启动 karma 服务器。然后我尝试使用以下两种方法运行测试 -

  1. 通过 docker exec -it <container_tag> 启动 Bash session ,执行firefox ,并输入测试运行对应 ID 的服务器 url。在这种情况下,Firefox 没有挂起并继续开始测试运行。
  2. 通过 docker exec -it <container_tag> 启动 Bash session ,执行firefox <server_url_with_coresponding_id> 。在这种情况下,Firefox 没有挂起并继续开始测试运行。

我的 DockerFile 来自 ubuntu:14.04

#========================
# Environment Variables for Configuration
#========================
ENV GEOMETRY 1920x1080x24
ENV DISPLAY :0

#========================
# Install Required Packages
#========================
RUN apt-get update -qq && apt-get install -qqy wget \
  wget \
  firefox \
  xvfb \
  x11vnc \
  nodejs \
  npm

#========================
# Install Google Chrome (Latest Stable Version)
#========================
RUN \
  wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
  echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
  apt-get update -qq && \
  apt-get install -qqy google-chrome-stable

#========================
# Clean up Apt
#========================
RUN \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

#========================
# Setup VNC Server
#========================
RUN \
  mkdir -p ~/.vnc && \
  x11vnc -storepasswd 1234 ~/.vnc/passwd

#========================
# Symlink NodeJS
#========================
RUN ln -s /usr/bin/nodejs /usr/bin/node

#========================
# Install Grunt and Grunt-CLI
#========================
RUN \
  npm install -g grunt && \
  npm install -g grunt-cli

#========================
# Setup Entry Point
#========================
COPY entry_point.sh /opt/bin/entry_point.sh
RUN chmod +x /opt/bin/entry_point.sh
ENTRYPOINT ["/opt/bin/entry_point.sh"]

我认为这是与 karma-firefox-launcher 或 karma 主库相关的问题。如果有人能给我一些指导和想法,那就太好了!

最佳答案

我已经向 karma-firefox-launcher https://github.com/karma-runner/karma-firefox-launcher/pull/45 提交了 PR .

这仅适用于可能陷入此困境的其他人。

Firefox 在 VirtualBox 共享文件夹上存在配置文件文件夹时出现问题,请参阅 https://bugzilla.mozilla.org/show_bug.cgi?id=801274它与 Docker 设置一起使用。技巧是在共享文件夹之外指定配置文件文件夹,如下所示:

在 karma.conf.js 中:

browsers: [ 'FirefoxDocker' ],
browserNoActivityTimeout: 30000, // < might be necessary for slow machines
customLaunchers: {
  FirefoxDocker: {
    base: 'Firefox',
    profile: '/tmp/firefox' // < location is up to you but make sure folder exists
  }
},

请记住更新到版本 v0.1.7 才能使其正常工作。

关于javascript - 在 Docker 中打开 Karma Server URL 后 Firefox 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180405/

相关文章:

docker - 从高可用性角度理解 docker swarm

javascript - 如何使 ViewComponent 与 Importmap-Rails 一起工作?

javascript - 基于条件的 jQuery 可拖动还原

javascript - 一个 href=javascript :function() in firefox not working

jQuery mousemove 性能 - 节流事件?

docker - 如何在Docker中运行Phinx?

gradle - 如何使用bmuschko/gradle-docker-plugin通过Gradle自动将文件复制到IBM Containers中正在运行的docker

javascript - 运行两台服务器时 NodeJS 服务器错误

javascript - NodeJS - Controller 方法不调用

Javascript 浏览器识别