Skip to main content
No Result Found
Get your setup working faster. Join our Discord for optimisation tips from elite testers. Join our DiscordJoin our Discord

View build reports in Azure Pipelines

Embed your Test Reporting & Analytics build report in the Azure Pipelines run summary using the BrowserStack Azure DevOps extension.

Azure Pipelines is a continuous integration tool that builds, tests, and deploys your code on every change. The BrowserStack Azure DevOps extension embeds your Test Reporting & Analytics build report into the Azure Pipelines run summary, so you can review pass and fail counts, failure categories, and test-level detail without leaving Azure DevOps.

The information in this section applies to using the BrowserStack plugin with Azure Pipelines as part of the Azure DevOps Services (cloud) offering only.

In this guide, you’ll learn how to:

Prerequisites

Before you start, ensure that:

Install the BrowserStack Azure DevOps extension

The BrowserStack Azure DevOps extension streamlines configuring Azure Pipelines to run tests on BrowserStack and to publish reports back to the pipeline. To install the extension, follow these steps:

  1. In the Visual Studio Marketplace, click Azure DevOps.
  2. Search for BrowserStack Azure DevOps Extension.
  3. In the BrowserStack Azure DevOps Extension page, click Get it Free. The Sign in page opens.
  4. Sign in to your Azure account, click Select an Azure DevOps organization and select your organization.
  5. Click Install to add the extension.

BrowserStack’s extension is now installed in your Azure DevOps organization and the BrowserStack Config, BrowserStackResults, and BrowserStackStopLocal tasks are added to the list of available tasks in your pipeline.

Configure BrowserStack in Azure Pipelines

For your tests to run on BrowserStack and report to Test Reporting & Analytics, the Azure pipeline needs additional information, such as your BrowserStack credentials. You supply the credentials through a BrowserStack service connection and the BrowserStack Config task.

You can create a pipeline using either a YAML editor or a classic editor. Depending on the editor you used to create the pipeline, refer to the steps in the following tabs:

  1. Open the Azure portal page and click My Azure DevOps Organizations.

  2. In the Azure DevOps Organizations page, click the project where you’ve created a pipeline for your project’s repository from the list of projects that appear.

  3. Click Project settings located at the bottom-left corner of your project’s page.

  4. In the Project details page, click Service connections > Create service connection.

  5. In the New service connection section, select BrowserStack from the given list, and click Next.
    The New service connection list in Azure DevOps with BrowserStack selected

  6. In the New BrowserStack service connection section, enter your BrowserStack username in the Username field, and then enter your access key in the AccessKey field.

  7. Click Verify to verify your BrowserStack credentials.

  8. After verification succeeds, enter a service connection name in the Service connection name field, such as browserstack-connection, and then click Verify and save. BrowserStack adds the service connection and you’re redirected to the Service connections page.
    The New BrowserStack service connection form with the username, access key, and service connection name filled in

  9. Click the The Pipelines icon in the Azure DevOps sidebar (Pipelines) icon.

  10. In the Pipelines page, select your pipeline.

  11. Click Edit to edit the pipeline.

  12. In the pipeline editor, from the Tasks pane, search for the BrowserStack Config task, and then select it.
    The Tasks pane in the Azure Pipelines YAML editor with the BrowserStack Config task selected

  13. In the BrowserStack Config section, select the connection you created in Step 8 from BrowserStack service end point.

  14. Click Add, and then click Save to commit the change.

The BrowserStack Config task is added to your azure-pipelines.yml file as the first step of the job:

   - task: BrowserStackConfig@0
     inputs:
       browserstackServiceEndPoint: 'browserstack-connection'

