【发布时间】:2017-07-18 17:06:20
【问题描述】:
我的自动化测试基于Nightwatch-Cucumber 和Nightwatch.js。我创建了一个 Dockerfile 并将构建的 Docker image 推送到 Docker Cloud。
目前我使用Nightwatch-Cucumber 和Nightwatch.js 的自动化测试将在我创建的无头Chrome 上的Docker 映像/容器中通过GitLab CI 成功执行。因此我创建了一个gitlab-ci.yml:
image: "grme/nightwatch-chrome-firefox:0.0.1"
stages:
- "chrome-tests"
before_script:
- "npm install"
- "npm install -y nightwatch-cucumber@7.1.10"
- "npm install -y chromedriver@2.30.1"
- "npm install -y geckodriver@1.7.1"
- "npm install -y cucumber-html-reporter@2.0.3"
- "npm install -y multiple-cucumber-html-reporter@0.2.0"
cache:
paths:
- node_modules/
run-tests-on-chrome:
stage: "chrome-tests"
script:
- "xvfb-run --server-args='-screen 0 1600x1200x24' npm run test-chrome"
only:
- "master@xxx/e2e-web-tests"
现在我想将此测试执行移植到Jenkins CI。所以,我想以与GitLab CI 相同的方式执行我的测试。
起初我想使用本地Jenkins CI 实例来执行我的测试。我想创建两个工作:
- 在推送到主测试项目时执行测试(相当于当前的
GitLab CI解决方案) - 通过手动启动
Jenkins CI来执行测试 - 通过
Jenkins CI上的时间触发器执行测试
如果测试未通过,我希望构建失败,并且我想在每次执行后使用Cucumber Report Jenkins Plugin 创建一个Cucumber 报告。
我的第一个想法是创建一个 shell 脚本来启动容器并在容器中执行测试。但后来我没有得到任何测试结果返回Jenkins CI 还是?
Nightwatch.js 的过程与 Selenium 的 Java 实现不同。所以,这是我第一次使用 Nightwatch.js。 Nightwatch.js 测试必须在 Docker 容器中执行,并且测试结果必须返回给 Jenkins CI。
或者,我可以在我创建的 Docker 容器中运行 Jenkins,但我想将它分开。 Jenkins 应该是一个修复实例,只需要在 Docker 容器上启动测试。
但是我怎么能意识到呢?您如何通过我的设置实现它?
【问题讨论】:
-
嗨,马丁,我玩过你的 docker 镜像 grme/nightwatch-chrome-firefox:0.0.1,我很想看看这个版本的 docker 文件的内容,可以请与我们分享。谢谢!
标签: selenium docker jenkins gitlab-ci nightwatch.js