使用云服务
在WebdriverIO中使用按需服务,如Sauce Labs、Browserstack、TestingBot、LambdaTest或Perfecto非常简单。您只需要在配置选项中设置您的服务的user
和key
。
另外,您还可以通过设置特定云服务的能力(capabilities)如build
来参数化您的测试。如果您只想在Travis中运行云服务,可以使用CI
环境变量来检查是否在Travis环境中,并相应地修改配置。
// wdio.conf.js
export let config = {...}
if (process.env.CI) {
config.user = process.env.SAUCE_USERNAME
config.key = process.env.SAUCE_ACCESS_KEY
}
Sauce Labs
您可以设置测试在Sauce Labs远程运行。
唯一的要求是在您的配置中设置user
和key
(可以通过wdio.conf.js
导出或传入webdriverio.remote(...)
)为您的Sauce Labs用户名和访问密钥。
您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的测试配置选项。
Sauce Connect
如果您想对互联网无法访问的服务器(如localhost
)运行测试,那么您需要使用Sauce Connect。
WebdriverIO的范围不包括支持这一功能,所以您必须自己启动它。
如果您使用WDIO测试运行器,请在您的wdio.conf.js
中下载并配置@wdio/sauce-service
。它有助于运行Sauce Connect,并带有其他功能,可以更好地将您的测试集成到Sauce服务中。
与Travis CI集成
不过,Travis CI确实支持在每次测试前启动Sauce Connect,所以按照他们的指示操作是一个选择。
如果这样做,您必须在每个浏览器的capabilities
中设置tunnel-identifier
测试配置选项。Travis默认将其设置为TRAVIS_JOB_NUMBER
环境变量。
此外,如果您希望Sauce Labs按构建号对测试进行分组,可以将build
设置为TRAVIS_BUILD_NUMBER
。
最后,如果您设置了name
,这将更改此构建在Sauce Labs中的测试名称。如果您使用WDIO测试运行器结合@wdio/sauce-service
,WebdriverIO会自动为测试设置一个合适的名称。
capabilities
示例:
browserName: 'chrome',
version: '27.0',
platform: 'XP',
'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER,
name: 'integration',
build: process.env.TRAVIS_BUILD_NUMBER
超时
由于您是远程运行测试,可能需要增加一些超时时间。
您可以通过传递idle-timeout
作为测试配置选项来更改空闲超时。这控制了Sauce在命令之间等待多长时间后关闭连接。
BrowserStack
WebdriverIO还内置了Browserstack集成。
唯一的要求是在您的配置中设置user
和key
(可以通过wdio.conf.js
导出或传入webdriverio.remote(...)
)为您的Browserstack自动化用户名和访问密钥。
您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的支持的功能。如果您将browserstack.debug
设置为true
,它将记录会话的屏幕录像,这可能会有所帮助。
本地测试
如果您想对互联网无法访问的服务器(如localhost
)运行测试,那么您需要使用本地测试。
WebdriverIO的范围不包括支持这一功能,所以您必须自己启动它。
如果您使用本地测试,应该在您的capabilities中将browserstack.local
设置为true
。
如果您使用WDIO测试运行器,请在您的wdio.conf.js
中下载并配置@wdio/browserstack-service
。它有助于运行BrowserStack,并带有其他功能,可以更好地将您的测试集成到BrowserStack服务中。
与Travis CI集成
如果您想在Travis中添加本地测试,您必须自己启动它。
以下脚本将下载并在后台启动它。您应该在开始测试之前在Travis中运行这个脚本。
wget https://www.browserstack.com/browserstack-local/BrowserStackLocal-linux-x64.zip
unzip BrowserStackLocal-linux-x64.zip
./BrowserStackLocal -v -onlyAutomate -forcelocal $BROWSERSTACK_ACCESS_KEY &
sleep 3
此外,您可能希望将build
设置为Travis构建号。
capabilities
示例:
browserName: 'chrome',
project: 'myApp',
version: '44.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'browserstack.local': 'true',
'browserstack.debug': 'true'
TestingBot
唯一的要求是在您的配置中设置user
和key
(可以通过wdio.conf.js
导出或传入webdriverio.remote(...)
)为您的TestingBot用户名和密钥。
您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的支持的功能。
本地测试
如果您想对互联网无法访问的服务器(如localhost
)运行测试,那么您需要使用本地测试。TestingBot提供基于Java的隧道,允许您测试互联网无法访问的网站。
他们的隧道支持页面包含了使其启动和运行所需的信息。
如果您使用WDIO测试运行器,请在您的wdio.conf.js
中下载并配置@wdio/testingbot-service
。它有助于运行TestingBot,并带有其他功能,可以更好地将您的测试集成到TestingBot服务中。
LambdaTest
LambdaTest集成也是内置的。
唯一的要求是在您的配置中设置user
和key
(可以通过wdio.conf.js
导出或传入webdriverio.remote(...)
)为您的LambdaTest账户用户名和访问密钥。
您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的支持的功能。如果您将visual
设置为true
,它将记录会话的屏幕录像,这可能会有所帮助。
本地测试隧道
如果您想对互联网无法访问的服务器(如localhost
)运行测试,那么您需要使用本地测试。
WebdriverIO的范围不包括支持这一功能,所以您必须自己启动它。
如果您使用本地测试,应该在您的capabilities中将tunnel
设置为true
。
如果您使用WDIO测试运行器,请在您的wdio.conf.js
中下载并配置wdio-lambdatest-service
。它有助于运行LambdaTest,并带有其他功能,可以更好地将您的测试集成到LambdaTest服务中。