验收测试,码头和硒

时间:2017-01-12 09:16:07

标签: selenium docker docker-compose webdriver-io

我正在尝试创建一些旨在构建我的javascript应用程序的容器。

这是我需要做的事情:

  • 安装我的依赖项
  • 开始我的单元测试
  • 构建我的项目
  • 开始我的验收测试

这是我的项目dockerfile:

FROM node:6.9

# Enviroment variables
ENV HOMEDIR /data

RUN mkdir -p ${HOMEDIR}
WORKDIR ${HOMEDIR}

# install all dependencies
ADD package.json ./
RUN npm install

# add node content initially
ADD . .
CMD CI=true npm test && npm run build && npm run test:acceptance

事实是,当我开始验收测试时,我需要使用selenium服务器和phantomjs浏览器。这样,感谢stackoverflow社区,我创建了一个看起来像这样的docker-compose.yml文件:

version: '2'
services:
  hub:
    image: selenium/hub
    ports:
      - "4444:4444"
  phantomjs:
    image: akeem/selenium-node-phantomjs
    depends_on:
      - hub
    links:
      - hub
  app:
    build: .
    depends_on:
      - hub
      - phantomjs

我的selenium-phantomjs很好地连接到我的selenium / hub,而selenium可以在我的主机上的localhost:4444上找到。

我真正的问题是我的实现验收测试的工具(webdriverio)似乎无法联系selenium服务器,我也不知道为什么。

我有以下堆栈:

app_1        | [08:24:07]  COMMAND  POST     "/wd/hub/session"
app_1        | [08:24:07]  DATA     {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":5,"browserName":"phantomjs","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.6.1","name":"webdriverio"}}}
app_1        | ERROR: Couldn't connect to selenium server
app_1        | phantomjs
app_1        | Error: Couldn't connect to selenium server
app_1        |
app_1        | Wrote xunit report to [./xunit].

有什么建议吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果您从另一个容器中运行测试脚本,则wd_host参数需要设置为http://hub:4444/wd/hub,而不是http://localhost:4444/wd/hub(默认值)。

links:字段使hub在主机名hub下可用,而不是localhost到另一个容器。

ports:字段仅用于访问主机上的容器,它不会影响容器本身可以访问的容器。