1+ const base = require ( '@playwright/test' ) ;
2+ const cp = require ( 'child_process' ) ;
3+ const clientPlaywrightVersion = cp
4+ . execSync ( 'npx playwright --version' )
5+ . toString ( )
6+ . trim ( )
7+ . split ( ' ' ) [ 1 ] ;
8+ const BrowserStackLocal = require ( 'browserstack-local' ) ;
9+ const util = require ( 'util' ) ;
10+
11+ // BrowserStack Specific Capabilities.
12+ // Set 'browserstack.local:true For Local testing
13+ const caps = {
14+ browser : 'chrome' ,
15+ os : 'osx' ,
16+ os_version : 'catalina' ,
17+ name : 'My first playwright test' ,
18+ build : 'playwright-build-1' ,
19+ 'browserstack.username' : process . env . BROWSERSTACK_USERNAME || 'username' ,
20+ 'browserstack.accessKey' : process . env . BROWSERSTACK_ACCESS_KEY || 'accesskey' ,
21+ 'browserstack.local' : process . env . BROWSERSTACK_LOCAL || false ,
22+ 'client.playwrightVersion' : clientPlaywrightVersion ,
23+ } ;
24+
25+ exports . bsLocal = new BrowserStackLocal . Local ( ) ;
26+
27+ // replace YOUR_ACCESS_KEY with your key. You can also set an environment variable - "BROWSERSTACK_ACCESS_KEY".
28+ exports . BS_LOCAL_ARGS = {
29+ key : process . env . BROWSERSTACK_ACCESS_KEY || 'accesskey' ,
30+ } ;
31+
32+ // Patching the capabilities dynamically according to the project name.
33+ const patchCaps = ( name , title ) => {
34+ let combination = name . split ( / @ b r o w s e r s t a c k / ) [ 0 ] ;
35+ let [ browerCaps , osCaps ] = combination . split ( / : / ) ;
36+ let [ browser , browser_version ] = browerCaps . split ( / @ / ) ;
37+ let osCapsSplit = osCaps . split ( / / ) ;
38+ let os = osCapsSplit . shift ( ) ;
39+ let os_version = osCapsSplit . join ( ' ' ) ;
40+ caps . browser = browser ? browser : 'chrome' ;
41+ caps . browser_version = browser_version ? browser_version : 'latest' ;
42+ caps . os = os ? os : 'osx' ;
43+ caps . os_version = os_version ? os_version : 'catalina' ;
44+ caps . name = title ;
45+ } ;
46+
47+ exports . getCdpEndpoint = ( name , title ) => {
48+ patchCaps ( name , title )
49+ const cdpUrl = `wss://cdp.browserstack.com/playwright?caps=${ encodeURIComponent ( JSON . stringify ( caps ) ) } `
50+ console . log ( `--> ${ cdpUrl } ` )
51+ return cdpUrl ;
52+ }
0 commit comments