BrowserStack C# SDK supports a plug-and-play integration. Run your entire test suite in parallel with a few steps!
Prerequisites
An existing automated test suite.
.Net v5.0+, NUnit v3.0.0+. (if you are using NUnit), xUnit v2.0+ (if you are using xUnit)
If you are using Mac computers with Apple silicon chips, use the BrowserStack SDK CLI workflow.
Integration steps
To begin with our starter project, check out our C# sample project. If you are already using the sample project, you may skip the integration steps.
Depending on your preferred method of building projects, perform the following steps to integrate your test suite with BrowserStack.
You can integrate yout test suite with C# SDK using NUnit, xUnit, or SpecFlow.
Save your BrowserStack credentials as environment variables. It simplifies running your test suite from your local or CI environment. For MacOS, set the values in your ~/.zprofile (zsh) or ~/.profile (bash).
Steps to install BrowserStack SDK as a NuGet package:
On the Visual Studio toolbar, select Project > Manage NuGet Packages.
A NuGet Package Manager Window opens.
In the Browse tab, search for BrowserStack.TestAdapter, and click Install.
Create your BrowserStack config file
After installing the SDK, create a browserstack.yml config file at the root level of your project. This file holds all the required capabilities to run tests on BrowserStack.
Set access credentials
Set userName and accessKey parameters in the browserstack.yml file, available in the root directory, to authenticate your tests on BrowserStack.
Set platforms to test on
Set the browsers/devices you want to test under the platforms object. Our config follows W3C formatted capabilities.
Parallel thread
#1
Windows 10
Chrome 120
Parallel thread
#2
OS X Monterey
Safari 15.6
Parallel thread
#3
iOS 15
iPhone 13
Do you want to dynamically configure platforms?
To dynamically configure platforms across different tests, you can comment out the platforms capability while still passing platform-specific capabilities.
Enable BrowserStack Local
Test localhost/internal servers in your network
True
False
Test localhost/staging websites that are not publicly accessible
BrowserStack’s Local Testing feature connects with test suites pointing to your localhost URL
If your staging environment is behind a proxy or firewall, additional arguments, such as proxy username, proxy password, etc, must be set.
Check out Local Binary parameters to learn about additional arguments or Contact Support for assistance.
BrowserStack Reporting (part 1/2)
You can leverage BrowserStack’s extensive reporting features using the following capabilities:
Build Name
Set a name to your build (usually the same as the build ID that’s on your CI/CD platform). Accepted characters: A-Z, a-z, 0-9, ., :, -, [], /, @, &, ', _. All other characters are ignored. Character limit: 255
Project Name
Set a project name for your project.
The projectName and buildName config must be static and not change across different runs of the same build. This is a deviation in approach as specified by BrowserStack Automate or App Automate as Test Observability will automatically identify different build runs.
Restrict the characters in your projectName and buildName to alphanumeric characters (A-Z, a-z, 0-9), underscores (_), colons (:), and hyphens (-). Any other character will be replaced with a space.
sessionName is the name of your test sessions and is automatically picked from your test class/spec name. It doesn’t need to be set manually when using the BrowserStack SDK.
Use additional debugging features
BrowserStack offers session logs, screenshots of failed commands, and a video of the entire test, with additional options to enable.
Visual logs
Enables screenshots for every selenium command ran
True
False
Network logs
Enables network capture for the session in HAR format. Reduces session performance slightly
True
False
Console logs
Set the remote Browser’s console log levels. Currently supported only on Chrome browsers (Desktop and Android)
Info
Info
Debug
Warn
Error
Update browserstack.yml file
Update the browserstack.yml file in the root folder of your test suite and add the given code to it.
```yml
userName: YOUR_USERNAME
accessKey: YOUR_ACCESS_KEY
platforms:
- YOUR_FIRST_OS_TYPE: YOUR_FIRST_OS
YOUR_FIRST_OS_VERSION_TYPE: YOUR_FIRST_OS_VERSION
YOUR_FIRST_BROWSER_TYPE: YOUR_FIRST_BROWSER
YOUR_FIRST_BROWSER_VERSION_TYPE: YOUR_FIRST_BROWSER_VERSION
- YOUR_SECOND_OS_TYPE: YOUR_SECOND_OS
YOUR_SECOND_OS_VERSION_TYPE: YOUR_SECOND_OS_VERSION
YOUR_SECOND_BROWSER_TYPE: YOUR_SECOND_BROWSER
YOUR_SECOND_BROWSER_VERSION_TYPE: YOUR_SECOND_BROWSER_VERSION
- YOUR_THIRD_OS_TYPE: YOUR_THIRD_OS
YOUR_THIRD_OS_VERSION_TYPE: YOUR_THIRD_OS_VERSION
YOUR_THIRD_BROWSER_TYPE: YOUR_THIRD_BROWSER
YOUR_THIRD_BROWSER_VERSION_TYPE: YOUR_THIRD_BROWSER_VERSION
YOUR_LOCAL_CAPS_TYPE: YOUR_LOCAL_CAPS
YOUR_BUILD_NAME_TYPE: YOUR_BUILD_NAME
YOUR_PROJECT_NAME_TYPE: YOUR_PROJECT_NAME
CUSTOM_TAG_1: "You can set a custom Build Tag here"
# Use CUSTOM_TAG_<N> and set more build tags as you need.
YOUR_DEBUG_CAPS_TYPE: YOUR_DEBUG_CAPS
YOUR_NETWORK_CAPS_TYPE: YOUR_NETWORK_CAPS
YOUR_CONSOLE_CAPS_TYPE: YOUR_CONSOLE_CAPS
```
userName: YOUR_USERNAME
accessKey: YOUR_ACCESS_KEY
platforms:-os: Windows
osVersion:10browserName: Chrome
browserVersion:120.0-os: OS X
osVersion: Monterey
browserName: Safari
browserVersion:15.6-deviceName: iPhone 13
osVersion:15browserName: Chromium
deviceOrientation: portrait
browserstackLocal:truebuildName: bstack-demo
projectName: BrowserStack Sample
CUSTOM_TAG_1:"You can set a custom Build Tag here"# Use CUSTOM_TAG_<N> and set more build tags as you need.debug:truenetworkLogs:trueconsoleLogs: info
Use our Capability Generator to select from a comprehensive set of options you can use to customize your tests.
BrowserStack Reporting (part 2/2)
Test assertions are specific to selected language frameworks. BrowserStack requires explicit instruction to determine whether your tests have passed or failed based on the assertions in your test script.
Mark session name
You can use the sessionName capability to give your session a name (usually describing the test case) so that it is easy for you to debug later.
```bash
# Set these values in your ~/.zprofile (zsh) or ~/.profile (bash)
export BROWSERSTACK_USERNAME="YOUR_USERNAME"
export BROWSERSTACK_ACCESS_KEY="YOUR_ACCESS_KEY"
```
# Set these values in your ~/.zprofile (zsh) or ~/.profile (bash)exportBROWSERSTACK_USERNAME="YOUR_USERNAME"exportBROWSERSTACK_ACCESS_KEY="YOUR_ACCESS_KEY"
Install BrowserStack SDK
Run the given command to install the BrowserStack SDK and create a browserstack.yml file in the root directory of your project.
The browserstack.yml config file holds all the required capabilities to run tests on BrowserStack.
The BrowserStack.TestAdapter works on top of your framework test adapter to run parallel tests on BrowserStack across multiple platforms mentioned on the browserstack.yml file.
cd NUnit-BrowserStack
dotnet browserstack-sdk setup-dotnet --dotnet-path "<path>" --dotnet-version "<version>"
<path> - Mention the absolute path to the directory where you want to save dotnet x64
<version> - Mention the dotnet version which you want to use to run tests
This command performs the following functions:
Installs dotnet x64
Installs the required version of dotnet x64 at an appropriate path
Sets alias
Sets an alias for the dotnet installation location on confirmation (enter y option)
The command sets the installation path in your ~/.zshrc (zsh) or ~/.bashrc (bash) profile and you can use this alias to run your tests later. If you choose not to set the alias, when you run the tests, you have to use the entire path to the installation location on every test run.
Update your BrowserStack config file
Now that the BrowserStack SDK has been installed and the browserstack.yml config file has been created, update your browserstack.yml config file with the given parameters.
Set platforms to test on
Set the browsers and devices you want to test under the platforms object. Our config follows W3C formatted capabilities.
Parallel thread
#1
Windows 10
Chrome 120
Parallel thread
#2
OS X Monterey
Safari 15.6
Parallel thread
#3
iOS 15
iPhone 13
Do you want to dynamically configure platforms?
To dynamically configure platforms across different tests, you can comment out the platforms capability while still passing platform-specific capabilities.
Enable BrowserStack Local
Test localhost/internal servers in your network
True
False
Test localhost/staging websites that are not publicly accessible
BrowserStack’s Local Testing feature connects with test suites pointing to your localhost URL
If your staging environment is behind a proxy or firewall, additional arguments, such as proxy username, proxy password, etc, must be set.
Check out Local Binary parameters to learn about additional arguments or Contact Support for assistance.
BrowserStack Reporting (part 1/2)
You can leverage BrowserStack’s extensive reporting features using the following capabilities:
Build Name
Set a name to your build (usually the same as the build ID that’s on your CI/CD platform). Accepted characters: A-Z, a-z, 0-9, ., :, -, [], /, @, &, ', _. All other characters are ignored. Character limit: 255
Project Name
Set a project name for your project.
The projectName and buildName config must be static and not change across different runs of the same build. This is a deviation in approach as specified by BrowserStack Automate or App Automate as Test Observability will automatically identify different build runs.
Restrict the characters in your projectName and buildName to alphanumeric characters (A-Z, a-z, 0-9), underscores (_), colons (:), and hyphens (-). Any other character will be replaced with a space.
sessionName is the name of your test sessions and is automatically picked from your test class/spec name. It doesn’t need to be set manually when using the BrowserStack SDK.
Use additional debugging features
BrowserStack offers session logs, screenshots of failed commands, and a video of the entire test, with additional options to enable.
Visual logs
Enables screenshots for every selenium command ran
True
False
Network logs
Enables network capture for the session in HAR format. Reduces session performance slightly
True
False
Console logs
Set the remote Browser’s console log levels. Currently supported only on Chrome browsers (Desktop and Android)
Info
Info
Debug
Warn
Error
Update browserstack.yml file with selected capabilities
Copy the code snippet and replace the contents of the browserstack.yml file in the root folder of your test suite.
```yml
userName: YOUR_USERNAME
accessKey: YOUR_ACCESS_KEY
platforms:
- YOUR_FIRST_OS_TYPE: YOUR_FIRST_OS
YOUR_FIRST_OS_VERSION_TYPE: YOUR_FIRST_OS_VERSION
YOUR_FIRST_BROWSER_TYPE: YOUR_FIRST_BROWSER
YOUR_FIRST_BROWSER_VERSION_TYPE: YOUR_FIRST_BROWSER_VERSION
- YOUR_SECOND_OS_TYPE: YOUR_SECOND_OS
YOUR_SECOND_OS_VERSION_TYPE: YOUR_SECOND_OS_VERSION
YOUR_SECOND_BROWSER_TYPE: YOUR_SECOND_BROWSER
YOUR_SECOND_BROWSER_VERSION_TYPE: YOUR_SECOND_BROWSER_VERSION
- YOUR_THIRD_OS_TYPE: YOUR_THIRD_OS
YOUR_THIRD_OS_VERSION_TYPE: YOUR_THIRD_OS_VERSION
YOUR_THIRD_BROWSER_TYPE: YOUR_THIRD_BROWSER
YOUR_THIRD_BROWSER_VERSION_TYPE: YOUR_THIRD_BROWSER_VERSION
YOUR_LOCAL_CAPS_TYPE: YOUR_LOCAL_CAPS
YOUR_BUILD_NAME_TYPE: YOUR_BUILD_NAME
YOUR_PROJECT_NAME_TYPE: YOUR_PROJECT_NAME
CUSTOM_TAG_1: "You can set a custom Build Tag here"
# Use CUSTOM_TAG_<N> and set more build tags as you need.
YOUR_DEBUG_CAPS_TYPE: YOUR_DEBUG_CAPS
YOUR_NETWORK_CAPS_TYPE: YOUR_NETWORK_CAPS
YOUR_CONSOLE_CAPS_TYPE: YOUR_CONSOLE_CAPS
```
userName: YOUR_USERNAME
accessKey: YOUR_ACCESS_KEY
platforms:-os: Windows
osVersion:10browserName: Chrome
browserVersion:120.0-os: OS X
osVersion: Monterey
browserName: Safari
browserVersion:15.6-deviceName: iPhone 13
osVersion:15browserName: Chromium
deviceOrientation: portrait
browserstackLocal:truebuildName: bstack-demo
projectName: BrowserStack Sample
CUSTOM_TAG_1:"You can set a custom Build Tag here"# Use CUSTOM_TAG_<N> and set more build tags as you need.debug:truenetworkLogs:trueconsoleLogs: info
Use our Capability Generator to select from a comprehensive set of options you can use to customize your tests.
BrowserStack Reporting (part 2/2)
Test assertions are specific to selected language frameworks. BrowserStack requires explicit instruction to determine whether your tests have passed or failed based on the assertions in your test script.
Mark session name
You can use the sessionName capability to give your session a name (usually describing the test case) so that it is easy for you to debug later.
Continue running your tests as you have been running previously. The command to run your tests using the BrowserStack SDK remains unchanged. For your reference, here’s a sample command:
The resolution capability changes the default desktop screen resolution for your tests on BrowserStack.
Capability
Description
Expected values
resolution
Set the resolution of your VM before beginning your test
A string. Default resolution is 1024x768
Supported resolutions: Windows (XP, 7):800x600, 1024x768, 1280x800, 1280x1024, 1366x768, 1440x900, 1680x1050, 1600x1200, 1920x1200, 1920x1080, and 2048x1536
Windows (8, 8.1, 10):1024x768, 1280x800, 1280x1024, 1366x768, 1440x900, 1680x1050, 1600x1200, 1920x1200, 1920x1080, and 2048x1536
OS X (Sequoia, Sonoma, Ventura, Monterey, Big Sur, Catalina, Mojave, and High Sierra):1024x768, 1280x960, 1280x1024, 1600x1200, 1920x1080, 2560x1440, 2560x1600, and 3840x2160
OS X (All other versions):1024x768, 1280x960, 1280x1024, 1600x1200, and 1920x1080