尝试设置 Azure Devops 管道以进行测试自动化运行(Java + Maven + Selenium)测试正在 Browserstack 上运行
为了查看浏览器堆栈结果,我向 pipiline YAML 文件添加了两个任务 BrowserStackConfig 和 BrowserStackResults (根据来自BrowserStack的说明)
但是我在 BrowserStackResults 步骤中遇到意外错误:“按名称未找到构建..”
现在我正在尝试获取在 BS 上运行的“旧”自动化结果(将 BROWSERSTACK_BUILD_NAME 设置为现有 BS 结果 = 20220114_666666)
设置: 将 Azure DevOps 与已安装的 Browserstack 扩展一起使用
步骤:
为 YML 添加管道
运行管道
结果:
BS 配置步骤有效
BrowserStackResults 步骤出现意外错误“##[错误]按名称未找到构建:”20220114_666666”错误
以下仅修复BrowserStackConfig任务:
variables:
- name: BROWSERSTACK_BUILD_NAME
value: "test-001"
但不适用于 BrowserStackResults 任务。是否还有另一个环境变量控制后者?或者 browserstack 使用的变量列表?
根据浏览器堆栈 注意:确保使用环境变量
build
在测试脚本中设置 BROWSERSTACK_BUILD_NAME
功能。如果缺少此功能,扩展将无法将测试报告嵌入到您的管道中。
为 BrowserStack Azure DevOps 扩展设置变量
BrowserStack Azure DevOps 扩展默认设置以下环境变量:
BROWSERSTACK_USERNAME
BROWSERSTACK_ACCESS_KEY
BROWSERSTACK_LOCAL
BROWSERSTACK_LOCAL_IDENTIFIER
BROWSERSTACK_BUILD_NAME
创建服务连接时,
BROWSERSTACK_USERNAME
和 BROWSERSTACK_ACCESS_KEY
会在配置步骤中自动添加为变量。
该扩展还添加了
BROWSERSTACK_BUILD_NAME
变量,可为您的测试运行自动生成构建名称。
编辑测试脚本以调用环境变量
编辑测试脚本以添加环境变量以使用以下代码片段设置功能:
String buildName = System.getenv("BROWSERSTACK_BUILD_NAME");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("build", buildName); // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
似乎您需要检查代码是否将
BROWSERSTACK_BUILD_NAME
环境变量值传递给 buildName
并添加到功能中。否则,将不会生成报告
事实上,您的 CI 脚本缺少实际运行测试的必要步骤。这就是为什么 BrowserStack 报告没有使用该名称的构建。
您的工作包括上传应用程序和发布结果,而其间没有执行任何测试。换句话说,您没有启动任何测试,而是要求提供测试结果。
要解决此问题,您应该将负责启动测试的脚本作为“脚本”步骤包含在您的作业中。 (您在终端中使用的脚本与自动化框架启动测试相同)
例如,如果您正在使用 Python、Robot Framework 和 Appium,则可以使用以下命令:
- script: |
browserstack-sdk robot --include Minor Tests/.
displayName: Launching Automated Tests
此外,如果您的代码中没有应用程序的链接,您可以配置BrowserstackAppUploader。通过这种方式,您可以提交并推送您的构建,BS 插件将处理它:
- task: BrowserStackAppUploader@0
inputs:
appPath: '$(Build.SourcesDirectory)/Resources/app/app.apk'
现在,整个管道代码看起来像这样:
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: RunTests
displayName: 'Run Tests on BrowserStack'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.9' # Use the version of Python you need
- script: |
pip install -r requirements.txt
displayName: 'Install Dependencies'
- task: BrowserStackConfig@0
inputs:
BrowserStackServiceEndPoint: 'IDFM BrowserStack Connection'
- task: BrowserStackAppUploader@0
inputs:
appPath: '$(Build.SourcesDirectory)/Resources/app/app.apk'
- script: |
browserstack-sdk robot --include Minor Tests/.
displayName: Launching Automated Tests
- task: BrowserStackResults@1
inputs:
BrowserStackServiceEndPoint: 'IDFM BrowserStack Connection'
- task: BrowserStackAppUploader@0
inputs:
appPath: '$(Build.SourcesDirectory)/Resources/app/app.apk'
- script: |
browserstack-sdk robot --include Minor Tests/.
displayName: Launching Automated Tests
- task: BrowserStackResults@1
inputs:
browserstackProduct: 'App Automate'