add --list and npm run list

This commit is contained in:
robby 2025-01-12 13:48:57 +00:00
parent 6179b5b1d7
commit 27b5ad546d
2 changed files with 229 additions and 195 deletions

View file

@ -45,7 +45,8 @@
"roll": "node utils/roll_browser.js", "roll": "node utils/roll_browser.js",
"check-deps": "node utils/check_deps.js", "check-deps": "node utils/check_deps.js",
"build-android-driver": "./utils/build_android_driver.sh", "build-android-driver": "./utils/build_android_driver.sh",
"innerloop": "playwright run-server --reuse-browser" "innerloop": "playwright run-server --reuse-browser",
"list": "playwright install --list"
}, },
"workspaces": [ "workspaces": [
"packages/*" "packages/*"

View file

@ -232,6 +232,39 @@ Examples:
- $ install-deps chrome firefox - $ install-deps chrome firefox
Install dependencies for specific browsers, supports ${suggestedBrowsersToInstall()}.`); Install dependencies for specific browsers, supports ${suggestedBrowsersToInstall()}.`);
program
.command('show-browsers') // Changed from 'install --list' to avoid conflicts
.alias('list-browsers') // Added alias for convenience
.description('lists installed browsers and their paths')
.action(async function () {
try {
const browsers = new Set();
// Filter once instead of twice
const installableBrowsers = registry.executables().filter(e =>
e.installType !== 'none' &&
e.type !== 'tool'
);
if (installableBrowsers.length === 0) {
console.log('No browsers installed. To install them use: npx playwright install');
return;
}
for (const executable of installableBrowsers) {
try {
const version = executable.browserVersion ? `v${executable.browserVersion}` : '';
const location = executable.directory || '<system>';
console.log(`${executable.name} ${version ? version + ' ' : ''}${location ? `(${location})` : ''}`);
browsers.add(executable.name);
} catch (e) {
console.error(`Failed to get info for browser ${executable.name}:`, e);
}
}
} catch (e) {
logErrorAndExit(e);
}
});
const browsers = [ const browsers = [
{ alias: 'cr', name: 'Chromium', type: 'chromium' }, { alias: 'cr', name: 'Chromium', type: 'chromium' },
{ alias: 'ff', name: 'Firefox', type: 'firefox' }, { alias: 'ff', name: 'Firefox', type: 'firefox' },