Skip to content

Commit 32c512a

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

File tree

2 files changed

+66
-2
lines changed

2 files changed

+66
-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

+32-2
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,39 @@ 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+
options.windowSize({
29+
width: 1280,
30+
height: 720
31+
});
32+
33+
let driver;
34+
if (process.env.BROWSERSTACK_BUILD_NAME) {
35+
const capabilities = {
36+
'os': 'windows',
37+
'os_version': '10',
38+
'browserName': 'chrome',
39+
'browser_version' : 'latest',
40+
'browserstack.local': 'true',
41+
'build': process.env.BROWSERSTACK_BUILD_NAME,
42+
'project': process.env.BROWSERSTACK_PROJECT_NAME,
43+
'browserstack.localIdentifier': process.env.BROWSERSTACK_LOCAL_IDENTIFIER,
44+
'browserstack.user': process.env.BROWSERSTACK_USERNAME,
45+
'browserstack.key': process.env.BROWSERSTACK_ACCESS_KEY
46+
}
47+
48+
driver = await new Builder()
49+
.usingServer('http://hub-cloud.browserstack.com/wd/hub')
50+
.setChromeOptions(options)
51+
.withCapabilities(capabilities)
52+
.build();
53+
} else {
54+
driver = await new Builder()
55+
.forBrowser("chrome")
56+
.setChromeOptions(options)
57+
.build();
58+
}
2859

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

0 commit comments

Comments
 (0)