mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-12 11:50:22 +03:00
chore: update error message when using wrong cli (#23512)
Now recommends uninstalling other packages. Fixes #23314. Example messages: ``` Please install @playwright/test package before running "npx playwright show-report" npm uninstall playwright playwright-firefox npm install -D @playwright/test ``` ``` Please install @playwright/test package before running "yarn playwright show-report" yarn remove playwright playwright-chromium playwright-firefox playwright-webkit yarn add -D @playwright/test ``` ``` Please install @playwright/test package before running "pnpm exec playwright show-report" pnpm remove playwright pnpm add -D @playwright/test ```
This commit is contained in:
parent
80fe9748eb
commit
b518d1f6da
@ -18,14 +18,41 @@
|
|||||||
|
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
|
import { getPackageManager } from '../utils';
|
||||||
import program from './program';
|
import program from './program';
|
||||||
|
|
||||||
|
function printPlaywrightTestError(command: string) {
|
||||||
|
const packages: string[] = [];
|
||||||
|
for (const pkg of ['playwright', 'playwright-chromium', 'playwright-firefox', 'playwright-webkit']) {
|
||||||
|
try {
|
||||||
|
require.resolve(pkg);
|
||||||
|
packages.push(pkg);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!packages.length)
|
||||||
|
packages.push('playwright');
|
||||||
|
const packageManager = getPackageManager();
|
||||||
|
if (packageManager === 'yarn') {
|
||||||
|
console.error(`Please install @playwright/test package before running "yarn playwright ${command}"`);
|
||||||
|
console.error(` yarn remove ${packages.join(' ')}`);
|
||||||
|
console.error(' yarn add -D @playwright/test');
|
||||||
|
} else if (packageManager === 'pnpm') {
|
||||||
|
console.error(`Please install @playwright/test package before running "pnpm exec playwright ${command}"`);
|
||||||
|
console.error(` pnpm remove ${packages.join(' ')}`);
|
||||||
|
console.error(' pnpm add -D @playwright/test');
|
||||||
|
} else {
|
||||||
|
console.error(`Please install @playwright/test package before running "npx playwright ${command}"`);
|
||||||
|
console.error(` npm uninstall ${packages.join(' ')}`);
|
||||||
|
console.error(' npm install -D @playwright/test');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const command = program.command('test').allowUnknownOption(true);
|
const command = program.command('test').allowUnknownOption(true);
|
||||||
command.description('Run tests with Playwright Test. Available in @playwright/test package.');
|
command.description('Run tests with Playwright Test. Available in @playwright/test package.');
|
||||||
command.action(async () => {
|
command.action(async () => {
|
||||||
console.error('Please install @playwright/test package to use Playwright Test.');
|
printPlaywrightTestError('test');
|
||||||
console.error(' npm install -D @playwright/test');
|
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -34,18 +61,7 @@ import program from './program';
|
|||||||
const command = program.command('show-report').allowUnknownOption(true);
|
const command = program.command('show-report').allowUnknownOption(true);
|
||||||
command.description('Show Playwright Test HTML report. Available in @playwright/test package.');
|
command.description('Show Playwright Test HTML report. Available in @playwright/test package.');
|
||||||
command.action(async () => {
|
command.action(async () => {
|
||||||
console.error('Please install @playwright/test package to use Playwright Test.');
|
printPlaywrightTestError('show-report');
|
||||||
console.error(' npm install -D @playwright/test');
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
const command = program.command('show-trace').allowUnknownOption(true);
|
|
||||||
command.description('Show Playwright Trace. Available in @playwright/test package.');
|
|
||||||
command.action(async () => {
|
|
||||||
console.error('Please install @playwright/test package to use Playwright Test.');
|
|
||||||
console.error(' npm install -D @playwright/test');
|
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -617,7 +617,6 @@ export class Registry {
|
|||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
const location = prefixes.length ? ` at ${path.join(prefixes[0], suffix)}` : ``;
|
const location = prefixes.length ? ` at ${path.join(prefixes[0], suffix)}` : ``;
|
||||||
// TODO: language-specific error message
|
|
||||||
const installation = install ? `\nRun "${buildPlaywrightCLICommand(sdkLanguage, 'install ' + name)}"` : '';
|
const installation = install ? `\nRun "${buildPlaywrightCLICommand(sdkLanguage, 'install ' + name)}"` : '';
|
||||||
throw new Error(`Chromium distribution '${name}' is not found${location}${installation}`);
|
throw new Error(`Chromium distribution '${name}' is not found${location}${installation}`);
|
||||||
};
|
};
|
||||||
|
@ -25,3 +25,12 @@ export function getAsBooleanFromENV(name: string): boolean {
|
|||||||
const value = getFromENV(name);
|
const value = getFromENV(name);
|
||||||
return !!value && value !== 'false' && value !== '0';
|
return !!value && value !== 'false' && value !== '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getPackageManager() {
|
||||||
|
const env = process.env.npm_config_user_agent || '';
|
||||||
|
if (env.includes('yarn'))
|
||||||
|
return 'yarn';
|
||||||
|
if (env.includes('pnpm'))
|
||||||
|
return 'pnpm';
|
||||||
|
return 'npm';
|
||||||
|
}
|
||||||
|
@ -45,6 +45,6 @@ for (const cdn of CDNS) {
|
|||||||
if (nodeMajorVersion >= 14)
|
if (nodeMajorVersion >= 14)
|
||||||
await exec('node esm-playwright.mjs');
|
await exec('node esm-playwright.mjs');
|
||||||
const stdio = await exec('npx playwright', 'test', '-c', '.', { expectToExitWithError: true });
|
const stdio = await exec('npx playwright', 'test', '-c', '.', { expectToExitWithError: true });
|
||||||
expect(stdio).toContain(`Please install @playwright/test package to use Playwright Test.`);
|
expect(stdio).toContain(`Please install @playwright/test package`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -23,5 +23,5 @@ test(`playwright should work`, async ({ exec, nodeMajorVersion, installedSoftwar
|
|||||||
if (nodeMajorVersion >= 14)
|
if (nodeMajorVersion >= 14)
|
||||||
await exec('node esm-playwright.mjs');
|
await exec('node esm-playwright.mjs');
|
||||||
const stdio = await exec('npx playwright', 'test', '-c', '.', { expectToExitWithError: true });
|
const stdio = await exec('npx playwright', 'test', '-c', '.', { expectToExitWithError: true });
|
||||||
expect(stdio).toContain(`Please install @playwright/test package to use Playwright Test.`);
|
expect(stdio).toContain(`Please install @playwright/test package`);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user