Set the build capability in your test script using the BROWSERSTACK_BUILD_NAME environment variable. The extension can’t match your pipeline run to a Test Reporting & Analytics build, and the report fails to embed, if this capability is missing. For details, see Edit your test script to call environment variables.

  1. Open the Azure portal page and click My Azure DevOps Organizations.

  2. In the Azure DevOps Organizations page, select the project from the given list.

  3. In the project’s page, click the The Pipelines icon in the Azure DevOps sidebar Pipelines option.

  4. In the Pipelines page, click to select your pipeline.

  5. In the pipeline’s page, click Edit to edit your pipeline.

  6. In the Tasks tab, click the Add (+) icon next to the Agent job 1 card.

  7. In the Add tasks pane, select the BrowserStack Config task from the tasks list, and click Add.

  8. Click the BrowserStack configuration setup card and click + New.

  9. Create a new service connection using the following steps in the New service connection screen:
    a. Enter your BrowserStack username.
    b. Enter your BrowserStack access key.
    c. Click Verify.
    d. After verification succeeds, enter a name for the service connection.
    e. Click Verify and save.
    The New BrowserStack service connection screen in the Azure Pipelines classic editor with credentials verified

  10. Drag the BrowserStack configuration setup card so that it’s the first task in Agent job 1, before the task that runs your tests.

  11. Click Save & queue and select Save to save the changes.

Set the build capability in your test script using the BROWSERSTACK_BUILD_NAME environment variable. The extension can’t match your pipeline run to a Test Reporting & Analytics build, and the report fails to embed, if this capability is missing. For details, see Edit your test script to call environment variables.

Your build pipeline is successfully configured to connect with the BrowserStack cloud for your project.

The BrowserStack Config task sets the BROWSERSTACK_BUILD_NAME environment variable, and the BrowserStack Results task uses that value to find the matching build in Test Reporting & Analytics. If your test script sets a different build name, the report can’t be matched to a build.

Configure BrowserStack Local in Azure Pipelines

Use BrowserStack Local Testing to test your web applications hosted on private, development, and internal servers. With the BrowserStack Local Testing binary, you can create a secure, private connection between the BrowserStack Selenium Grid and your internal servers.

If your application is publicly accessible, skip this section and go to Embed the build report in Azure Pipelines.

Configuring BrowserStack Local involves:

Set variables for BrowserStack Azure DevOps extension

The BrowserStack Azure DevOps extension, by default, sets the following environment variables:

BROWSERSTACK_USERNAME
BROWSERSTACK_ACCESS_KEY
BROWSERSTACK_LOCAL
BROWSERSTACK_LOCAL_IDENTIFIER
BROWSERSTACK_BUILD_NAME

When you create a service connection, the BROWSERSTACK_USERNAME and the BROWSERSTACK_ACCESS_KEY are automatically added as variables during the configuration step.

In addition, when you add the BrowserStack Config task in your pipeline, the BROWSERSTACK_LOCAL and BROWSERSTACK_LOCAL_IDENTIFIER environment variables are set automatically by the extension.

The extension also adds the BROWSERSTACK_BUILD_NAME variable that autogenerates a build name for your test runs. The BrowserStack Results task uses this build name to fetch the matching Test Reporting & Analytics build.

Edit your test script to call environment variables

Edit your test script to add the environment variables for setting capabilities using the following code snippets:

browserstack.yml
Copy icon Copy

Ensure to pass the browserstackLocal and localIdentifier capabilities to run tests on your local development servers.

String username = System.getenv("BROWSERSTACK_USERNAME");
String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
String buildName = System.getenv("BROWSERSTACK_BUILD_NAME");
String local = System.getenv("BROWSERSTACK_LOCAL");
String Localidentifier = System.getenv("BROWSERSTACK_LOCAL_IDENTIFIER");

MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("browserVersion", "100.0");
HashMap<String, Object> browserstackOptions = new HashMap<String, Object>();
browserstackOptions.put("os", "Windows");
browserstackOptions.put("osVersion", "10");
browserstackOptions.put("sessionName", "BStack Build Name: " + buildName); // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
browserstackOptions.put("local", local);
browserstackOptions.put("localIdentifier", localIdentifier);
browserstackOptions.put("seleniumVersion", "4.0.0");
capabilities.setCapability("bstack:options", browserstackOptions);

