Integrate BrowserStack Automate with CircleCI
A step-by-step guide to help you integrate CircleCI with the BrowserStack device cloud for running all your Selenium tests on BrowserStack Automate.
CircleCI uses .circleci/config.yml
for configuration (read more about Circle CI ), and it can be used to integrate your tests with BrowserStack. There are some variables you need to set: grid config , username , access key etc. For more detailed information on setting environment variables in CircleCI, please refer to their documentation .
Setting the variables
BrowserStack recommends you encrypt variables like username and access key . CircleCI enables the user to secure environment variables via their web interface. This functionality allows you to keep the contents of the secure variable private.
The key-value pairs are set in the project settings, which can be found under Tweaks , in the Environment variables section. Public environment variables can be set directly via circle.yml
in machine section, under environment .
Shown below is a sample configuration for the circle.yml
file:
machine:
environment:
BROWSERSTACK_USERNAME: "YOUR_USERNAME"
BROWSERSTACK_ACCESS_KEY: "YOUR_ACCESS_KEY"
BROWSERSTACK_LOCAL: false
BROWSERSTACK_LOCAL_IDENTIFIER: "identifier"
Copy icon
Copy
The example demonstrates how to read CircleCI environment variables in your code. For example:
```yml
userName: YOUR_USERNAME
accessKey: YOUR_ACCESS_KEY
platforms:
- os: Windows
osVersion: 10
browserName: Chrome
browserVersion: 100.0
buildName: BStack Build Name
sessionName: BStack Session Name
seleniumVersion: 4.0.0
browserstackLocal: true
browserStackLocalOptions:
- localIdentifier: browserstack_local_identifier
```
Copy icon
Copy
userName : YOUR_USERNAME
accessKey : YOUR_ACCESS_KEY
platforms :
- os : Windows
osVersion : 10
browserName : Chrome
browserVersion : 100.0
buildName : BStack Build Name
sessionName : BStack Session Name
seleniumVersion : 4.0.0
browserstackLocal : true
browserStackLocalOptions :
- localIdentifier : browserstack_local_identifier
String username = System . getenv ( "BROWSERSTACK_USERNAME" ) ;
String accessKey = System . getenv ( "BROWSERSTACK_ACCESS_KEY" ) ;
String local = System . getenv ( "BROWSERSTACK_LOCAL" ) ;
String Localidentifier = System . getenv ( "BROWSERSTACK_LOCAL_IDENTIFIER" ) ;
MutableCapabilities capabilities = new MutableCapabilities ( ) ;
capabilities. setCapability ( "browserName" , "Chrome" ) ;
HashMap < String , Object > browserstackOptions = new HashMap < String , Object > ( ) ;
browserstackOptions. put ( "os" , "Windows" ) ;
browserstackOptions. put ( "local" , local) ;
browserstackOptions. put ( "localIdentifier" , localIdentifier) ;
capabilities. setCapability ( "bstack:options" , browserstackOptions) ;
WebDriver driver = new RemoteWebDriver ( new URL ( "https://" + username + ":" + accessKey + "@hub.browserstack.com/wd/hub" ) , capabilities) ;
Copy icon
Copy
username = process. env. BROWSERSTACK_USERNAME
accessKey = process. env. BROWSERSTACK_ACCESS_KEY
local = process. env. BROWSERSTACK_LOCAL
localIdentifier = process. env. BROWSERSTACK_LOCAL_IDENTIFIER
var capabilities = {
'bstack:options' : {
"os" : "Windows" ,
"local" : local,
"localIdentifier" : localIdentifier,
"userName" : username,
"accessKey" : accessKey,
} ,
"browserName" : "Chrome" ,
}
var driver = new webdriver. Builder ( ) .
usingServer ( "https://hub-cloud.browserstack.com/wd/hub" ) .
withCapabilities ( capabilities) .
build ( ) ;
Copy icon
Copy
String username = Environment. GetEnvironmentVariable ( "BROWSERSTACK_USERNAME" ) ;
String accessKey = Environment. GetEnvironmentVariable ( "BROWSERSTACK_ACCESS_KEY" ) ;
String local = Environment. GetEnvironmentVariable ( "BROWSERSTACK_LOCAL" ) ;
String localIdentifier = Environment. GetEnvironmentVariable ( "BROWSERSTACK_LOCAL_IDENTIFIER" ) ;
ChromeOptions capabilities = new ChromeOptions ( ) ;
Dictionary< string , object > browserstackOptions = new Dictionary< string , object > ( ) ;
browserstackOptions. Add ( "os" , "Windows" ) ;
browserstackOptions. Add ( "local" , local) ;
browserstackOptions. Add ( "localIdentifier" , localIdentifier) ;
capabilities. AddAdditionalOption ( "bstack:options" , browserstackOptions) ;
driver = new RemoteWebDriver ( new URL ( "https://" + username + ":" + accessKey + "@hub.browserstack.com/wd/hub" ) , capabilities) ;
Copy icon
Copy
$username = getenv ( 'BROWSERSTACK_USERNAME' ) ;
$accessKey = getenv ( 'BROWSERSTACK_ACCESS_KEY' ) ;
$local = getenv ( 'BROWSERSTACK_LOCAL' ) ;
$localIdentifier = getenv ( 'BROWSERSTACK_LOCAL_IDENTIFIER' ) ;
$caps = array (
'bstack:options' => array (
"os" => "Windows" ,
"browserstack.local" => "" . $local ,
"browserstack.localIdentifier" => "" . $localIdentifier ,
) ,
"browserName" => "Chrome" ,
) ;
$web_driver = RemoteWebDriver :: create (
"https://" . $username . ":" . $accessKey . "@hub.browserstack.com/wd/hub" ,
$caps
) ;
Copy icon
Copy
username = os. environ. get( 'BROWSERSTACK_USERNAME' )
accessKey = os. environ. get( 'BROWSERSTACK_ACCESS_KEY' )
local = os. environ. get( 'BROWSERSTACK_LOCAL' )
localIdentifier = os. environ. get( 'BROWSERSTACK_LOCAL_IDENTIFIER' )
bstack_options = {
"os" : "Windows" ,
"local" : local,
"localIdentifier" : localIdentifier,
"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)
Copy icon
Copy
username = ENV [ 'BROWSERSTACK_USERNAME' ]
accessKey = ENV [ 'BROWSERSTACK_ACCESS_KEY' ]
local = ENV [ 'BROWSERSTACK_LOCAL' ]
localIdentifier = ENV [ 'BROWSERSTACK_LOCAL_IDENTIFIER' ]
options = Selenium : : WebDriver : : Options . chrome
capabilities = {
'bstack:options' = > {
"os" = > "Windows" ,
"local" = local,
"localIdentifier" = localIdentifier,
} ,
"browserName" = > "Chrome" ,
}
options. add_option( 'bstack:options' , bstack_options)
driver = Selenium : : WebDriver . for ( :remote ,
:url = > "https://" + username+ ":" + accessKey+ "@hub.browserstack.com/wd/hub" ,
:capabilities = > options)
Copy icon
Copy
String username = System . getenv ( "BROWSERSTACK_USERNAME" ) ;
String accessKey = System . getenv ( "BROWSERSTACK_ACCESS_KEY" ) ;
String browserstackLocal = System . getenv ( "BROWSERSTACK_LOCAL" ) ;
String browserstackLocalIdentifier = System . getenv ( "BROWSERSTACK_LOCAL_IDENTIFIER" ) ;
DesiredCapabilities capabilities = new DesiredCapabilities ( ) ;
capabilities. setCapability ( "os" , "Windows" ) ;
capabilities. setCapability ( "browser" , "chrome" ) ;
capabilities. setCapability ( "browserstack.local" , browserstackLocal) ;
capabilities. setCapability ( "browserstack.localIdentifier" , browserstackLocalIdentifier) ;
driver = new RemoteWebDriver ( new URL ( "https://" + username + ":" + accessKey + "@hub.browserstack.com/wd/hub" ) , capabilities) ;
Copy icon
Copy
username = process. env. BROWSERSTACK_USERNAME
accessKey = process. env. BROWSERSTACK_ACCESS_KEY
browserstackLocal = process. env. BROWSERSTACK_LOCAL
browserstackLocalIdentifier = process. env. BROWSERSTACK_LOCAL_IDENTIFIER
var capabilities = {
"os" : "Windows" ,
"browser" : "chrome" ,
"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 ( ) ;
Copy icon
Copy
String username = System. getenv ( "BROWSERSTACK_USERNAME" ) ;
String accessKey = System. getenv ( "BROWSERSTACK_ACCESS_KEY" ) ;
String browserstackLocal = System. getenv ( "BROWSERSTACK_LOCAL" ) ;
String browserstackLocalIdentifier = System. getenv ( "BROWSERSTACK_LOCAL_IDENTIFIER" ) ;
DesiredCapabilities capabilities = new DesiredCapabilities ( ) ;
capabilities. setCapability ( "os" , "Windows" ) ;
capabilities. setCapability ( "browser" , "chrome" ) ;
capabilities. setCapability ( "browserstack.local" , browserstackLocal) ;
capabilities. setCapability ( "browserstack.localIdentifier" , browserstackLocalIdentifier) ;
driver = new RemoteWebDriver ( new URL ( "https://" + username + ":" + accessKey + "@hub.browserstack.com/wd/hub" ) , capabilities) ;
Copy icon
Copy
$username = getenv ( "BROWSERSTACK_USERNAME" ) ;
$accessKey = getenv ( "BROWSERSTACK_ACCESS_KEY" ) ;
$browserstackLocal = getenv ( "BROWSERSTACK_LOCAL" ) ;
$browserstackLocalIdentifier = getenv ( "BROWSERSTACK_LOCAL_IDENTIFIER" ) ;
$caps = array (
"os" => "Windows" ,
"browser" => "chrome" ,
"browserstack.local" => $browserstackLocal ,
"browserstack.localIdentifier" => $browserstackLocalIdentifier
) ;
$web_driver = RemoteWebDriver :: create (
"https://" . $username . ":" . $accessKey . "@hub-cloud.browserstack.com/wd/hub" ,
$caps
) ;
Copy icon
Copy
username = os. getenv( "BROWSERSTACK_USERNAME" )
access_key = os. getenv( "BROWSERSTACK_ACCESS_KEY" )
browserstack_local = os. getenv( "BROWSERSTACK_LOCAL" )
browserstack_local_identifier = os. getenv( "BROWSERSTACK_LOCAL_IDENTIFIER" )
caps = {
'os' : 'Windows' ,
'browser' : 'chrome' ,
'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)
Copy icon
Copy
username = ENV [ "BROWSERSTACK_USERNAME" ]
access_key = ENV [ "BROWSERSTACK_ACCESS_KEY" ]
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[ "browserstack.local" ] = browserstack_local
caps[ "browserstack.localIdentifier" ] = browserstack_local_identifier
caps[ "browserstack.user" ] = username
caps[ "browserstack.key" ] = access_key
driver = Selenium : : WebDriver . for ( :remote ,
:url = > "https://hub-cloud.browserstack.com/wd/hub" ,
:desired_capabilities = > caps)
Copy icon
Copy
Running local tests
While testing on development or staging environments, you can do the following:
Configure CircleCI to automatically download the latest version of the BrowserStack Local binary.
Instantiate the binary before your test starts.
Enable Local Testing by setting the local
capability to true
in your test script.
Refer to the sample code below:
machine :
environment :
BROWSERSTACK_USERNAME : "YOUR_USERNAME"
BROWSERSTACK_ACCESS_KEY : "YOUR_ACCESS_KEY"
BROWSERSTACK_LOCAL : true
test :
pre :
- wget "https: //www.browserstack.com/browserstack- local/BrowserStackLocal- linux- x64.zip"
- unzip BrowserStackLocal- linux- x64.zip
- ./BrowserStackLocal $BROWSERSTACK_ACCESS_KEY :
background : true
Copy icon
Copy
Is this page helping you?
Thank you for your valuable feedback!