@@ -3,23 +3,58 @@ const envinfo = require('envinfo')
3
3
const { getConfig, getTestRoot } = require ( './utils' )
4
4
const Codecept = require ( '../codecept' )
5
5
const output = require ( '../output' )
6
+ const { execSync } = require ( 'child_process' )
7
+
8
+ async function getPlaywrightBrowsers ( ) {
9
+ try {
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 ( ', ' )
24
+ } catch ( err ) {
25
+ return 'Playwright not installed'
26
+ }
27
+ }
28
+
29
+ async function getOsBrowsers ( ) {
30
+ const chromeInfo = await envinfo . helpers . getChromeInfo ( )
31
+ const edgeInfo = await envinfo . helpers . getEdgeInfo ( )
32
+ const firefoxInfo = await envinfo . helpers . getFirefoxInfo ( )
33
+ const safariInfo = await envinfo . helpers . getSafariInfo ( )
34
+
35
+ return [
36
+ `chrome: ${ chromeInfo ? chromeInfo [ 1 ] : 'not installed' } ` ,
37
+ `edge: ${ edgeInfo ? edgeInfo [ 1 ] : 'not installed' } ` ,
38
+ `firefox: ${ firefoxInfo ? firefoxInfo [ 1 ] : 'not installed' } ` ,
39
+ `safari: ${ safariInfo ? safariInfo [ 1 ] : 'not installed' } ` ,
40
+ ] . join ( ', ' )
41
+ }
6
42
7
43
module . exports = async function ( path ) {
8
44
const testsPath = getTestRoot ( path )
9
45
const config = getConfig ( testsPath )
10
46
const codecept = new Codecept ( config , { } )
11
47
codecept . init ( testsPath )
12
48
13
- output . print ( '\n Environment information:- \n' )
49
+ output . print ( '\n Environment information: \n' )
14
50
const info = { }
15
51
info . codeceptVersion = Codecept . version ( )
16
52
info . nodeInfo = await envinfo . helpers . getNodeInfo ( )
17
53
info . osInfo = await envinfo . helpers . getOSInfo ( )
18
54
info . cpuInfo = await envinfo . helpers . getCPUInfo ( )
19
- info . chromeInfo = await envinfo . helpers . getChromeInfo ( )
20
- info . edgeInfo = await envinfo . helpers . getEdgeInfo ( )
21
- info . firefoxInfo = await envinfo . helpers . getFirefoxInfo ( )
22
- info . safariInfo = await envinfo . helpers . getSafariInfo ( )
55
+ info . osBrowsers = await getOsBrowsers ( )
56
+ info . playwrightBrowsers = await getPlaywrightBrowsers ( )
57
+
23
58
const { helpers, plugins } = config
24
59
info . helpers = helpers || "You don't use any helpers"
25
60
info . plugins = plugins || "You don't have any enabled plugins"
@@ -47,6 +82,7 @@ module.exports.getMachineInfo = async () => {
47
82
edgeInfo : await envinfo . helpers . getEdgeInfo ( ) ,
48
83
firefoxInfo : await envinfo . helpers . getFirefoxInfo ( ) ,
49
84
safariInfo : await envinfo . helpers . getSafariInfo ( ) ,
85
+ playwrightBrowsers : await getPlaywrightBrowsers ( ) ,
50
86
}
51
87
52
88
output . print ( '***************************************' )
0 commit comments