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" };