Skip to content

run e2e tests for 5.x and 6.x branches

Notifications You must be signed in to change notification settings

verdaccio/e2e-tests

Repository files navigation

E2E CLI Testing for main=7.x Branch

For 6.x versions, check 6.x branch For 7.x versions, check main branch

More info about versions

What is included on these test?

With Cypress

  • Test the UI fo latest master branch docker image

With docker (docker compose)

It uses the image verdaccio/verdaccio:nightly-master, latest 6.x branch changes

  • nginx proxy
  • apache proxy
  • using plugins

All docker test are run with GitHub Actions

With npm cli

It uses the latest npmjs version published

  • Default configuration only
  • Test with all popular package managers

What commands and versions are tested?

See all details here

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)