Add browser stack support to selenium test

This commit is contained in:
Ajay Ramachandran
2021-07-31 00:56:49 -04:00
parent 4ef8e36821
commit 32c512a12c
2 changed files with 66 additions and 2 deletions

34
.github/workflows/browserstack.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
name: 'BrowserStack Test'
on: [push, pull_request]
jobs:
ubuntu-job:
name: 'BrowserStack Test on Ubuntu'
runs-on: ubuntu-latest # Can be self-hosted runner also
steps:
- name: 'BrowserStack Env Setup' # Invokes the setup-env action
uses: browserstack/github-actions/setup-env@master
with:
username: ${{ secrets.BROWSERSTACK_USERNAME }}
access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
- name: 'BrowserStack Local Tunnel Setup' # Invokes the setup-local action
uses: browserstack/github-actions/setup-local@master
with:
local-testing: start
local-identifier: random
# The next 3 steps are for building the web application to be tested and starting the web server on the runner environment
- name: 'Checkout the repository'
uses: actions/checkout@v2
- name: Copy configuration
run: cp config.json.example config.json
- name: 'Building web application to be tested'
run: npm install
# - name: 'Running application under test'
# run: npm test
- name: 'Running test on BrowserStack'
run: npm test
- name: 'BrowserStackLocal Stop' # Terminating the BrowserStackLocal tunnel connection
uses: browserstack/github-actions/setup-local@master
with:
local-testing: stop

View File

@@ -24,9 +24,39 @@ async function setup(): Promise<WebDriver> {
const options = new Chrome.Options();
options.addArguments("--load-extension=" + Path.join(__dirname, "../dist/"));
options.addArguments("--mute-audio");
options.addArguments("--disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies")
options.addArguments("--disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies");
options.windowSize({
width: 1280,
height: 720
});
let driver;
if (process.env.BROWSERSTACK_BUILD_NAME) {
const capabilities = {
'os': 'windows',
'os_version': '10',
'browserName': 'chrome',
'browser_version' : 'latest',
'browserstack.local': 'true',
'build': process.env.BROWSERSTACK_BUILD_NAME,
'project': process.env.BROWSERSTACK_PROJECT_NAME,
'browserstack.localIdentifier': process.env.BROWSERSTACK_LOCAL_IDENTIFIER,
'browserstack.user': process.env.BROWSERSTACK_USERNAME,
'browserstack.key': process.env.BROWSERSTACK_ACCESS_KEY
}
driver = await new Builder()
.usingServer('http://hub-cloud.browserstack.com/wd/hub')
.setChromeOptions(options)
.withCapabilities(capabilities)
.build();
} else {
driver = await new Builder()
.forBrowser("chrome")
.setChromeOptions(options)
.build();
}
const driver = await new Builder().forBrowser("chrome").setChromeOptions(options).build();
driver.manage().setTimeouts({
implicit: 5000
});