我的自动化测试基于for (int j = 0; j < itemList.size(); j++){
String tempString = itemList.get(j);
if(tempString.equals(selectedItem)) {
itemList.remove(j--);
// ^
// you should minus the current j, if don't the next is skipped
}
}
和Nightwatch-Cucumber
。我创建了一个Dockerfile并将构建的Docker image推送到Docker Cloud。
目前,Nightwatch.js
和Nightwatch-Cucumber
的自动化测试将在无头Nightwatch.js
上创建的Docker镜像/容器中的GitLab CI
上成功执行。因此我创建了Chrome
:
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
报告。
我的第一个想法是创建一个shell脚本来启动容器并在容器中执行测试。但是我没有将测试结果反馈回Cucumber Report Jenkins Plugin
或?
Jenkins CI
的过程与 Selenium 的Java实现不同。所以,这是我第一次使用 Nightwatch.js 。 Nightwatch.js 测试必须在Docker容器中执行,测试结果必须返回 Jenkins CI 。
或者,我可以在我创建的Docker容器中运行Jenkins,但我想将它分开。 Jenkins应该是一个修复实例,只需要在Docker容器上启动测试。
但我怎么能意识到呢?您如何通过我的设置实现它?
答案 0 :(得分:0)
我不完全确定Jenkins CI是如何工作的,但我可以在Jenkins中运行一个docker容器,其入口点为nightwatch
(因此它会运行nightwatch,然后停止容器),并将结果作为输出。只需docker run [containername]
即可。如果你有junit.xml作为输出,你可以使用docker cp [containername]:[absolute_path_to_file_in_container] [destination]
还有Jenkins插件可用于分析该junit文件,该文件可以设置作业状态并发布结果。