跳至主要内容

Browserstack 服务

一个 WebdriverIO 服务,用于管理 BrowserStack 用户的本地隧道和作业元数据。

安装

最简单的方法是将 @wdio/browserstack-service 作为开发依赖项保留在您的 package.json 中,通过

npm install @wdio/browserstack-service --save-dev

有关如何安装 WebdriverIO 的说明,请参见此处

配置

WebdriverIO 原生支持 BrowserStack。您应该在 wdio.conf.js 文件中设置 userkey。此服务插件提供对BrowserStack 隧道的支持。还设置 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 服务,您的配置需要包含userkey 选项。

测试可观察性

测试可观察性是一个高级测试报告工具,它提供见解以改进您的自动化测试,并帮助您更快地调试。它通过为所有 browserstack-service 用户将 testObservability 标志设置为 true 默认启用。您可以通过将 testObservability 标志设置为 false 来禁用它。

测试运行完成后,您可以访问测试可观察性,使用更多见解(如唯一错误分析、自动不稳定测试检测等)调试您的构建。

即使您不在 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 云通过您的计算机路由连接。

类型:布尔值
默认值:false

forcedStop

将其设置为 true 以在完成时终止 BrowserStack Local 进程,而无需等待调用 BrowserStack Local 停止回调。这是实验性的,不应由所有人使用。主要作为对此问题的解决方法。

类型:布尔值
默认值:false

app

Appium 使用本地机器上可用的应用程序文件路径设置此项,以将应用程序用作被测应用程序以进行 Appium 会话。

类型:字符串JsonObject
默认值:未定义

可用应用程序值的列表

path

将本地可用的应用程序文件路径用作 Appium 的被测应用程序。

services: [
['browserstack', {
app: '/path/to/local/app.apk'
// OR
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>'
// OR
app: {
id: 'bs://<app-id>'
}
}]
]

custom_id

使用已上传应用程序的 custom_id

services: [
['browserstack', {
app: 'custom_id'
// OR
app: {
custom_id: 'custom_id'
}
}]
]

shareable_id

使用已上传应用程序的 shareable_id

services: [
['browserstack', {
app: 'username/custom_id'
// OR
app: {
shareable_id: 'username/custom_id'
}
}]
]

preferScenarioName

仅限 Cucumber。如果仅运行单个场景,则将 BrowserStack Automate 会话名称设置为场景名称。在使用wdio-cucumber-parallel-execution并行运行时很有用。

类型:布尔值
默认值:false

sessionNameFormat

自定义 BrowserStack Automate 会话名称格式。

类型:函数
默认值(Cucumber/Jasmine):(config, capabilities, suiteTitle) => suiteTitle
默认值(Mocha):(config, capabilities, suiteTitle, testTitle) => suiteTitle + ' - ' + testTitle

sessionNameOmitTestTitle

仅限 Mocha。不要将测试标题附加到 BrowserStack Automate 会话名称。

类型:布尔值
默认值:false

sessionNamePrependTopLevelSuiteTitle

仅限 Mocha。将顶级套件标题添加到 BrowserStack Automate 会话名称之前。

类型:布尔值
默认值:false

setSessionName

自动设置 BrowserStack Automate 会话名称。

类型:布尔值
默认值:true

setSessionStatus

自动设置 BrowserStack Automate 会话状态(通过/失败)。

类型:布尔值
默认值:true

buildIdentifier

buildIdentifier 是一个唯一 ID,用于区分每个执行,并将其附加到 buildName。从可用表达式中选择您的 buildIdentifier 格式

  • BUILD_NUMBER:为每个执行生成一个递增计数器
  • DATE_TIME:为每个执行生成一个时间戳。例如,05-Nov-19:30
services: [
['browserstack', {
buildIdentifier: '#${BUILD_NUMBER}'
}]
]

构建标识符支持使用任一或两个表达式以及任何其他字符,从而启用自定义格式选项。

opts

BrowserStack 本地选项。

类型:对象
默认值:{}

要作为 opts 传递的可用本地测试修饰符列表

本地标识符

如果进行多个同步本地测试连接,则为不同的进程唯一设置此项 -

opts = { localIdentifier: "randomstring" };

详细日志记录

要启用详细日志记录 -

opts = { verbose: "true" };

注意 - 'verbose' 修饰符的可能值为 '1'、'2'、'3' 和 'true'

强制本地

要将所有流量通过本地(您的)机器路由 -

opts = { forceLocal: "true" };

文件夹测试

要测试本地文件夹而不是内部服务器,请将文件夹路径作为此选项的值提供 -

opts = { f: "/my/awesome/folder" };

强制启动

要终止其他正在运行的 BrowserStack Local 实例 -

opts = { force: "true" };

仅自动化

要禁用实时和屏幕截图的本地测试,并仅启用自动化 -

opts = { onlyAutomate: "true" };

代理

要使用代理进行本地测试 -

  • proxyHost:代理的主机名/IP,如果缺少此选项,则忽略其余的代理选项
  • proxyPort:代理的端口,当使用 -proxyHost 时默认为 3128
  • proxyUser:连接到代理的用户名(仅限基本身份验证)
  • proxyPass:USERNAME 的密码,如果 USERNAME 为空或未指定,则将被忽略
opts = {
proxyHost: "127.0.0.1",
proxyPort: "8000",
proxyUser: "user",
proxyPass: "password",
};

本地代理

要使用本地代理进行本地测试 -

  • localProxyHost:代理的主机名/IP,如果缺少此选项,则忽略其余的代理选项
  • localProxyPort:代理的端口,当使用 -localProxyHost 时默认为 8081
  • localProxyUser:连接到代理的用户名(仅限基本身份验证)
  • localProxyPass:USERNAME 的密码,如果 USERNAME 为空或未指定,则将被忽略
opts = {
localProxyHost: "127.0.0.1",
localProxyPort: "8000",
localProxyUser: "user",
localProxyPass: "password",
};

PAC(代理自动配置)

要使用 PAC(代理自动配置)进行本地测试 -

  • pac-file:PAC(代理自动配置)文件的绝对路径
opts = { "pac-file": "<pac_file_abs_path>" };

二进制路径

默认情况下,BrowserStack 本地包装器会尝试下载并执行最新版本的 BrowserStack 二进制文件到 ~/.browserstack 或当前工作目录或 tmp 文件夹(按顺序)。但是,您可以通过传递 -binarypath 参数来覆盖这些设置。要指定的本地二进制文件路径 -

opts = { binarypath: "/path/to/binary" };

日志文件

要使用 '-v' 参数运行时将日志保存到文件,您可以指定文件路径。默认情况下,日志保存在当前工作目录中的 local.log 文件中。要指定保存日志的文件路径 -

opts = { verbose: "true", logFile: "./local.log" };

有关 WebdriverIO 的更多信息,请参阅主页

欢迎!我如何帮助您?

WebdriverIO AI Copilot