@@ -3,23 +3,24 @@ const envinfo = require('envinfo')
33const { getConfig, getTestRoot } = require ( './utils' )
44const Codecept = require ( '../codecept' )
55const output = require ( '../output' )
6+ const { execSync } = require ( 'child_process' )
67
78async function getInstalledBrowsers ( ) {
89 try {
9- const playwright = require ( 'playwright' )
10- const browsers = await Promise . all (
11- [ 'chromium' , 'firefox' , 'webkit' ] . map ( async browser => {
12- try {
13- const browserInstance = await playwright [ browser ] . launch ( )
14- const version = await browserInstance . version ( )
15- await browserInstance . close ( )
16- return ` ${ browser } : ${ version } `
17- } catch ( err ) {
18- return ` ${ browser } : not installed`
19- }
20- } ) ,
21- )
22- return browsers . join ( `, ` )
10+ const regex = / ( c h r o m i u m | f i r e f o x | w e b k i t ) \s + v e r s i o n \s + ( [ \d . ] + ) / gi
11+ let versions = [ ]
12+
13+ const info = execSync ( 'npx playwright install --dry-run' ) . toString ( ) . trim ( )
14+
15+ const matches = [ ... info . matchAll ( regex ) ]
16+
17+ matches . forEach ( match => {
18+ const browser = match [ 1 ]
19+ const version = match [ 2 ]
20+ versions . push ( ` ${ browser } : ${ version } ` )
21+ } )
22+
23+ return versions . join ( ', ' )
2324 } catch ( err ) {
2425 return 'Playwright not installed'
2526 }
0 commit comments