WebDriver driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@hub.browserstack.com/wd/hub"), capabilities);
username = process.env.BROWSERSTACK_USERNAME
accessKey = process.env.BROWSERSTACK_ACCESS_KEY
buildName = process.env.BROWSERSTACK_BUILD_NAME
local = process.env.BROWSERSTACK_LOCAL
localIdentifier = process.env.BROWSERSTACK_LOCAL_IDENTIFIER

var capabilities = {
  'bstack:options' : {
    "os" : "Windows",
    "osVersion" : "10",
    "sessionName" : "BStack Build Name: " + buildName, // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
    "local" : local,
    "localIdentifier" : localIdentifier,
    "userName" : username,
    "accessKey" : accessKey,
    "seleniumVersion" : "4.0.0",
  },
    "browserName" : "Chrome",
    "browserVersion" : "100.0",
}

var driver = new webdriver.Builder().
  usingServer("https://hub-cloud.browserstack.com/wd/hub").
  withCapabilities(capabilities).
  build();
String username = Environment.GetEnvironmentVariable("BROWSERSTACK_USERNAME");
String accessKey = Environment.GetEnvironmentVariable("BROWSERSTACK_ACCESS_KEY");
String buildName = Environment.GetEnvironmentVariable("BROWSERSTACK_BUILD_NAME");
String local = Environment.GetEnvironmentVariable("BROWSERSTACK_LOCAL");
String localIdentifier = Environment.GetEnvironmentVariable("BROWSERSTACK_LOCAL_IDENTIFIER");

ChromeOptions capabilities = new ChromeOptions();
capabilities.BrowserVersion = "100.0"; // Use latest-beta, latest, latest-1 and so on
Dictionary<string, object> browserstackOptions = new Dictionary<string, object>();
browserstackOptions.Add("os", "Windows");
browserstackOptions.Add("osVersion", "10");
browserstackOptions.Add("sessionName", "BStack Build Name: " + buildName); // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
browserstackOptions.Add("userName", username);
browserstackOptions.Add("accessKey", accessKey);
browserstackOptions.Add("seleniumVersion", "4.0.0");
browserstackOptions.Add("local", local);
browserstackOptions.Add("localIdentifier", localIdentifier);
capabilities.AddAdditionalOption("bstack:options", browserstackOptions);

driver = new RemoteWebDriver(new Uri("https://hub.browserstack.com/wd/hub/"), capabilities);
$username = getenv('BROWSERSTACK_USERNAME');
$accessKey = getenv('BROWSERSTACK_ACCESS_KEY');
$buildName = getenv('BROWSERSTACK_BUILD_NAME');
$local = getenv('BROWSERSTACK_LOCAL');
$localIdentifier = getenv('BROWSERSTACK_LOCAL_IDENTIFIER');

$caps = array(
'bstack:options' => array(
    "os" => "Windows",
    "osVersion" => "10",
    "sessionName" => "BStack Build Name: ".$buildName, // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
    "browserstack.local" => "".$local,
    "browserstack.localIdentifier" => "".$localIdentifier
    "seleniumVersion" => "4.0.0",
),
  "browserName" => "Chrome",
  "browserVersion" => "100.0",
);
$web_driver = RemoteWebDriver::create(
  "https://".$username.":".$accessKey."@hub.browserstack.com/wd/hub",
  $caps
);
username = os.environ.get('BROWSERSTACK_USERNAME')
accessKey = os.environ.get('BROWSERSTACK_ACCESS_KEY')
buildName = os.environ.get('BROWSERSTACK_BUILD_NAME')
local = os.environ.get('BROWSERSTACK_LOCAL')
localIdentifier = os.environ.get('BROWSERSTACK_LOCAL_IDENTIFIER')

