使用Jenkins CI在Docker Container中运行自动Selenium Nightwatch.js测试

时间:2017-07-18 17:06:20

标签: selenium docker jenkins gitlab-ci nightwatch.js

我的自动化测试基于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.jsNightwatch-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实例来执行我​​的测试。我想创造两个职位:

  1. 执行测试项目推送到主控的测试(相当于当前的Jenkins CI解决方案)
  2. 通过GitLab CI
  3. 手动启动来执行测试
  4. 通过Jenkins CI
  5. 上的时间触发器执行测试

    如果未通过测试,我希望构建失败,并且我希望在每次执行Jenkins CI后创建Cucumber报告。

    我的第一个想法是创建一个shell脚本来启动容器并在容器中执行测试。但是我没有将测试结果反馈回Cucumber Report Jenkins Plugin或?

    Jenkins CI的过程与 Selenium 的Java实现不同。所以,这是我第一次使用 Nightwatch.js Nightwatch.js 测试必须在Docker容器中执行,测试结果必须返回 Jenkins CI

    或者,我可以在我创建的Docker容器中运行Jenkins,但我想将它分开。 Jenkins应该是一个修复实例,只需要在Docker容器上启动测试。

    但我怎么能意识到呢?您如何通过我的设置实现它?

1 个答案:

答案 0 :(得分:0)

我不完全确定Jenkins CI是如何工作的,但我可以在Jenkins中运行一个docker容器,其入口点为nightwatch(因此它会运行nightwatch,然后停止容器),并将结果作为输出。只需docker run [containername]即可。如果你有junit.xml作为输出,你可以使用docker cp [containername]:[absolute_path_to_file_in_container] [destination]

来cp,甚至来自已停止的容器

还有Jenkins插件可用于分析该junit文件,该文件可以设置作业状态并发布结果。