Docker 服务
此服务旨在与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。