Salta al contenuto principale
Versione: Successivo

Test End to End

Testando l'integrità dei componenti di React pubblicando in un registro privato

La fase finale di un componente React è quando viene pubblicato e distribuito. Come posso assicurarmi che i miei pacchetti non crasheranno in produzione? Quest'attività ti aiuterà a testare i tuoi componenti React pubblicandoli in un registro privato ed eseguendo test End-to-End contro di essi.

End to End e Verdaccio

Alcuni progetti organizzano pacchetti in repository multi pacchetti o monorepo. L'argomento dei test end-to-end di solito riguarda principalmente le interfacce utente, ma nel caso di Node.js anche la fase di pubblicazione dei pacchetti deve essere testata.

Tale approccio è stato molto difficile da raggiungere considerando che:

  • Popolare i pacchetti canary sui servizi pubblici sembra non essere una buona idea
  • Alcuni registri auto ospitati OSS sono troppo pesanti
  • Ambienti offline (reti private)

Verdaccio è un registro leggero senza configurazione che si adatta perfettamente a qualsiasi E2E + CI workflow.

Implementazione

Non è ancora disponibile la soluzione perfetta, ogni implementazione sembra essere specifica per ciascun progetto; è possibile consultarne alcune nel thread seguente cliccando qui.

Esempi in Open Source

I seguenti progetti consentono esempi che usano Verdaccio in Open Source

Esempi di Bash

Questo è l'esempio più semplice di utilizzo di Verdaccio, in uno script bash (estratto da 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"

Esempi del Docker

Esempi Programmatici

Modulo di Verdaccio

Tramite CLI:

Esempi di child_process in node.js

Esempi di repository