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容器所需的各种选项
类型:Object
默认值:{ options: { rm: true } }
示例:
dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}
dockerOptions.image
Docker容器名称标签。可以是本地的或来自Docker HUB的。
类型:String
必需:true
dockerOptions.healthCheck
在启动测试之前检查容器就绪状态的配置。通常这将是一个localhost URL。 如果未配置healthCheck,Webdriver将在Docker容器启动后立即开始运行测试,考虑到Docker容器内启动Web服务需要时间,这可能为时过早。
类型:String|Object
对象使用的选项:
- url - 容器内运行的应用程序的URL
- maxRetries - 健康检查失败前的重试次数。默认值:10
- inspectInterval - 每次重试之间的间隔(毫秒)。默认值:500
- startDelay - 开始健康检查的初始延迟(毫秒)。默认值:0
示例1(字符串):healthCheck: 'http://localhost:4444'
示例2(对象):
healthCheck: {
url: 'http://localhost: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"]
)。
类型:Object
示例:
options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}