bstack_options = {
    "os" : "Windows",
    "osVersion" : "10",
    "sessionName" : "BStack Build Name: " + buildName, # CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
    "local": local,
    "localIdentifier": localIdentifier,
    "seleniumVersion" : "4.0.0",
    "userName": username,
    "accessKey": accessKey
}
options = ChromeOptions()
options.set_capability('bstack:options', bstack_options)
driver = webdriver.Remote(
    command_executor="https://hub.browserstack.com/wd/hub",
    options=options)
username = ENV['BROWSERSTACK_USERNAME']
accessKey = ENV['BROWSERSTACK_ACCESS_KEY']
buildName = ENV['BROWSERSTACK_BUILD_NAME']
local = ENV['BROWSERSTACK_LOCAL']
localIdentifier = ENV['BROWSERSTACK_LOCAL_IDENTIFIER']

# to run on Chrome
options = Selenium::WebDriver::Options.chrome
capabilities = {
  'bstack:options' => {
    "os" => "Windows",
    "osVersion" => "10",
    "sessionName" => "BStack Build Name: " + buildName, # CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
    "local" = local,
    "localIdentifier" = localIdentifier,
    "seleniumVersion" => "4.0.0",
  },
  "browserName" => "Chrome",
  "browserVersion" => "100.0",
}

options.add_option('bstack:options', bstack_options)
driver = Selenium::WebDriver.for(:remote,
  :url => "https://"+username+":"+accessKey+"@hub.browserstack.com/wd/hub",
  :capabilities => options)

Ensure to pass the browserstackLocal and localIdentifier capabilities to run tests on your local development servers.

String username = System.getenv("BROWSERSTACK_USERNAME");
String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
String browserstackLocal = System.getenv("BROWSERSTACK_LOCAL");
String buildName = System.getenv("BROWSERSTACK_BUILD_NAME");
String browserstackLocalIdentifier = System.getenv("BROWSERSTACK_LOCAL_IDENTIFIER");

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("os", "Windows");
capabilities.setCapability("browser", "chrome");
capabilities.setCapability("build", buildName); // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
capabilities.setCapability("browserstack.local", browserstackLocal);
capabilities.setCapability("browserstack.localIdentifier", browserstackLocalIdentifier);
  
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@hub.browserstack.com/wd/hub"), capabilities);
username = process.env.BROWSERSTACK_USERNAME
accessKey = process.env.BROWSERSTACK_ACCESS_KEY
var buildName = process.env.BROWSERSTACK_BUILD_NAME;
browserstackLocal = process.env.BROWSERSTACK_LOCAL
browserstackLocalIdentifier = process.env.BROWSERSTACK_LOCAL_IDENTIFIER
  
var capabilities = {
 "os" : "Windows",
 "browser" : "chrome",
 	"build" : buildName, // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
 "browserstack.local" : browserstackLocal,
 "browserstack.localIdentifier" : browserstackLocalIdentifier,
 "browserstack.user" : username,
 "browserstack.key" : accessKey
}
  
var driver = new webdriver.Builder().
  usingServer("https://hub-cloud.browserstack.com/wd/hub").
  withCapabilities(capabilities).
  build();
username = Environment.GetEnvironmentVariable("BROWSERSTACK_USERNAME");
accessKey = Environment.GetEnvironmentVariable("BROWSERSTACK_ACCESS_KEY");
buildName = Environment.GetEnvironmentVariable("BROWSERSTACK_BUILD_NAME");
browserstackLocal = Environment.GetEnvironmentVariable("BROWSERSTACK_LOCAL");
browserstackLocalIdentifier = Environment.GetEnvironmentVariable("BROWSERSTACK_LOCAL_IDENTIFIER");
  
