gpt4 book ai didi

node.js - 通过 Jenkins CI 在 Docker 容器中运行 Selenium 测试的最简单方法

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:53 25 4
gpt4 key购买 nike

我想在 Docker 容器中的 Jenkins CI 上执行用 Nightwatch-Cucumber 编写的自动化测试。我有一个要用于它的 Docker 镜像。

这是我想做的更详细的事情。

  1. 开始测试 Jenkins CI 作业
  2. 在同一台机器上加载 Docker 镜像并启动相关的 Docker 容器。该容器基于 Unix 操作系统。此外,还会执行 Docker 容器中的一些配置。
  3. 测试将通过 xvfb 以 headless 模式执行(从本地或远程),报告将保存在 Jenkins 机器上。

在 GitLab CI 上,我通过 .gitlab-ci.yml 配置文件实现了它,它运行得非常好:

image: "my-docker-image"

stages:
- "chrome-tests"

before_script:
- "apt-get update"
- "apt-get install -y wget bzip2"
- "npm install"

cache:
paths:
- node_modules/
run-tests-on-chrome:
stage: "chrome-tests"
script:
- "whereis xvfb-run"
- "xvfb-run --server-args='-screen 0 1600x1200x24' npm run test-chrome"

但我想用 Jenkins CI 实现相同的过程。最简单的方法是什么,然后在 Jenkins 调用的 Docker 镜像中运行我的自动化测试?我应该写 Dockerfile 还是不写 or or?

最佳答案

我目前正在运行用 PHP 编写的 Selenium 测试脚本,并使用 Docker Compose 通过 Jenkins 运行它们。您也可以这样做,而无需自己处理 Xvfb。

要在 docker 容器内使用 headless 浏览器运行您的 Selenium 测试,并使用 docker-compose 将其链接到您的应用程序,您可以简单地使用预定义的独立服务器。

https://github.com/SeleniumHQ/docker-selenium

我目前使用的是 Chrome 独立版图像。

这是你的 docker-compose 应该看起来的样子:

version: '3'
services:
your-app:
build:
context: .
dockerfile: Dockerfile
your_selenium_application:
build:
context: .
dockerfile: Dockerfile.selenium.test
depends_on:
- chrome-server
- your-app
chrome-server:
image: selenium/standalone-chrome:3.4.0-einsteinium

运行 docker-compose 时,它​​将启动您的应用程序、将与您的应用程序交互的 selenium 环境,以及将为您提供 headless 浏览器的独立服务器。因为它们是链接的,所以在您的 selenium 代码中,您可以通过 your-app:80 向主机发出测试请求。您的 headless 浏览器将是 chrome-server:4444/wd/hub,这是默认地址。

这一切都可以在 Jenkins 内部完成,只需在 Jenkins 作业内的 Execute Shell 中使用一个命令即可。 docker-compose 还允许您在本地计算机上轻松运行测试,结果应该是相同的。

关于node.js - 通过 Jenkins CI 在 Docker 容器中运行 Selenium 测试的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com