diff --git a/lib/command/info.js b/lib/command/info.js index e0abe2433..05dff5bf9 100644 --- a/lib/command/info.js +++ b/lib/command/info.js @@ -3,6 +3,42 @@ const envinfo = require('envinfo') const { getConfig, getTestRoot } = require('./utils') const Codecept = require('../codecept') const output = require('../output') +const { execSync } = require('child_process') + +async function getPlaywrightBrowsers() { + try { + const regex = /(chromium|firefox|webkit)\s+version\s+([\d.]+)/gi + let versions = [] + + const info = execSync('npx playwright install --dry-run').toString().trim() + + const matches = [...info.matchAll(regex)] + + matches.forEach(match => { + const browser = match[1] + const version = match[2] + versions.push(`${browser}: ${version}`) + }) + + return versions.join(', ') + } catch (err) { + return 'Playwright not installed' + } +} + +async function getOsBrowsers() { + const chromeInfo = await envinfo.helpers.getChromeInfo() + const edgeInfo = await envinfo.helpers.getEdgeInfo() + const firefoxInfo = await envinfo.helpers.getFirefoxInfo() + const safariInfo = await envinfo.helpers.getSafariInfo() + + return [ + `chrome: ${chromeInfo ? chromeInfo[1] : 'not installed'}`, + `edge: ${edgeInfo ? edgeInfo[1] : 'not installed'}`, + `firefox: ${firefoxInfo ? firefoxInfo[1] : 'not installed'}`, + `safari: ${safariInfo ? safariInfo[1] : 'not installed'}`, + ].join(', ') +} module.exports = async function (path) { const testsPath = getTestRoot(path) @@ -10,16 +46,15 @@ module.exports = async function (path) { const codecept = new Codecept(config, {}) codecept.init(testsPath) - output.print('\n Environment information:-\n') + output.print('\n Environment information: \n') const info = {} info.codeceptVersion = Codecept.version() info.nodeInfo = await envinfo.helpers.getNodeInfo() info.osInfo = await envinfo.helpers.getOSInfo() info.cpuInfo = await envinfo.helpers.getCPUInfo() - info.chromeInfo = await envinfo.helpers.getChromeInfo() - info.edgeInfo = await envinfo.helpers.getEdgeInfo() - info.firefoxInfo = await envinfo.helpers.getFirefoxInfo() - info.safariInfo = await envinfo.helpers.getSafariInfo() + info.osBrowsers = await getOsBrowsers() + info.playwrightBrowsers = await getPlaywrightBrowsers() + const { helpers, plugins } = config info.helpers = helpers || "You don't use any helpers" info.plugins = plugins || "You don't have any enabled plugins" @@ -47,6 +82,7 @@ module.exports.getMachineInfo = async () => { edgeInfo: await envinfo.helpers.getEdgeInfo(), firefoxInfo: await envinfo.helpers.getFirefoxInfo(), safariInfo: await envinfo.helpers.getSafariInfo(), + playwrightBrowsers: await getPlaywrightBrowsers(), } output.print('***************************************')