Utilizzare il bot Lighthouse per impostare un budget delle prestazioni

Milica Mihajlija
Milica Mihajlija

Hai lavorato duramente per ottenere velocità, ora assicurati di mantenerla automatizzando i test delle prestazioni con Lighthouse Bot.

Lighthouse valuta la tua app in 5 categorie e una di queste è il rendimento. Anche se potresti provare a ricordarti di monitorare le modifiche al rendimento con DevTools o Lighthouse CLI ogni volta che modifichi il codice, non è necessario. Gli strumenti possono fare il lavoro noioso per te. Travis CI è un ottimo servizio che esegue automaticamente i test per la tua app nel cloud ogni volta che esegui il push di un nuovo codice.

Lighthouse Bot si integra con Travis CI e la sua funzionalità di budget per il rendimento garantisce che non si verifichi un downgrade accidentale del rendimento senza che tu te ne accorga. Puoi configurare il repository in modo che non consenta l'unione delle richieste pull se i punteggi di Lighthouse scendono al di sotto della soglia che hai impostato (ad es. < 96/100).

Errori nei controlli del bot Lighthouse su GitHub
Controlli del bot Lighthouse su GitHub.

Sebbene tu possa testare le prestazioni su localhost, spesso il tuo sito si comporta in modo diverso sui server live. Per ottenere un quadro più realistico, è consigliabile eseguire il deployment del sito su un server di staging. Puoi utilizzare qualsiasi servizio di hosting. Questa guida ti mostrerà come utilizzare Firebase Hosting.

1. Configurazione

Questa semplice app ti aiuta a ordinare tre numeri.

Clona l'esempio da GitHub e assicurati di aggiungerlo come repository nel tuo account GitHub.

2. Esegui il deployment in Firebase

Per iniziare, devi avere un account Firebase. Una volta fatto, crea un nuovo progetto nella console Firebase facendo clic su "Aggiungi progetto":

Deployment in Firebase

Per eseguire il deployment dell'app, devi utilizzare l'interfaccia a riga di comando di Firebase. Anche se l'hai già installata, è buona norma aggiornare spesso l'interfaccia a riga di comando all'ultima versione con questo comando:

npm install -g firebase-tools

Per autorizzare l'interfaccia a riga di comando di Firebase, esegui:

firebase login

Ora inizializza il progetto:

firebase init

Durante la configurazione, la console ti porrà una serie di domande:

  • Quando ti viene chiesto di selezionare le funzionalità, scegli "Hosting".
  • Per il progetto Firebase predefinito, seleziona il progetto che hai creato nella console Firebase.
  • Digita "public" come directory pubblica.
  • Digita "N" (no) per configurare l'app come app monopagina.

Questo processo crea un file di configurazione firebase.json nella radice della directory del progetto.

Congratulazioni, ora puoi eseguire il deployment. Esegui:

firebase deploy

In un attimo avrai un'app live.

3. Configurazione di Travis

Dovrai registrare un account su Travis e poi attivare l'integrazione delle app GitHub nella sezione Impostazioni del tuo profilo.

Integrazione di GitHub Apps su Travis CI

Una volta creato un account

Vai a Impostazioni nel tuo profilo, premi il pulsante Sincronizza account e assicurati che il repository del progetto sia elencato su Travis.

Per iniziare l'integrazione continua, ti servono due cose:

  1. Avere un file .travis.yml nella directory principale
  2. Per attivare una build eseguendo un normale comando git push

Il repository lighthouse-bot-starter ha già un file YAML .travis.yml:

language: node_js
node_js:
  - "8.1.3"
install:
  - npm install
before_script:
  - npm install -g firebase-tools
script:
  - webpack

Il file YAML indica a Travis di installare tutte le dipendenze e creare l'app. Ora tocca a te eseguire il push dell'app di esempio nel tuo repository GitHub. Se non l'hai ancora fatto, esegui il seguente comando:

git push origin main

Fai clic sul tuo repository in Impostazioni in Travis per visualizzare la dashboard di Travis del tuo progetto. Se tutto va bene, vedrai la build passare da gialla a verde in un paio di minuti. 🎉

4. Automatizzare il deployment di Firebase con Travis

Nel passaggio 2, hai eseguito l'accesso al tuo account Firebase e hai eseguito il deployment dell'app dalla riga di comando con firebase deploy. Affinché Travis possa eseguire il deployment dell'app su Firebase, devi autorizzarlo. E come potete farlo? Con un token Firebase. 🗝️🔥

