-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
104 lines (90 loc) · 3.42 KB
/
Copy pathtest.js
File metadata and controls
104 lines (90 loc) · 3.42 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
const { chromium, webkit } = require('playwright');
const cp = require('child_process');
const clientPlaywrightVersion = cp.execSync('npx playwright --version').toString().trim().split(' ')[1];
console.log(`Local Playwright version: ${clientPlaywrightVersion}`);
const TARGET_OS = 'windows'; // 'mac' or 'windows'
const BROWSER_TYPE = 'webkit'; // 'chromium' or 'webkit'
let caps;
if (TARGET_OS === 'windows') {
caps = {
os: 'Windows',
osVersion: '10',
name: 'Test on Windows',
build: 'Sample Build',
project: 'BrowserStack Playwright Sample',
'browserstack.username': process.env.BROWSERSTACK_USERNAME,
'browserstack.accessKey': process.env.BROWSERSTACK_ACCESS_KEY,
'browserstack.networkLogs': 'true',
'browserstack.debug': 'true',
'browserstack.playwrightVersion': '1.50.1',
'browserstack.console': 'verbose',
'browserstack.local': 'false',
'browserstack.performance': 'assert',
'client.playwrightVersion': clientPlaywrightVersion
};
} else if (TARGET_OS === 'mac') {
caps = {
os: 'osx',
osVersion: 'Sonoma',
name: 'Test on macOS',
build: 'Sample Build',
project: 'BrowserStack Playwright Sample',
'browserstack.username': process.env.BROWSERSTACK_USERNAME,
'browserstack.accessKey': process.env.BROWSERSTACK_ACCESS_KEY,
'browserstack.networkLogs': 'true',
'browserstack.debug': 'true',
'browserstack.playwrightVersion': '1.50.1',
'browserstack.console': 'verbose',
'browserstack.local': 'false',
'browserstack.performance': 'assert',
'client.playwrightVersion': clientPlaywrightVersion
};
}
(async () => {
let browser;
if (BROWSER_TYPE === 'chromium') {
browser = await chromium.connect({
wsEndpoint: `wss://cdp-aps.browserstack.com/playwright?caps=${encodeURIComponent(JSON.stringify(caps))}`,
});
} else if (BROWSER_TYPE === 'webkit') {
browser = await webkit.connect({
wsEndpoint: `wss://cdp-aps.browserstack.com/playwright?caps=${encodeURIComponent(JSON.stringify(caps))}`,
});
} else {
console.error("Invalid browser type specified. Use 'chromium' or 'webkit'.");
process.exit(1);
}
const context = await browser.newContext();
const page = await context.newPage({
ignoreHTTPSErrors: true,
viewport: null,
});
page.on('console', (message) => {
console.log(`Console Message: ${message.text()}`);
});
await page.goto('https://www.google.com');
const title = await page.title();
console.log(`Page title: ${title}`);
const resp = await JSON.parse(await page.evaluate(_ => { }, `browserstack_executor: ${JSON.stringify({ action: 'getSessionDetails' })}`));
console.log(`Session Details:\n`, resp);
await page.evaluate(() => {
console.warn('This is a warning message from browser console');
console.log('This is a log message from browser console');
});
await page.screenshot({ path: `screenshot-${TARGET_OS}-${BROWSER_TYPE}.png` });
try {
await page.evaluate(_ => { }, `browserstack_executor: ${JSON.stringify({
action: 'setSessionStatus',
arguments: { status: 'passed', reason: 'Page title fetched successfully' }
})}`);
} catch {
await page.evaluate(_ => { }, `browserstack_executor: ${JSON.stringify({
action: 'setSessionStatus',
arguments: { status: 'failed', reason: 'Error fetching title' }
})}`);
}
await context.close({ reason: "test ended" });
await page.close();
await browser.close();
})();
// trigger