mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-11-13 03:35:52 +01:00
fe60eab99c
* test: enable e2e * test: improve setup * chore: update setup * test: publish on temp folder * chore: initial setup example * chore: add global install to pnpm * chore: update test script * test: add info command * chore: add install tests * chore: add debug enabled code * chore: update pnpm lock file |
||
---|---|---|
.. | ||
config | ||
projects | ||
setup | ||
test_bk | ||
utils | ||
.babelrc | ||
.eslintrc | ||
env_babel.js | ||
env_setup.js | ||
env_teardown.js | ||
jest.config.e2e.cli.js | ||
LICENSE | ||
package.json | ||
README.md | ||
tsconfig.json |
E2E Testing
What is included on these test?
- Default configuration only
- Basic commands eg (
install / add
,info
,publish
). - Test with 3 package managers (
yarn classic
,pnpm
andnpm@7
)
How it works?
On run test suites, there is a global setup where will install the local source code of verdaccio in a temporary folder. Each suite will install.
spawn
a registry on port6001
using_bootstrap_verdaccio.yaml
which block any local package being fetched from remote upstream.- Publish local project to the spawned registry (with global
pnpm
)
The published
verdaccio
should be fetch by each suite to ensure reliability of each test.
How to write test?
Each of the suite must use a package manager command (eg: npm install
) and validate the output according what the
user see, either verifying the outcome in JSON form, run a command (eg: jest ..
) and the expected result.
Each Test should start with the initial setup, this step does the following
beforeAll
: Install verdaccio to the suite context that returns aSetup
object.afterAll
: Stop the child process that runs verdaccio.
beforeAll(async () => {
setup = await initialSetup(tempRootFolder, port);
console.log('--setup', setup.install);
});
stop the process is the final step that should occur in every suite.
afterAll(async () => {
setup.child.kill();
});
What should not included on these tests?
- Anything is unrelated with client commands usage, eg: (auth permissions, third party integrations, hooks, plugins)