Autorizzare Firebase

Per generare il token, esegui questo comando:

firebase login:ci

Si aprirà una nuova scheda in una finestra del browser in modo che Firebase possa verificare la tua identità. Dopodiché, torna alla console e vedrai il token appena creato. Copialo e torna a Travis.

Nella dashboard di Travis del tuo progetto, vai a Altre opzioni > Impostazioni > Variabili di ambiente.

Incolla il token nel campo del valore, assegna alla variabile il nome FIREBASE_TOKEN e aggiungila.

Aggiungi il deployment alla configurazione di Travis

Devi inserire le seguenti righe per indicare a Travis di eseguire il deployment dell'app dopo ogni build riuscita. Aggiungili alla fine del file .travis.yml. 🔚

after_success:
  - firebase deploy --token $FIREBASE_TOKEN --non-interactive

Esegui il push di questa modifica su GitHub e attendi il primo deployment automatico. Se dai un'occhiata al log di Travis, dovrebbe presto apparire il messaggio ✔️ Deploy complete! (Deployment completato).

Ora, ogni volta che apporti modifiche alla tua app, queste verranno automaticamente implementate in Firebase.

5. Configurazione di Lighthouse Bot

Il bot amichevole di Lighthouse ti aggiorna sui punteggi Lighthouse della tua app. Ha solo bisogno di un invito al tuo repository.

Su GitHub, vai alle impostazioni del progetto e aggiungi "lighthousebot" come collaboratore (Impostazioni > Collaboratori):

Stato collaboratore del bot Lighthouse

L'approvazione di queste richieste è un processo manuale, quindi non sempre avviene istantaneamente. Prima di iniziare i test, assicurati che lighthousebot abbia approvato il suo stato di collaboratore. Nel frattempo, devi anche aggiungere un'altra chiave alle variabili di ambiente del tuo progetto su Travis. Lascia qui la tua email e riceverai una chiave del bot Lighthouse nella posta in arrivo. 📬

Su Travis, aggiungi questa chiave come variabile di ambiente e chiamala LIGHTHOUSE_API_KEY:

Aggiungere Lighthouse Bot al progetto

Poi, aggiungi Lighthouse Bot al tuo progetto eseguendo:

npm i --save-dev https://github.com/ebidel/lighthousebot

e aggiungi questo bit a package.json:

"scripts": {
  "lh": "lighthousebot"
}

Aggiungere il bot Lighthouse alla configurazione di Travis

Come ultimo trucco, testa le prestazioni dell'app dopo ogni richiesta di pull.

In .travis.yml aggiungi un altro passaggio in after_success:

after_success:
  - firebase deploy --token $FIREBASE_TOKEN --non-interactive
  - npm run lh -- https://staging.example.com

Verrà eseguito un controllo Lighthouse sull'URL specificato, quindi sostituisci https://staging.example.com con l'URL della tua app (your-app-123.firebaseapp.com).

Imposta standard elevati e modifica la configurazione in modo da non accettare modifiche all'app che portino il punteggio di rendimento al di sotto di 95:

- npm run lh -- --perf=95 https://staging.example.com

Crea una richiesta di pull per attivare il test di Lighthouse Bot su Travis

Lighthouse Bot testerà solo le richieste di pull, quindi se esegui il push sul branch principale ora, nel log di Travis verrà visualizzato solo il messaggio "This script can only be run on Travis PR requests".

Per attivare il test del bot Lighthouse:

  1. Checkout di un nuovo branch
  2. Esegui il push su GitHub
  3. Inviare una richiesta di pull

Rimani in attesa nella pagina della richiesta di pull e attendi che Lighthouse Bot canti! 🎤

Punteggi Lighthouse superati

Superare i controlli GitHub

Il punteggio di rendimento è ottimo, l'app rispetta il budget e il controllo è stato superato.

Altre opzioni di Lighthouse

Ricordi che Lighthouse testa 5 categorie diverse? Puoi applicare i punteggi per qualsiasi di quelli con i flag del bot Lighthouse:

--perf  # performance
--pwa   # progressive web app score
--a11y  # accessibility score
--bp    # best practices score
--seo   # SEO score

Esempio:

npm run lh -- --perf=93 --seo=100 https://staging.example.com

La richiesta pull non verrà approvata se il punteggio di rendimento scende al di sotto di 93 o il punteggio SEO scende al di sotto di 100.

Puoi anche scegliere di non ricevere i commenti del bot Lighthouse con l'opzione --no-comment.