mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-12-23 22:27:34 -05:00
554020ec70
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
---|---|---|
.. | ||
cli-commons | ||
e2e-npm6 | ||
e2e-npm7 | ||
e2e-npm8 | ||
e2e-npm9 | ||
e2e-pnpm6 | ||
e2e-pnpm7 | ||
e2e-yarn1 | ||
e2e-yarn2 | ||
e2e-yarn3 | ||
e2e-yarn4 | ||
jest.config.js | ||
README.md |
E2E CLI Testing
What is included on these test?
- Default configuration only
- Test with all popular package managers:
yarn classic
andyarn modern (2, 3, 4 RC)
pnpm 6, 7
npm 6, 7, 8 and 9
Commands Tested
cmd | npm6 | npm7 | npm8 | npm9 | pnpm6 | pnpm7 | yarn1 | yarn2 | yarn3 | yarn4 |
---|---|---|---|---|---|---|---|---|---|---|
publish | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
info | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
audit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
install | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
deprecate | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
ping | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
search | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
star | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔ | ⛔ | ⛔ | ⛔ |
dist-tag | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
notes:
- yarn search cmd exist in modern but, it do not uses the search registry endpoint.
- yarn modern has two info commands, the one used here is
yarn npm info
❌ = no tested ✅ = tested ⛔ = no supported
How it works?
Every package manager + version is a package in the monorepo.
The package @verdaccio/test-cli-commons
contains helpers used for each package manager.
import { addRegistry, initialSetup, prepareGenericEmptyProject } from '@verdaccio/test-cli-commons';
The registry can be executed with the following commands, the port is automatically assigned.
// setup
const setup = await initialSetup();
registry = setup.registry;
await registry.init();
// teardown
registry.stop();
The full url can be get from registry.getRegistryUrl()
. The yarn modern does not allows the --registry
so need a more complex step, while others is just enough adding the following to every command.
await yarn({ cwd: tempFolder }, 'install', ...addRegistry(registry.getRegistryUrl()));
The most of the command allow return output in JSON format which helps with the expects.
const resp = await yarn(
{ cwd: tempFolder },
'audit',
'--json',
...addRegistry(registry.getRegistryUrl())
);
const parsedBody = JSON.parse(resp.stdout as string);
expect(parsedBody.type).toEqual('auditSummary');
Every command should test either console output or in special cases look up the storage manually.
What should not included on these tests?
- Anything is unrelated with client commands usage, eg: (auth permissions, third party integrations, hooks, plugins)