forked from sourav-kundu/playwright-browserstack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parallel_test.js
79 lines (75 loc) · 2.9 KB
/
parallel_test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const expect = require('chai').expect
const { chromium } = require('playwright');
const packageJson = require('./package.json');
const clientPlaywrightVersion = packageJson['devDependencies']['playwright'].substring(1);
const main = async (cap) => {
cap['client.playwrightVersion'] = clientPlaywrightVersion; // Playwright version being used on your local project needs to be passed in this capability for BrowserStack to be able to map request and responses correctly
console.log("Starting test -->", cap['name']);
const browser = await chromium.connect({
wsEndpoint: `wss://YOUR_USERNAME:[email protected]/playwright?caps=${encodeURIComponent(JSON.stringify(cap))}`,
});
const page = await browser.newPage();
await page.goto('https://www.google.com/ncr');
const element = await page.$('[aria-label="Search"]');
await element.click();
await element.type('BrowserStack');
await element.press('Enter');
const title = await page.title('');
console.log(title);
try {
expect(title).to.equal("BrowserStack - Google Search", 'Expected page title is incorrect!');
// following line of code is responsible for marking the status of the test on BrowserStack as 'passed'. You can use this code in your after hook after each test
await page.evaluate(_ => {}, `browserstack_executor: ${JSON.stringify({action: 'setSessionStatus',arguments: {status: 'passed',reason: 'Title matched'}})}`);
} catch {
await page.evaluate(_ => {}, `browserstack_executor: ${JSON.stringify({action: 'setSessionStatus',arguments: {status: 'failed',reason: 'Title did not match'}})}`);
}
await browser.close();
};
// The following capabilities array contains the list of os/browser environments where you want to run your tests. You can choose to alter this list according to your needs
const capabilities = [
{
'browser': 'chrome',
'os': 'osx',
'os_version': 'catalina',
'name': 'Chrome on Catalina',
'build': 'playwright-build-2'
},
{
'browser': 'firefox',
'os': 'osx',
'os_version': 'catalina',
'name': 'Firefox on Catalina',
'build': 'playwright-build-2'
},
{
'browser': 'safari',
'os': 'osx',
'os_version': 'catalina',
'name': 'Safari on Catalina',
'build': 'playwright-build-2'
},
{
'browser': 'chrome',
'os': 'Windows',
'os_version': '10',
'name': 'Chrome on Win10',
'build': 'playwright-build-2'
},
{
'browser': 'firefox',
'os': 'Windows',
'os_version': '10',
'name': 'Firefox on Win10',
'build': 'playwright-build-2'
},
{
'browser': 'safari',
'os': 'Windows',
'os_version': '10',
'name': 'Safari on Win10',
'build': 'playwright-build-2'
}]
// The following code loops through the capabilities array defined above and runs your code against each environment that you have specified
capabilities.forEach(async (cap) => {
await main(cap);
});