IWebDriver driver;
OpenQA.Selenium.Chrome.ChromeOptions capability = new OpenQA.Selenium.Chrome.ChromeOptions();
capability.setCapability("os", "Windows", true);
capability.AddAdditionalCapability("os_version", "10", true);
capability.AddAdditionalCapability("browser", "Chrome", true);
capability.AddAdditionalCapability("browser_version", "latest", true); // Use latest-beta, latest, latest-1 and so on
capability.AddAdditionalCapability("name", "BStack-[Azure] Sample Test", true); // test name
capability.AddAdditionalCapability("build", buildName, true); // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
capability.AddAdditionalCapability("browserstack.local", browserstackLocal, true);
capability.AddAdditionalCapability("browserstack.localIdentifier", browserstackLocalIdentifier, true);
capability.AddAdditionalCapability("browserstack.user", username, true);
capability.AddAdditionalCapability("browserstack.key", accessKey, true);
  
driver = new RemoteWebDriver(new Uri("https://hub-cloud.browserstack.com/wd/hub/"), capability);
$username = getenv("BROWSERSTACK_USERNAME");
$accessKey = getenv("BROWSERSTACK_ACCESS_KEY");
$buildName = getenv("BROWSERSTACK_BUILD_NAME");
$browserstackLocal = getenv("BROWSERSTACK_LOCAL");
$browserstackLocalIdentifier = getenv("BROWSERSTACK_LOCAL_IDENTIFIER");
  
$caps = array(
  "os" => "Windows",
  "browser" => "chrome",
  "build" => $buildName, // CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
  "browserstack.local" => $browserstackLocal,
  "browserstack.localIdentifier" => $browserstackLocalIdentifier
);
  
$web_driver = RemoteWebDriver::create(
  "https://" . $username . ":" . $accessKey . "@hub-cloud.browserstack.com/wd/hub",
  $caps
);
username = os.getenv("BROWSERSTACK_USERNAME")
access_key = os.getenv("BROWSERSTACK_ACCESS_KEY")
build_name = os.getenv("BROWSERSTACK_BUILD_NAME")
browserstack_local = os.getenv("BROWSERSTACK_LOCAL")
browserstack_local_identifier = os.getenv("BROWSERSTACK_LOCAL_IDENTIFIER")

caps = {
 'os': 'Windows',
 'browser': 'chrome',
 'build': build_name, # CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
 'browserstack.local': browserstack_local,
 'browserstack.localIdentifier': browserstack_local_identifier,
 'browserstack.user': username,
 'browserstack.key': access_key
}

driver = webdriver.Remote(
    command_executor='https://hub-cloud.browserstack.com/wd/hub',
    desired_capabilities=caps)
username = ENV["BROWSERSTACK_USERNAME"]
access_key = ENV["BROWSERSTACK_ACCESS_KEY"]
build_name = ENV["BROWSERSTACK_BUILD_NAME"]
browserstack_local = ENV["BROWSERSTACK_LOCAL"]
browserstack_local_identifier = ENV["BROWSERSTACK_LOCAL_IDENTIFIER"]
  
caps = Selenium::WebDriver::Remote::Capabilities.new
caps["os"] = "Windows"
caps["browser"] = "chrome"
caps["build"] = build_name # CI/CD job name using BROWSERSTACK_BUILD_NAME env variable
caps["browserstack.local"] = browserstack_local
caps["browserstack.localIdentifier"] = browserstack_local_identifier
caps["browserstack.user"] = username
caps["browserstack.key"] = YOUR_ACCESS_KEY
  
driver = Selenium::WebDriver.for(:remote,
  :url => "https://hub-cloud.browserstack.com/wd/hub",
  :desired_capabilities => caps)

Ensure to pass the BROWSERSTACK_LOCAL and BROWSERSTACK_LOCAL_IDENTIFIER capabilities to run tests on your local development servers.

To address the Build x not found error, ensure you set the environment variable BROWSERSTACK_TEST_RUN_NAME to match the auto-generated build name of the BrowserStack Azure plugin. This can be achieved using the following command:

