Skip to content

Commit dc86347

Browse files
committed
Add browser stack support to selenium test
1 parent 4ef8e36 commit dc86347

File tree

2 files changed

+62
-2
lines changed

2 files changed

+62
-2
lines changed

.github/workflows/browserstack.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: 'BrowserStack Test'
2+
on: [push, pull_request]
3+
jobs:
4+
ubuntu-job:
5+
name: 'BrowserStack Test on Ubuntu'
6+
runs-on: ubuntu-latest # Can be self-hosted runner also
7+
steps:
8+
- name: 'BrowserStack Env Setup' # Invokes the setup-env action
9+
uses: browserstack/github-actions/setup-env@master
10+
with:
11+
username: ${{ secrets.BROWSERSTACK_USERNAME }}
12+
access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
13+
- name: 'BrowserStack Local Tunnel Setup' # Invokes the setup-local action
14+
uses: browserstack/github-actions/setup-local@master
15+
with:
16+
local-testing: start
17+
local-identifier: random
18+
# The next 3 steps are for building the web application to be tested and starting the web server on the runner environment
19+
- name: 'Checkout the repository'
20+
uses: actions/checkout@v2
21+
22+
- name: Copy configuration
23+
run: cp config.json.example config.json
24+
25+
- name: 'Building web application to be tested'
26+
run: npm install
27+
# - name: 'Running application under test'
28+
# run: npm test
29+
- name: 'Running test on BrowserStack'
30+
run: npm test
31+
- name: 'BrowserStackLocal Stop' # Terminating the BrowserStackLocal tunnel connection
32+
uses: browserstack/github-actions/setup-local@master
33+
with:
34+
local-testing: stop

test/selenium.test.ts

+28-2
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,35 @@ async function setup(): Promise<WebDriver> {
2424
const options = new Chrome.Options();
2525
options.addArguments("--load-extension=" + Path.join(__dirname, "../dist/"));
2626
options.addArguments("--mute-audio");
27-
options.addArguments("--disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies")
27+
options.addArguments("--disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies");
28+
29+
let driver;
30+
if (process.env.BROWSERSTACK_BUILD_NAME) {
31+
const capabilities = {
32+
'os': 'windows',
33+
'os_version': '10',
34+
'browserName': 'chrome',
35+
'browser_version' : 'latest',
36+
'browserstack.local': 'true',
37+
'build': process.env.BROWSERSTACK_BUILD_NAME,
38+
'project': process.env.BROWSERSTACK_PROJECT_NAME,
39+
'browserstack.localIdentifier': process.env.BROWSERSTACK_LOCAL_IDENTIFIER,
40+
'browserstack.user': process.env.BROWSERSTACK_USERNAME,
41+
'browserstack.key': process.env.BROWSERSTACK_ACCESS_KEY
42+
}
43+
44+
driver = await new Builder()
45+
.usingServer('http://hub-cloud.browserstack.com/wd/hub')
46+
.setChromeOptions(options)
47+
.withCapabilities(capabilities)
48+
.build();
49+
} else {
50+
driver = await new Builder()
51+
.forBrowser("chrome")
52+
.setChromeOptions(options)
53+
.build();
54+
}
2855

29-
const driver = await new Builder().forBrowser("chrome").setChromeOptions(options).build();
3056
driver.manage().setTimeouts({
3157
implicit: 5000
3258
});

0 commit comments

Comments
 (0)