Pruebas End to End
Algunos projectos organizan paquetes en multi repositorios o mono repositorios. Pruebas E2E es un tema que usualmente es solo relevante para Interfaces de Usuario, pero desde el punto de vista de Node.js, los paquetes que publicamos tambien debe ser probados.
Solution: a local npm registry. https://t.co/kvcyVANVSK
— Dan Abramov (@dan_abramov) 11 de enero de 2018
Tal enfoque ha sido realmente difícil de lograr considerando:
- Populate canary packages on public services seems not to be a good idea
- Some self-hosted OSS registries are too heavy
- Offline environments (private networks)
Verdaccio is a lightweight registry with zero-configuration that fits perfectly in any E2E + CI workflow.
Implementation
There is no a silver bullet yet, each implementation seems to be specific for each project, you can check some of them in the following thread clicking here.
Example using Bash
This is the most simple example using Verdaccio in a bash script (extracted from create-react-app).
#!/bin/sh
set -e
local_registry="http://0.0.0.0:4873"
# start local registry
tmp_registry_log=`mktemp`
sh -c "mkdir -p $HOME/.config/verdaccio"
sh -c "cp --verbose /config.yaml $HOME/.config/verdaccio/config.yaml"
sh -c "nohup verdaccio --config $HOME/.config/verdaccio/config.yaml &>$tmp_registry_log &"
# wait for `verdaccio` to boot
grep -q 'http address' <(tail -f $tmp_registry_log)
# login so we can publish packages
sh -c "npm-auth-to-token -u test -p test -e test@test.com -r $local_registry"
# Run nmp command
sh -c "npm --registry $local_registry publish"
Who is using it for E2E?
- create-react-app (+73.5k ⭐️)
- Storybook (+44k ⭐️)
- Gatsby *(+40k ⭐️)
- Babel.js (+35k ⭐️)
- Uppy (+21k ⭐️)
- Aurelia Framework (+12k ⭐️)
- ethereum/web3.js (+8k ⭐️)
- bit (+6k ⭐️)
- pnpm (+6k ⭐️)
- Mozilla Neutrino (+3k ⭐️)
- Embark (+3k ⭐️)
- Hyperledger Composer (+1.6k ⭐️)
- Wix Yoshi