export BROWSERSTACK_TEST_RUN_NAME=$BROWSERSTACK_BUILD_NAME

By doing this, the test name will align with the build name generated by the BrowserStack Azure plugin, preventing the error.

Add task to start BrowserStack Local

When you add the BrowserStack Config task, you can select BrowserStack Local to run your tests on any development or staging environment. Based on the editor you used to create your pipeline, refer to the steps in the following tabs:

  1. Go to your pipeline and click Edit.

  2. In the Tasks pane, select BrowserStack Config from the tasks list.

  3. Select the service endpoint you created earlier.

  4. Select the BrowserStackLocal checkbox, and then click Add.
    The BrowserStack Config task in the Azure Pipelines YAML editor with the BrowserStackLocal checkbox selected

  5. Click Save to commit the change.

You can set additional configuration options, such as verbose logging, for the Local binary in the BrowserStackLocal Options field. For details, see Set additional configuration options.

The following image shows the azure-pipelines.yml file with the BrowserStack tasks and Local configured for your test run:

The azure-pipelines.yml file with the BrowserStack Config task and Local testing enabled

  1. Go to your pipeline page and click Edit.

  2. In the Tasks tab, click the BrowserStack configuration setup card.

  3. In the BrowserStack Config section, select the BrowserStackLocal checkbox.
    The BrowserStack Config task in the Azure Pipelines classic editor with the BrowserStackLocal checkbox selected

  4. Click Save & queue and select Save to save the changes.

You can set additional configuration options, such as verbose logging, for the Local binary in the BrowserStackLocal Options field. For details, see Set additional configuration options.

You must pass browserstack.local and browserstack.localIdentifier capabilities to test on your local development servers.

Set proxy URL in the pipeline

If your application is behind a proxy setup, you can specify the proxy host and port details as environment variables in Azure DevOps. Adding this information as variables ensures that the Local Testing binary passes test traffic through the proxy.

Based on the type of proxy, either HTTP or HTTPS, you can set the value for HTTP_PROXY or HTTPS_PROXY, respectively, as shown:

HTTP_PROXY = "http://<proxy-host>:<proxy-port>"

HTTPS_PROXY = "https://<proxy-host>:<proxy-port>"

If the proxy requires authentication, pass the credentials in the format of a basic auth URL, as follows:

HTTP_PROXY = "http://<username>:<password>@<proxy-host>:<proxy-port>"

HTTPS_PROXY = "https://<username>:<password>@<proxy-host>:<proxy-port>"

Depending on the editor you used to create your pipeline, refer to the steps in the following tabs:

  1. Navigate to your pipeline and click Edit.

  2. Click Variables located at the top-right corner of the page.

  3. In the Variables section, click New Variable.

  4. In the Variables section, enter HTTP_PROXYor HTTPS_PROXY in the Name field, and enter its value, such as http://127.0.0.1:8080, in the Value field.

  5. Click OK.

  6. In the Variables section, click Save.

  1. Navigate to your pipeline and click Edit.

  2. Click the Variables tab to view a list of predefined variables with their respective values in the Pipeline variables section.

  3. Click + Add and enter HTTP_PROXYor HTTPS_PROXY in the name field, and enter its value, such as http://127.0.0.1:8080, in the value field.

  4. Click Save & queue and select Save to save the changes.

Set additional configuration options

With the Local binary, you can set additional configurations, such as verbose logging, excluding hosts, and so on. To set any additional configuration options, add the flags in the BrowserStackLocal Options section. For example, to enable verbose logging and to route all traffic via the proxy, set the following flags in the BrowserStackLocal Options field:

{"verbose": true, "forceProxy": true}

Check out Flag for Local Binary to learn about more Local Testing parameters.

Follow Camel case style when adding local modifier options. For example, enter the --force-local option as forcelocal in the BrowserStackLocal Options section.

Add task to stop BrowserStack Local

