跳至主要内容

Docker 服务

wdio-docker-service 是一个第三方软件包,更多信息请参见GitHub | npm

此服务旨在与WebdriverIO一起使用,它有助于针对/使用容器化应用程序运行功能/集成测试。它使用流行的Docker服务(单独安装)来运行容器。

为什么要使用它?

理想情况下,您的测试将在某种 CI/CD 管道中运行,在这些管道中通常没有“真实”浏览器和其他您的应用程序依赖的资源。随着 Docker 的出现,实际上所有必要的应用程序依赖项都可以容器化。使用此服务,您可以在您的 CI 中并完全隔离地运行您的应用程序容器或docker-selenium(假设 CI 可以将 Docker 安装为依赖项)。如果您的应用程序需要一定程度地与您的主要操作系统隔离,则相同的方法也适用于本地开发。

工作原理

服务将运行一个现有的 Docker 镜像,一旦它准备就绪,将启动 WebdriverIO 测试,这些测试应该针对您的容器化应用程序运行。

安装

运行

npm install wdio-docker-service --save-dev

有关如何安装 WebdriverIO 的说明,请参见此处

配置

默认情况下,在主机系统上安装时,Google Chrome、Firefox 和 PhantomJS 可用。为了使用该服务,您需要将docker添加到您的服务数组中

// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};

选项

dockerOptions

运行 Docker 容器所需的各种选项

类型:对象

默认值:{ options: { rm: true } }

示例

dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'https://127.0.0.1:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}

dockerOptions.image

Docker 容器名称标签。可以是本地的或来自 Docker HUB 的。

类型:字符串

必需:true

dockerOptions.healthCheck

在启动测试之前检查容器就绪状态的配置。通常这将是本地主机 URL。如果未配置 healthCheck,Webdriver 将在 Docker 容器启动后立即开始运行测试,考虑到 Web 服务需要时间在 Docker 容器内启动,这可能为时过早。

类型:字符串|对象

对象使用的选项

  • url - 容器内运行的应用程序的 URL
  • maxRetries - healthcheck 失败之前的重试次数。默认值:10
  • inspectInterval - 每次重试之间的间隔(毫秒)。默认值:500
  • startDelay - 开始 healthcheck 的初始延迟(毫秒)。默认值:0

示例 1(字符串):healthCheck: 'https://127.0.0.1:4444'

示例 2(对象)

healthCheck: {
url: 'https://127.0.0.1:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}

dockerOptions.options

docker run命令使用的选项映射。有关run命令的更多详细信息,请点击此处

任何单字母选项都将转换为-[option](即d: true -> -d)。

任何两个字符或更多字符的选项都将转换为--[option](即rm: true -> --rm)。

对于可以多次使用的选项(即-e-add-host--expose等),请使用数组表示法(即e: ["NODE_ENV=development", "FOO=bar"])。

类型:对象

示例

options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}

dockerOptions.args

您可能希望传递到容器的任何参数。对应于 Docker run CLI 中的[ARG...]

类型:字符串

dockerOptions.command

您可能希望传递到容器的任何命令。对应于 Docker run CLI 中的[COMMAND]

类型:字符串

onDockerReady

Docker 应用程序准备就绪时调用的回调方法。就绪状态由能够 ping healthCheck URL 确定。

类型:函数

dockerLogs

Docker 容器日志应存储到的路径

类型:字符串

测试用例/食谱

有关更多详细信息,请访问我们的Wiki

欢迎!我如何提供帮助?

WebdriverIO AI Copilot