Browserstack 服务
一个为 BrowserStack 用户管理本地隧道和任务元数据的 WebdriverIO 服务。
安装
保持 @wdio/browserstack-service
作为 package.json
中的开发依赖是最简单的方法,通过:
npm install @wdio/browserstack-service --save-dev
关于如何安装 WebdriverIO
的说明可以在这里找到。
配置
WebdriverIO 内置了对 BrowserStack 的支持。你应该在 wdio.conf.js
文件中设置 user
和 key
。这个服务插件提供对 BrowserStack Tunnel 的支持。还要设置 browserstackLocal: true
来激活此功能。
BrowserStack 上的会话状态报告将遵循 Cucumber 选项的 strict
设置。
// wdio.conf.js
export const config = {
// ...
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
services: [
['browserstack', {
testObservability: true,
testObservabilityOptions: {
projectName: "Your project name goes here",
buildName: "The static build job name goes here e.g. Nightly regression"
},
browserstackLocal: true
}]
],
// ...
};
选项
为了授权 BrowserStack 服务,你的配置需要包含 user
和 key
选项。
testObservability
测试可观察性是一个高级测试报告工具,可提供改进自动化测试的洞察力,并帮助你更快地调试。对于所有 browserstack-service 用户,通过将 testObservability
标志设置为 true
默认启用。你可以通过将 testObservability
标志设置为 false
来禁用它。
测试完成后,你可以访问 Test Observability 来调试你的构建,获取额外的洞察力,如唯一错误分析、自动检测不稳定测试等。
即使你不在 BrowserStack 基础设施上运行测试,也可以使用测试可观察性。即使你在 CI、本地机器或其他云服务提供商上运行测试,测试可观察性仍然可以为你的测试生成智能测试报告和高级分析。
如果你想在不在 BrowserStack 基础设施上运行测试的情况下使用测试可观察性,可以按如下设置配置:
// wdio.conf.js
export const config = {
// ...
services: [
['browserstack', {
testObservability: true,
testObservabilityOptions: {
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
projectName: "Your project name goes here",
buildName: "The static build job name goes here e.g. Nightly regression"
}
}]
],
// ...
};
你可以在这个沙盒中探索测试可观察性的所有功能,或者在这里了解更多相关信息。
browserstackLocal
设置为 true 以启用通过你的计算机路由来自 BrowserStack 云的连接。
类型:Boolean
默认值:false
forcedStop
设置为 true 以在完成时强制终止 BrowserStack Local 进程,而不等待 BrowserStack Local 停止回调被调用。这是实验性的,不应该被所有人使用。主要是作为此问题的解决方案。
类型:Boolean
默认值:false
app
Appium 设置本地机器上可用的应用程序文件路径,以将应用程序用作 Appium 会话的测试应用程序。
类型:String
或 JsonObject
默认值:undefined
可用的应用值列表:
path
使用本地可用的应用程序文件路径作为 Appium 的测试应用程序。
services: [
['browserstack', {
app: '/path/to/local/app.apk'
// 或
app: {
path: '/path/to/local/app.apk'
}
}]
]
在上传应用时传递 custom_id。
services: [
['browserstack', {
app: {
path: '/path/to/local/app.apk',
custom_id: 'custom_id'
}
}]
]
id
使用上传应用到 BrowserStack 后返回的应用 URL。
services: [
['browserstack', {
app: 'bs://<app-id>'
// 或
app: {
id: 'bs://<app-id>'
}
}]
]
custom_id
使用已上传应用的 custom_id
services: [
['browserstack', {
app: 'custom_id'
// 或
app: {
custom_id: 'custom_id'
}
}]
]
shareable_id
使用已上传应用的 shareable_id
services: [
['browserstack', {
app: 'username/custom_id'
// 或
app: {
shareable_id: 'username/custom_id'
}
}]
]
preferScenarioName
仅限 Cucumber。如果只运行单个场景,则将 BrowserStack Automate 会话名称设置为场景名称。 在与 wdio-cucumber-parallel-execution 并行运行时很有用。
类型:Boolean
默认值:false
sessionNameFormat
自定义 BrowserStack Automate 会话名称格式。
类型:Function
默认值 (Cucumber/Jasmine):(config, capabilities, suiteTitle) => suiteTitle
默认值 (Mocha):(config, capabilities, suiteTitle, testTitle) => suiteTitle + ' - ' + testTitle
sessionNameOmitTestTitle
仅限 Mocha。不要在 BrowserStack Automate 会话名称中附加测试标题。
类型:Boolean
默认值:false
sessionNamePrependTopLevelSuiteTitle
仅限 Mocha。在 BrowserStack Automate 会话名称前加上顶级套件标题。
类型:Boolean
默认值:false
setSessionName
自动设置 BrowserStack Automate 会话名称。
类型:Boolean
默认值:true
setSessionStatus
自动设置 BrowserStack Automate 会话状态(通过/失败)。
类型:Boolean
默认值:true
buildIdentifier
buildIdentifier 是一个唯一的 ID,用于区分每次执行,它会附加到 buildName。从可用表达式中选择你的 buildIdentifier 格式:
BUILD_NUMBER
:每次执行生成一个递增计数器DATE_TIME
:每次执行生成一个时间戳。例如 05-Nov-19:30
services: [
['browserstack', {
buildIdentifier: '#${BUILD_NUMBER}'
}]
]
Build Identifier 支持使用一个或两个表达式,以及任何其他字符,启用自定义格式选项。
opts
BrowserStack Local 选项。
类型:Object
默认值:{}
可以作为 opts 传递的可用本地测试修饰符列表:
Local Identifier
如果同时进行多个本地测试连接,为不同的进程唯一设置此值 -
opts = { localIdentifier: "randomstring" };
详细日志记录
启用详细日志记录 -
opts = { verbose: "true" };
注意 - 'verbose' 修饰符的可能值为 '1', '2', '3' 和 'true'
Force Local
通过本地(你的)机器路由所有流量 -
opts = { forceLocal: "true" };
Folder Testing
要测试本地文件夹而不是内部服务器,提供此选项的值为文件夹路径 -
opts = { f: "/my/awesome/folder" };
Force Start
杀死其他正在运行的 BrowserStack Local 实例 -
opts = { force: "true" };
Only Automate
禁用 Live 和 Screenshots 的本地测试,只启用 Automate -
opts = { onlyAutomate: "true" };
Proxy
使用代理进行本地测试 -
- proxyHost:代理的主机名/IP,如果此选项不存在,则忽略其余代理选项
- proxyPort:代理的端口,当使用 -proxyHost 时默认为 3128
- proxyUser:连接到代理的用户名(仅基本身份验证)
- proxyPass:USERNAME 的密码,如果 USERNAME 为空或未指定,将被忽略
opts = {
proxyHost: "127.0.0.1",
proxyPort: "8000",
proxyUser: "user",
proxyPass: "password",
};
Local Proxy
在本地测试中使用本地代理 -
- localProxyHost:代理的主机名/IP,如果此选项不存在,则忽略其余代理选项
- localProxyPort:代理的端口,当使用 -localProxyHost 时默认为 8081
- localProxyUser:连接到代理的用户名(仅基本身份验证)
- localProxyPass:USERNAME 的密码,如果 USERNAME 为空或未指定,将被忽略
opts = {
localProxyHost: "127.0.0.1",
localProxyPort: "8000",
localProxyUser: "user",
localProxyPass: "password",
};
PAC (Proxy Auto-Configuration)
在本地测试中使用 PAC(代理自动配置)-
- pac-file:PAC(代理自动配置)文件的绝对路径
opts = { "pac-file": "<pac_file_abs_path>" };
Binary Path
默认情况下,BrowserStack 本地封装器尝试按顺序下载并执行最新版本的 BrowserStack 二进制文件,保存在 ~/.browserstack 或当前工作目录或 tmp 文件夹中。但你可以通过传递 -binarypath 参数来覆盖这些。 指定本地二进制路径的路径 -
opts = { binarypath: "/path/to/binary" };
Logfile
要在运行时使用 '-v' 参数将日志保存到文件,你可以指定文件的路径。默认情况下,日志保存在当前工作目录中的 local.log 文件中。 指定将保存日志的文件路径 -
opts = { verbose: "true", logFile: "./local.log" };
有关 WebdriverIO 的更多信息,请参阅主页。