selenium - 使用 Jenkins CI 在 Docker 容器中运行自动化 Selenium Nightwatch.js 测试

标签 selenium docker jenkins gitlab-ci nightwatch.js

我的自动化测试基于 Nightwatch-CucumberNightwatch.js .我创建了一个 Dockerfile 并推送构建的 Docker image到 Docker 云。

目前我使用 Nightwatch-Cucumber 进行自动化测试和 Nightwatch.js将在 GitLab CI 上成功执行在 headless Chrome 上创建的 Docker 镜像/容器中.因此我创建了一个 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实例来执行我​​的测试。我想创造两个工作:
  • 在推送到测试项目的master时执行测试(相当于当前的GitLab CI解决方案)
  • 通过手动启动 Jenkins CI 来执行测试
  • 通过 Jenkins CI 上的时间触发器执行测试

  • 如果测试未通过,我希望构建失败并且我想创建一个 Cucumber每次执行后使用 Cucumber Report Jenkins Plugin 报告.

    我的第一个想法是创建一个 shell 脚本来启动容器并在容器中执行测试。但后来我没有得到任何测试结果返回 Jenkins CI或者?
    Nightwatch.js 的程序与 的 Java 实现不同 Selenium .所以,这是我第一次使用 Nightwatch.js . Nightwatch.js 测试必须在 Docker 容器中执行,测试结果必须返回到 Jenkins CI .

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

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

    最佳答案

    我不完全确定 Jenkins CI 是如何工作的,但我可以运行一个 docker 容器,入口点为 nightwatch (所以它运行 nightwatch 然后停止容器)从 Jenkins 中获取结果作为输出。只需docker run [containername]会成功的。如果你有 junit.xml 作为输出,你可以用 docker cp [containername]:[absolute_path_to_file_in_container] [destination] cp 它,甚至从停止的容器中。

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

    关于selenium - 使用 Jenkins CI 在 Docker 容器中运行自动化 Selenium Nightwatch.js 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173095/

    相关文章:

    java - 在不关闭浏览器的情况下关闭 Selenium,同时清理临时文件

    java - 是否可以在一个节点上运行多个 Selenium 测试?

    jenkins - 在 Jenkins 中聚合下游参数化作业的结果

    ios - Jenkins Xcode 构建 alamofire 错误

    jenkins - 如何在不知道名称(或编号)的情况下从共享库中的资源文件夹加载文件?

    selenium - 遇到错误 : java. lang.NoClassDefFoundError: com/google/common/collect/ImmutableList$Builder

    java - 如何在 react-dnd-treeview 库上使用 Selenium 测试拖放

    node.js - 如何阻止来自特定浏览器的流量到我的 docker Web 应用程序?

    docker - 了解 docker - 容器如何包含所有必需的依赖项?

    docker - 带有复制 Controller 的 Kubernetes 卷挂载