Stop the BrowserStack Local binary after your tests run to free up your resources. Add the BrowserStack Stop Local task in your pipeline using the following steps:

  1. Navigate to your pipeline and click Edit.

  2. In the Tasks pane, search for BrowserStack Stop Local from the tasks list, and then select it. Add BrowserStack Stop Local in YAML

The following image shows the azure-pipelines.yml file with all the BrowserStack tasks configured to run your local test on BrowserStack. YML file with BrowserStack local tasks added

  1. Navigate to your pipeline and click Edit.

  2. In the Task tab, click + on the Agent job 1 card.

  3. Search for BrowserStack Stop Local and click Add. Add Stop Local

  4. Click Save & queue and select Save to save the changes.

The following image shows all the BrowserStack tasks configured to run your local test on BrowserStack.

Classic stop local tasks

Embed the build report in Azure Pipelines

The BrowserStack Results task fetches the Test Reporting & Analytics report for the current build and publishes it to the run summary. Depending on the editor you used to create your pipeline, follow the steps in the relevant tab:

  1. Go to your pipeline and click Edit.

  2. In the Tasks pane, search for BrowserStack Results, and then select it.
    The Tasks pane in the Azure Pipelines YAML editor with the BrowserStack Results task selected

  3. In the BrowserStack Results section, enter observability in the Enter the product in use field, and then click Add.

The following snippet is added to your azure-pipelines.yml file:

   - task: BrowserStackResults@0
     inputs:
       browserstackProduct: 'observability'
  1. Move the task so that it’s the last step in the job, after the step that runs your tests.

  2. Click Save to commit the change and run the pipeline.

  1. Go to your pipeline and click Edit.

  2. In the Tasks tab, click + on the Agent job 1 card.

  3. In the Add tasks panel, select the BrowserStack Results task and click Add.
    The Add tasks panel in the Azure Pipelines classic editor with the BrowserStack Results task listed

  4. Click the BrowserStack Results card and enter observability in the Enter the product in use field.

  5. Click Control Options and select Continue on error so a report failure doesn’t fail your pipeline.
    The BrowserStack Results task in the Azure Pipelines classic editor with Continue on error selected under Control Options

  6. Drag the task so that it’s the last task in the job, after the task that runs your tests.

  7. Click Save & queue to commit the change and run the pipeline.

The following image shows all the BrowserStack tasks configured in the pipeline:

The Azure Pipelines classic editor Tasks tab listing the BrowserStack Config, BrowserStack Stop Local, and BrowserStack Results tasks in Agent job 1

Add the BrowserStack Results task as the last step of the job, after the step that runs your tests. The task requires Test Reporting & Analytics to completely process the build, so running the task earlier returns an incomplete report.

View the build report

After the pipeline run finishes, follow these steps to view the report:

  1. In your Azure DevOps project, click Pipelines.
  2. Select your pipeline, and then select the run you want to review.
  3. In the run summary, select the BrowserStack tab.

The tab shows the Test Reporting & Analytics report for that build, including the build status, the number of tests that passed and failed, the failure categories, and the list of failed tests.

To open the full report, select the build name in the report. The Test Reporting & Analytics dashboard opens for that build, where you can review test-level logs, failure analysis, and history.

Azure Releases CI works differently than Jenkins and Azure Pipelines. If you use Azure Releases, builds with the same name are combined into a single build if they occur within a six-hour interval. This happens even if you have not set up BROWSERSTACK_BUILD_RUN_IDENTIFIER to be the same across those builds.

Rerun failed tests

After you integrate Azure Pipelines, you can rerun failed tests directly from the Test Reporting & Analytics dashboard instead of triggering the whole pipeline again. For the steps, see Rerun tests on Azure.

We're sorry to hear that. Please share your feedback so we can do better

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback

Is this page helping you?

Yes
No

We're sorry to hear that. Please share your feedback so we can do better

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback!

Talk to an Expert
Download Copy Check Circle