我正在尝试使用我的节点应用程序进行一些webdriver.io测试,这是一个docker镜像.
所以我到目前为止所做的是:
1)通过在我的ubuntu服务器上运行来获取selenium服务器:
$docker run -p 4444:4444 selenium/standalone-chrome
这给了我正在运行的容器’ubuntu_selenium_1′($docker ps)
2)构建节点应用程序docker镜像,在后台运行节点应用程序并运行e2e.js测试文件
在我的gitlab-ci.yml中我正在做
- docker build -t core:test -f Dockerfile.testing . - docker run --rm core:test
那么我做错了什么?有一个正在运行的selenium服务器,有一个在后台加载的节点应用程序,并启动了e2e.js测试文件.
我错过了nodeJS app,webdriver和selenium的连接……
Dockerfile.testing
FROM core:latest # Copy the test files COPY docker-entrypoint.sh / COPY e2e.js / # Get npm packages AND install test framework - mocha and webdriver RUN (cd programs/server && npm install --silent) RUN npm install -g mocha --silent RUN npm install chai webdriverio --silent RUN chmod +x /docker-entrypoint.sh # Run application and then e2e test ENTRYPOINT ["/docker-entrypoint.sh"]
docker-entrypoint.sh
#!/bin/bash node main.js & node e2e.js
也许这个入口点脚本错了?
e2e.js
var webdriverio = require('webdriverio'),options = { desiredCapabilities: { browserName: 'firefox' } } webdriverio .remote(options) .init() .url('http://localhost') // Which port do I have to use?? .getTitle().then(function(title) { console.log('Title was: ' + title) }) .end()
解决方法
我做了你需要的,但我把应用程序分离到了自己的容器中.
你可以自己尝试一下我的例子:https://github.com/xbx/webdriverio-docker-example
这里有变化:
首先,在webdriverio实例中添加一个catch():
webdriverio .remote(options) .init() .url('http://app:3000') .getTitle().then(function(title) { console.log('Title was: ' + title) }) .catch(function(e){ console.log('Error!') console.log(e) }) .end()
其次,使用chrome作为browserName(必须是,因为你使用的是selenium-chromium):
desiredCapabilities: { browserName: 'chrome' }
第三,正确指向您的应用:
.url('http://app:3000')
了解容器的排列方式:
version: "3" services: selenium: image: selenium/standalone-chrome ports: - 4444:4444 links: - app app: build: . ports: - 3000:3000 testing: build: context: . dockerfile: Dockerfile.testing command: /wait-for-it.sh selenium:4444 -- /wait-for-it.sh app:3000 -- node /e2e.js links: - app - selenium volumes: - ./wait-for-it.sh:/wait-for-it.sh
运行它:docker-compose up –build
Attaching to question_app_1,question_selenium_1,question_testing_1 app_1 | Started app. selenium_1 | 12:19:45.516 INFO - Selenium build info: version: '3.4.0',revision: 'unknown' ... selenium_1 | 12:19:45.769 INFO - Selenium Server is up and running testing_1 | Starting testing. selenium_1 | 12:19:47.827 INFO - Executing: [get: http://app:3000]) app_1 | Hit! selenium_1 | 12:19:48.210 INFO - Done: [get: http://app:3000] selenium_1 | 12:19:48.220 INFO - Executing: [get title]) selenium_1 | 12:19:48.239 INFO - Done: [get title] testing_1 | Title was: Hi,this is the title
编辑:docker-compose版本1的简单更改:
testing: build:. dockerfile: Dockerfile.testing ...... ......